具有置信区间的二项式概率质量函数

问题描述 投票:1回答:1

我们需要解决以下问题。

请考虑以下binomial probability mass function (pmf)

[f(x;m,p) = (m¦x) p^x * (1-p)^(m-x),对于x = 0, 1, 2,.....,m,否则等于0。令X_1, X_2,....,Xn是来自f(x;m = 20; p = 0:45)的独立且均匀分布的随机样本。

1]假设n = 15并使用p-hat = Σ_(i=1)^n X_i/mn(p的估计量)计算p的95%置信区间。模拟这些置信区间10000次,然后计算参数值p在这10000个置信区间内的频率。

m <- 20
p <- 0.45
n <- 15
x <- m
nsim <- 10000
counter <- 0

for (i in 1:nsim) {
  bpmf <- rbinom(x,m,p)
  esti_p <- bpmf/(m*n)
  var_bpmf <- var(bpmf) 
  CI_lower <- esti_p - qnorm(0.975)*sqrt(var_bpmf/n) 
  CI_upper <- esti_p + qnorm(0.975)*sqrt(var_bpmf/n) 
  if ((CI_lower<p) & (CI_upper>p)) counter <- counter + 1
}    

它无法正常工作,我看不到我在做什么错。有谁可以帮助我吗?

[当我运行代码时,我相信答案现在是正确的,但是它给出了以下句子:“有50个或更多警告(使用warnings()查看前50个)”,当我运行此命令时,它将给出:

"1: In if ((CI_lower < p) & (CI_upper > p)) counter <- counter +  ... :
the condition has length > 1 and only the first element will be used".

我也不知道是否;

 CI_lower <- esti_p - qnorm(0.975)*sqrt(var_bpmf/n) 
 CI_upper <- esti_p + qnorm(0.975)*sqrt(var_bpmf/n) 

是计算置信区间的正确公式。

r statistics confidence-interval
1个回答
0
投票
m <- 20
p <- 0.45
nsim <- 10000

  bpmf <- rbinom(size=m,prob=p,n=nsim)
  esti_p <- bpmf/m
  var_bpmf <- esti_p*(1-esti_p)/m 
  CI_lower <- esti_p - qnorm(0.975)*sqrt(var_bpmf) 
  CI_upper <- esti_p + qnorm(0.975)*sqrt(var_bpmf) 
  counter <-((CI_lower<p) & (CI_upper>p))
table(counter)
© www.soinside.com 2019 - 2024. All rights reserved.