【问题标题】:Confidence intervals - inconsistent results with different methods置信区间 - 不同方法的结果不一致
【发布时间】:2020-05-03 20:27:28
【问题描述】:

我在计算置信区间时遇到了一个有趣的现象。我将尝试通过生成一组正态分布的数字来复制问题。

我使用了两种方法来计算置信区间,但是,每种方法都产生了不同的结果。

## Generating a normal distribution
set.seed(1)
p <- data.frame(x = rnorm(1000))

## Method no. 1 for calculating CI.
p %>%
  summarize(
    lower = 0 - 2 * sd(x),
    upper = 0 + 2 * sd(x)
  )

## Method no. 2 for calc. CI.
p %>%
  summarize(
    lower = quantile(x, p = 0.025),
    upper = quantile(x, p = 0.975)
  )

第一种方法给出 95% CI ,第二种方法给出

结果不同的任何想法。我希望看到同样的结果。

【问题讨论】:

  • 您为什么希望看到相同的结果? CI 和样本分位数之间会有一些小的差异。我想您可以将 [-1.96, 1.96] 与 0 ± sd(x)mean(x) ± sd(x)quantile(x, p = c(0.025, 0.975)) 进行比较。这些会有所不同,但随着 n 变得任意大,差异接近 0
  • 当你有有限的 n 时,这些将不完全相等。尤其是“仅” 1000。在我的机器上使用 n = 1 亿执行此操作最终使差异小于 0.001

标签: r statistics confidence-interval


【解决方案1】:

2 是构建置信区间的经验法则,而不是更接近 1.95 的真实值。在第一种方法中使用它:

## Method no. 1 for calculating CI.
p %>%
    summarize(
        lower = 0 - qnorm(0.975) * sd(x),
        upper = 0 + qnorm(0.975) * sd(x)
    )

值会更接近

【讨论】:

    【解决方案2】:

    使用另一个set.seed,而不是 1000 尝试取 1000000

    set.seed(2)
    p <- data.frame(x = rnorm(1000000))
    sd(p$x)
    mean(p$x)
    ## Method no. 1 for calculating CI.
    p %>%
      summarize(
        lower = 0 - qnorm(p = 0.975) * sd(x),
        upper = 0 + qnorm(p = 0.975) * sd(x)
      )
    
    ## Method no. 2 for calc. CI.
    p %>%
      summarize(
        lower = quantile(x, p = 0.025),
        upper = quantile(x, p = 0.975)
      )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-21
      相关资源
      最近更新 更多