Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 跨参与者构建马尔可夫链_R_Markov Chains - Fatal编程技术网

R 跨参与者构建马尔可夫链

R 跨参与者构建马尔可夫链,r,markov-chains,R,Markov Chains,我不熟悉使用马尔可夫链,有一个问题我还没有找到解决方案。我试图将马尔可夫链拟合到数据集,以获得人们从一种状态切换到另一种状态的转移概率,我想知道在构建模型时如何考虑个体参与者的影响 下面是一个例子: #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(

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

下面是一个例子:

#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
我是否需要为每个参与者单独拟合一个过渡矩阵,然后对他们进行平均?如果是这样的话,我该怎么办

此外,在这种情况下,您将如何处理参与者之间不相同的转换矩阵?例如,一些参与者可能在状态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

我认为,如果你用“NA”分隔各个状态,那么
markovchainFit
会将向量解释为一系列的短转换。有关详细信息,请参阅帮助。您还可以向其传递一个列表。这将给你一个全局过渡问题——一个零模型,你可以检验任何人都是不同的假设(不知何故…)@Spacedman谢谢!我只对全局转移概率感兴趣,我只是不想包括从未发生过的转移(例如,在我的示例中,参与者1和参与者2之间从B到A的转移)。因此,通过将我的数据框转换为一个列表,将每个参与者作为列表中的一个单独项目来工作?一些简单的测试似乎同意是的,除了一个列表参数,我没有得到一个对数可能性(什么?),但如果我使用NA,我会这样做。e、 g.
markovchainFit(c(1,2,1,NA,1,1,1,2))
markovchainFit(list(c(1,2,1),c(1,1,1,2))
-相同的输出,但在第二种情况下没有loglik…出于某种原因,这里的代码不添加log likellihood,除非数据是一个简单的向量。不管怎样,我们现在已经破解了吗?
> 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