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
相关产品推荐
相关产品推荐

