为何R中CI()函数与qnorm计算95%置信区间结果不同?
问题原因解析
你遇到的差异核心是计算对象完全搞混了:
CI(mydata)计算的是样本均值的95%置信区间——这是用来估计总体均值的范围,逻辑是「样本均值 ± 临界值 × 均值的标准误」,其中均值的标准误是「样本标准差 ÷ 样本量的平方根」。- 你用
qnorm(.975, mean=xbar, sd=s)算的是单个观测值的95%分布区间(也就是正态分布里95%的原始数据会落在的范围),因为你直接把样本标准差s当成了单观测值的分布标准差,没有除以样本量的平方根来转换为均值的标准误。
验证一下:
你的样本量n=500,样本标准差s=1.004922,先算均值的标准误:
se <- s / sqrt(500) se
结果≈0.0449。
再用正确逻辑计算均值的置信区间:
upper <- xbar + qnorm(.975) * se lower <- xbar - qnorm(.975) * se c(upper, xbar, lower)
输出结果会和CI(mydata)给出的0.05069041 -0.03760740 -0.12590521几乎完全一致,微小误差来自浮点计算精度。
你之前用qnorm得到的1.932和-2.007,本质是单个原始数据点的95%分布边界,和均值的置信区间不是一个概念,这就是两者结果差异巨大的原因。
内容的提问来源于stack exchange,提问作者digger22
相关产品推荐
相关产品推荐

