有没有办法从高阶马尔可夫链生成随机样本?我使用包点击流来估计一个二阶马尔可夫链,我现在正试图从中生成一个样本。我了解如何从带有 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 次旅程?