跨参与者构建马尔可夫链

Build Markov Chain across participants

我刚开始使用马尔可夫链,遇到一个问题我还没有找到解决方案。我正在尝试将马尔可夫链拟合到数据集以获得人们从一种状态切换到另一种状态的转换概率,我想知道在构建模型时如何考虑个体参与者的影响。

这是一个例子:

#Here's a dataframe with participant numbers and their state: A, B, C
DF <- data.frame(pp = rep(1:10, each  = 3), 
             state = sample(rep(LETTERS[1:3], each = 10)))

> head(DF)
   pp state
1  1     A
2  1     A
3  1     B
4  2     A
5  2     B
6  2     B

我不能只将马尔可夫链拟合到 state 列,因为这会忽略参与者信息,并且获取两个参与者之间的转移概率没有意义,例如:

mcFit <- markovchainFit(data=DF$state)

我是否需要分别为每个参与者拟合一个转换矩阵,然后对它们进行平均?如果是这样,我将如何解决这个问题?

此外,在这种情况下,您将如何处理参与者之间的不同转移矩阵?例如。一些参与者可能在状态 A 和 C 之间没有任何转换,而其他参与者则:

#Example of Participant 1
     A    B
 A 0.25 0.50
 B 0.15 0.55

#Example of Participant 2
     A    C
 A 0.50 0.25
 C 0.25 0.50

如有任何帮助或推荐资源,我们将不胜感激。

如果你 运行 markovchainFit 只是在向量上你会得到这个估计:

> markovchainFit(DF$state)$estimate
MLE Fit 
 A  3 - dimensional discrete Markov Chain defined by the following states: 
 A, B, C 
 The transition matrix  (by rows)  is defined as follows: 
          A         B         C
A 0.2000000 0.3000000 0.5000000
B 0.6000000 0.1000000 0.3000000
C 0.2222222 0.5555556 0.2222222

但您可以使用 split 将状态向量分解为基于 pp 列的向量列表,然后将其传递给 markovchainFit

> markovchainFit(split(DF$state,DF$pp))$estimate
MLE Fit 
 A  3 - dimensional discrete Markov Chain defined by the following states: 
 A, B, C 
 The transition matrix  (by rows)  is defined as follows: 
          A         B         C
A 0.4000000 0.2000000 0.4000000
B 0.7500000 0.0000000 0.2500000
C 0.1428571 0.5714286 0.2857143