繁体   English   中英

在R中测试置信区间

[英]Testing confidence intervals in R

我目前已经构建了95%的置信区间,然后使用了replicate()来随机生成1000个置信区间。 我想测量多少间隔包含我的平均值。 我知道理论上应该是950个,但是我如何得到一个确定的答案? 下面列出了我使用的函数和均值。

z <- function(a,b,c){
  error <- rnorm(a, b, c) * c / sqrt(a) 
  left <- b - error
  right <- j + error
  paste("[",round(left,2),";",round(right,2),"]") 
}

set.seed(123)
replicate(1000, z(10,1,1))

我从这里去哪里?

也许这就是您想要做的?

z()将返回正态分布总体平均值的置信区间。

z <- function(N, mu, std, cl=95) {
    alpha <- (1-cl/100)/2

    # CI for population mean
    sep <- std/sqrt(N)
    z_s <- qnorm(1 - alpha)
    pop_lower <- mu - z_s*sep
    pop_upper <- mu + z_s*sep

    c(lower=pop_lower, upper=pop_upper)
}

这意味着如果我生成一个随机变量mean(rnorm(20, 0, 1)) ,那么我们期望该值位于z(20, 0, 1, 95) ,概率为0.95。

为了测试这一点,我们可以做

# specify parameters
N <- 20
mu <- 0
std <- 1

# produce a good number (10,000) of population means
set.seed(1)
r <- replicate(1e4, mean(rnorm(N, mu, std)))

# calculate confidence interval
ci <- z(N, mu, std)

# find which are below, within and above the interval
rc <- cut(r, c(min(r), ci, max(r)), c("below", "within", "above"))

# create a proportion table
round(prop.table(table(rc))*100, 2)

# below within  above 
#  2.59  95.08   2.33 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM