我有几个观察到的不同长度的独立序列,称为movs
,并想为movs计算一个通用的转换矩阵。有两个问题:
我无法串联它们。
df <-data.frame(activityID = rep(1:4,c(10,5,4,1))),movs = sample(c(“ A”,“ B”,“ C”), 20,replace = T))
我查看了具有功能markovchain
和参数markovchainfit
的软件包possibleStates
,该软件包使我可以预定义序列中将存在的所有状态,即使他们并没有出现在所有的人中。
https://rdrr.io/a/cran/markovchain/man/markovchainFit.html
但是因为序列不在行中并且由于它们的长度不同,所以我将df转换为列表:
d<-split(df$movs, df$activityID)
然后运行markovfitlist
,但是它没有possibleStates
参数。
markovchain::markovchainListFit(data = d,byrow = F)
所以现在我为每个序列都有一个转移矩阵-如何将它们全部结合起来以形成一个包含所有状态的1个转移矩阵?
答案 0 :(得分:1)
您可以为此使用PyEMMA(基于Python),它首先将所有序列组合在一个计数矩阵中。该矩阵给出每对状态的跃迁计数,然后被馈送到跃迁矩阵估计器中。 对于您使用的这个R包,可能是同一件事,因为这是一项非常常见的任务。