Answers:
我不是立即意识到“内置”功能(例如in base
或类似的功能),但是我们可以通过几行代码非常轻松有效地做到这一点。
这是一个函数,它将矩阵(不是数据帧)作为输入,并生成转换计数(prob=FALSE
)或默认情况下(prob=TRUE
)产生估计的转换概率。
# Function to calculate first-order Markov transition matrix.
# Each *row* corresponds to a single run of the Markov chain
trans.matrix <- function(X, prob=T)
{
tt <- table( c(X[,-ncol(X)]), c(X[,-1]) )
if(prob) tt <- tt / rowSums(tt)
tt
}
如果您需要在数据框上调用它,则可以随时执行
trans.matrix(as.matrix(dat))
HMM
和RHMM
可能会有所帮助。
R
是非常挑剔的,在过去,特别是当它涉及到装修,我从来没有发现一个我真的很喜欢和信赖。也许现在情况好些了。我想他们会做对的。如果您知道这样的解决方案,请作为答案提交。我很乐意投票!
dat
OP作为示例提供的数据帧具有数据列,是否需要每列一个转换矩阵,还是一个整体转换矩阵,还是我们可以将其转换为向量?)
我刚刚markovchain
基于S4编程风格上传了一个新的R包。除了处理S4 markovchain对象的各种方法外,它还包含一个函数,用于根据状态序列拟合Markov链。看一下:
library(markovchain)
sequence <- c("a", "b", "a", "a", "a", "a", "b", "a", "b", "a",
"b", "a", "a", "b", "b", "b", "a")
mcFit <- markovchainFit(data=sequence)
这可能会有所帮助。