You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言二状态马尔可夫链模拟:按指定转移概率生成500个观测值的方法

R语言两状态马尔可夫链模拟实现

第一步:初始化参数

  • 状态集合:k <- c(0,1)
  • 随机生成转移概率参数:v <- runif(2, 0.3, 0.7)
    • alpha <- v[1]:当前状态为0时,下一状态仍为0的概率
    • beta <- v[2]:当前状态为1时,下一状态切换为0的概率

第二步:单步状态转移逻辑实现

通过sample()函数实现按指定概率抽样,核心判断逻辑如下:

if (Xn == k[1]) {
  # 当前状态为0,按概率alpha保留0,1-alpha切换为1
  Xn_plus_1 <- sample(k, size = 1, prob = c(alpha, 1 - alpha))
} else {
  # 当前状态为1,按概率beta切换为0,1-beta保留1
  Xn_plus_1 <- sample(k, size = 1, prob = c(beta, 1 - beta))
}

第三步:for循环生成500个观测值

完整模拟代码如下,运行后X向量将存储X1到X500的全部观测结果:

# 可选:设定随机种子保证结果可复现,不需要可删除该行
set.seed(123)

# 初始化存储500个观测的向量
X <- numeric(500)
# 设定初始状态X1,也可改为sample(k, 1)随机生成初始状态
X[1] <- 0

# 循环生成X2到X500
for (n in 1:499) {
  current_X <- X[n]
  if (current_X == k[1]) {
    X[n+1] <- sample(k, size = 1, prob = c(alpha, 1 - alpha))
  } else {
    X[n+1] <- sample(k, size = 1, prob = c(beta, 1 - beta))
  }
}

模拟完成后可通过head(X)查看前若干个观测值,验证转移逻辑是否符合预期。

内容的提问来源于stack exchange,提问作者Jose Moquiambo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 23:45:04