R Markovchain package - 基于状态序列矩阵拟合马尔可夫链

标签 r matrix chain markov

我试图使用 R markovchain 包。

我有一个关于 markovchainFit 函数和序列矩阵的问题。

默认情况下,markovchainFit 函数以状态序列作为参数运行。
然后在文档中说这个函数将该序列更改为序列矩阵,可以使用 createSequenceMatrix 函数检索该矩阵。

我的问题是 - markovchainFit 能否以某种方式以序列矩阵作为参数运行(或至少以多个数据序列的 vecotr 运行)?

我问是因为在我的模型中我有多个吸收状态。
这意味着示例序列可能很短,因为它将以吸收状态结束。
我的数据集中有多个序列,我能够基于它们创建一个序列矩阵。
尽管如此,我没有一个长序列可以用作 markovchainFit 的参数(因为每个序列在几个状态后都会被吸收)。

我的问题中的术语基于以下文档:
CRAN 简介 markovchain包裹

在那篇文章的天气示例中,介绍了一个简单的场景。
有 3 个状态(晴天、阴天、下雨),转换矩阵在输入中给出:

       sunny cloudy rain
sunny  0.7   0.20   0.10
cloudy 0.3   0.40   0.30
rain   0.2   0.45   0.35

基于该矩阵构建一个马尔可夫链对象:
R> weatherMatrix <- matrix(data = c(0.70, 0.2, 0.1,
+                                   0.3, 0.4, 0.3,
+                                   0.2, 0.45, 0.35), byrow = byRow, nrow = 3,
+ dimnames = list(weatherStates, weatherStates))
R> mcWeather <- new("markovchain", states = weatherStates, byrow = byRow,
+ transitionMatrix = weatherMatrix, name = "Weather")

然后从马尔可夫链生成一系列数据 - 以演示如何从该样本拟合模型:
R> weathersOfDays <- rmarkovchain(n = 365, object = mcWeather, t0 = "sunny")

然后根据数据拟合一个新的马尔可夫链:
R> weatherFittedLAPLACE <- markovchainFit(data = weathersOfDays,
+                                    method = "laplace", laplacian = 0.01,
+                                    name = "Weather LAPLACE")
R> weatherFittedLAPLACE$estimate

下面给出估计的结果,以显示数据如何接近原始转移矩阵:
       cloudy    rain       sunny
cloudy 0.3944786 0.32110428 0.2844171
rain   0.4050361 0.37972922 0.2152347
sunny  0.1932057 0.07958871 0.7272056

据说拟合是基于'序列矩阵',可以检索如下:
R> createSequenceMatrix(stringchar = weathersOfDays)

       cloudy rain sunny
cloudy 43     35   31
rain   32     30   17
sunny  34     14   128

我的问题是我有多个序列形式的数据,因为有很多吸收状态并且链相对较短。

我想为它们提供数据并安装模型,但是该包允许提供单个数据序列。或者,我可以构建如上所示的序列矩阵,并将其提供给模型,但我在包中没有看到可以处理它的函数。

长话短说 - 我有多个短数据序列,我想根据这些序列拟合马尔可夫链模型。

最佳答案

有一个示例至少部分回答了您的请求。 holson 'data.frame' 实际上是一个矩阵,其中行是生命轨迹,列是时间序列,通过运行

singleMc<-markovchainFit(data=holson[,2:12],name="holson")

一个转移矩阵是合适的。这要求序列长度是偶数。在您的示例中,如果您在达到吸收状态时停止记录序列,我想您的长度可能不均匀。所以你必须重复该行的最后一个状态,直到达到生命历史的最大长度

关于R Markovchain package - 基于状态序列矩阵拟合马尔可夫链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36814303/

相关文章:

r - 为什么类被认为是 R 中向量的特例?

r - RStudio 和 R 中波浪号扩展的区别

r - 创建一列包含矩阵的 data.frames

r - 将稀疏矩阵 (dgCMatrix) 转换为 realRatingMatrix

javascript - addClass(undefined) 与 addClass(null)

function - 基于单独条件的 Haskell 链函数

javascript - 合并来自链式 axios 请求的两个数组

r - 公共(public)轴子图与 plot.ly for R

c - MPI - 发送和接收列

database - 使用 bash 脚本从在线数据库下载文件