如何使用马尔可夫链模型生成转换矩阵并预测下2个Events
?
我的数据格式如下所示dt
v1<-c(1,1,1,1,1,2,2,2,3,3,3,3,3,3,3)
v2<-c("Jan","Jan","Jan","Feb","Feb","Jan","Jan","Feb","Jan","Jan","Feb","Feb","Feb","Feb","Feb")
v3<-c("A1","E1","F1","B1","A1","E1","B1","C1","B1","D1","E1","A1","B1","C1","F1")
dt <- data.table(emp_id=v1,month=v2,work=v3)
temp1 <- dt[,.(list(work)),.(emp_id,month)]
head(temp1)
temp2 <- temp1[,.(list(V1)),.(emp_id)]
head(temp2)
temp2[,V1 := lapply(V1, unlist, use.names = F)]
dt <- setnames(temp2,"V1","Events")
最佳答案
在此document中描述了一个名为markovchain
的R包,该R包具有使Markov链适合给定序列的功能(称为markovchainFit
的功能),以及用于从经过训练的Markov链计算预测的功能(称为predict
)。
编辑:关于我发现不正确的另一个建议答案,我在此处为初始答案添加了一些元素。
通常,马尔可夫链估计或学习是通过最大似然(ML),最大后验(MAP)方法或其他技术(例如自举)完成的。例如,这些方法可以处理以下情况:可用序列未达到马尔可夫链的某些现有状态,而在过渡矩阵中未赋予它们0概率。这些是任何马尔可夫模型(马尔可夫链,隐马尔可夫模型等)的经典方法。