置信区间 - 不同方法的结果不一致
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)
)
我在计算置信区间时遇到了一个有趣的现象。我将尝试通过生成一组正态分布的数字来复制问题。
我使用了两种方法来计算置信区间,但是,每种方法都产生了不同的结果。
## 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)
)