library(markovchain)
P <- matrix(c(0, 0.5, 0.5, 0, 0, 0,
1, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0,
0, 0, 0, 0.25, 0.5, 0.25,
0, 0, 0, 0.5, 0.25, 0.25,
0, 0, 0, 0, 0, 1), nrow = 6, ncol = 6, byrow = TRUE)
mc <- new("markovchain", states = 1:6, transitionMatrix = P, name = "X")
periods <- period(mc)
cat("Periodicity of the states:\n")
print(periods)
这里我写了这段代码来找出每个状态的周期。但得到了这个错误:”
validObject(.Object)中出错:无效类“markovchain”对象:类“markovchain”中插槽“states”的对象无效:得到类“integer”,应该是或扩展类“character”
为了解决这个错误,我写了这样的代码:
# Load the markovchain package
library(markovchain)
# Define the transition matrix
P <- matrix(c(0, 0.5, 0.5, 0, 0, 0,
1, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0,
0, 0, 0, 0.25, 0.5, 0.25,
0, 0, 0, 0.5, 0.25, 0.25,
0, 0, 0, 0, 0, 1), nrow = 6, ncol = 6, byrow = TRUE)
# Create a markovchain object
states <- as.character(1:6)
mcP <- new("markovchain", states = states, transitionMatrix = P, name = "X")
# Compute the periodicity of the states
periods <- period(mc)
# Print the periodicity of the states
cat("Periodicity of the states:\n")
print(periods)
然后我得到了这个警告:
警告:矩阵不是不可约的状态周期性:[1] 0
这里我也得到了周期0
但是当我计算时,我发现每个状态的周期:1 2 2 1 1 1。
如何在代码中也得到这个结果?
1条答案
按热度按时间mrfwxfqh1#
从
?markovchain::period
的文档中:period返回一个与马尔可夫链的周期相对应的整数**(如果它是不可约的)**
你的例子链不是不可约的(e.例如,从状态1,你只能到达状态2和3,然后再回到1):