【问题标题】:Testing confidence intervals in R在 R 中测试置信区间
【发布时间】:2019-04-26 00:02:58
【问题描述】:

我目前已经构建了一个 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() 函数。你能更好地格式化它/整理一下吗?
  • @AkselA 更好吗?
  • 它看起来仍然是无意义的:)。你以前用 R 写过函数吗?
  • 不,我是 R 新手。它会生成 1000 个置信区间,但我如何测试平均值是否包含在每个置信区间中?
  • 置信区间是多少?估计正态分布的平均值?

标签: r confidence-interval


【解决方案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 

【讨论】:

    猜你喜欢
    • 2021-12-21
    • 2012-09-13
    • 2015-07-12
    • 1970-01-01
    • 1970-01-01
    • 2021-02-05
    • 1970-01-01
    • 2012-03-07
    相关资源
    最近更新 更多