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

R代码绘制马尔可夫链误差-样本数图异常求助(贝叶斯新手)

求助:《学生贝叶斯统计指南》习题12.4.3的R代码问题

我是R语言和贝叶斯统计的新手,正在做《学生贝叶斯统计指南》第12章的习题集,卡在了12.4.3题上,希望大家能帮我看看问题出在哪。

习题背景

题目里的特殊硬币规则是这样的:

下一次投掷结果(正面或反面)依赖于当前投掷结果。具体来说,若当前掷出正面,则下一次掷出正面的概率为$\frac{1}{2}+\epsilon$;若当前掷出反面,则下一次掷出反面的概率为$\frac{1}{2}+\epsilon$。初始假设$0 \leq \epsilon \leq 0.5$。随机变量X在掷出反面时取0,掷出正面时取1。

习题12.4.3的问题是:随着$\epsilon$增大,均值估计的误差会如何变化?原因是什么?

我的尝试与问题

我写了一段R代码来模拟这个过程,但运行后得到的图表是一条直线,而且不同样本量(10、20、100)下完全没有差异,这显然和预期不符,我肯定是忽略了某个关键点。

以下是我的代码:

epsilon <- seq(from = 0, to = 0.5, length.out = 10 )
first_throw <- rbinom(n=1, size=1, prob = 1/2)
cat("\nFirst Throw: ",first_throw)
last_throw <- first_throw
for ( s in c(10,20,100)){
  for (ep in epsilon) {
    j <- 1
    curr_err <- 0
    if(last_throw == 1){
      last_throw <- rbinom(n=1, size = 1, prob=1/2 + ep)
      curr_err <- abs(mean(replicate(1000, mean(rbinom(n=s, size = 1, prob=1/2 + ep)))) - 0.5)
    } else{
      last_throw <- rbinom(n=1, size = 1, prob=1/2 - ep)
      curr_err <- abs(mean(replicate(1000, mean(rbinom(n=s, size = 1, prob=1/2 - ep)))) - 0.5)
    }
    lerrors [j] <- curr_err
    j <- j + 1
  }
  cat("\n epsilon: ", epsilon)
  cat("\n lerrors: ", lerrors)
  plot(epsilon,lerrors, col="blue")
  lines(epsilon, lerrors, col="blue")
}

我现在的疑问是:为什么模拟结果是一条直线?我在代码逻辑或者对问题的理解上哪里出错了?

内容的提问来源于stack exchange,提问作者Amsci Fi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 19:17:28