我刚开始使用马尔可夫链,并且有一个问题我还没有找到解决方案。我正在尝试将马尔可夫链拟合到数据集,以获得人们从一种状态转换到另一种状态的转移概率,我想知道在建立模型时如何考虑单个参与者的影响。
下面是一个例子:
#Here's a dataframe with participant numbers and their state: A, B, C
DF <- data.frame(user_id = rep(1:10, each = 3),
state = sample(rep(LETTERS[1:3], each = 10)))
> head(DF)
user_id 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)
markovchainFit()函数似乎忽略了参与者的信息,它的底层原理似乎使用createSequenceMatrix(data= DF$state)来计算了state序列中所有状态之间的转移,例如:
#Example of createSequenceMatrix
A B C
A 1 2 0
B 1 1 0
C 0 0 0
而我想要估计的转移概率矩阵需要考虑参与者的信息,换句话说,仅考虑相同参与者之间的状态转移,转移计数矩阵应该为:例如:
#Example
A B C
A 1 2 0
B 0 1 0
C 0 0 0
我是否需要将转移矩阵分别拟合到每个参与者,然后对他们进行平均?如果是这样的话,我怎么知道这件事呢?
此外,在这种情况下,您将如何处理参与者之间的不同转换矩阵?例如,一些参与者可能在状态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()函数在估计转移概率矩阵时使用仅考虑相同参与者之间的状态转移的计数矩阵来估计,这样来保证考虑相同参与者之间的状态转移,如果是这样?我如何实施?
对了,除了获得转移概率矩阵,我还需要获得估计的标准差和置信区间。
任何对此或资源建议的帮助都将不胜感激。
相似问题