有没有一种方法可以从高阶马尔可夫链生成随机样本?我使用了包clickstream来估算二阶马尔可夫链,而我现在正尝试从中生成一个样本。我知道如何使用randomClickstreams函数从过渡矩阵中执行此操作,但这仅适用于一阶马尔可夫链。
这是一个可重现的示例,其中我们从过渡矩阵生成一个样本,然后在该样本上拟合一个二阶马尔可夫链:
trans_mat <- matrix(c(0, 0.2, 0.7, 0, 0.1,
0.2, 0, 0.5, 0, 0.3,
0.1, 0.1, 0.1, 0.7, 0,
0, 0.4, 0.2, 0.1, 0.3,
0, 0 , 0 , 0, 1), nrow = 5)
cls <- randomClickstreams(states = c("P1", "P2", "P3", "P4", "end"),
startProbabilities = c(0.5, 0.5, 0, 0, 0),
transitionMatrix = trans_mat,
meanLength = 20, n = 1000)
# fit 2nd order markov chain:
mc <- fitMarkovChain(clickstreamList = cls, order = 2,
control = list(optimizer = "quadratic"))
这由2个转换矩阵和2个lambda参数组成:
然后我该如何使用这些元素创建一个随机样本,例如10000次旅程?