置信区间 - 不同方法的结果不一致

Confidence intervals - inconsistent results with different methods

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

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

## 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 <-2.069832, 2.069832>,第二种方法给出 <-2.130874, 2.006109>

知道为什么结果不同。我希望看到相同的结果。

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)
    )

数值会更接近

使用另一个 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)
  )