norm.interval和t.interval不能直接求样本的置信区间

按网上搜到的结果调用scipy.stats包计算参数已知的置信区间

from scipy import stats as sst
conf_int = sst.norm.interval(0.95, loc=82, scale=20)
# conf_int = sst.norm.cdf(1.96)
conf_int

输出结果如下:

(42.80072030919892, 121.19927969080108)

该结果与书上给出的结果相差巨大
在这里插入图片描述
同样计算参数未知的区间估计也是一样

from scipy import stats as sst
conf_int = sst.t.interval(0.95, df=69, loc=9312, scale=4007)
# conf_int = sst.t.ppf(0.975, df=20)
print(conf_int)

输出结果

(1318.2537235663158, 17305.746276433685)

书上的结果
在这里插入图片描述

发现个奇怪的点

  • 按照置信区间的公式,样本量 n 是参与计算的,但是在norm.interval中并没有传递这个参数,按这个方式计算只要样本的均值和标准差相同,不论样本量的大小,最终结果都是一样的

所以尝试求解标准正态分布

from scipy import stats as sst
conf_int = sst.norm.interval(0.95, loc=0, scale=1)
# conf_int = sst.norm.cdf(1.96)
conf_int

(-1.959963984540054, 1.959963984540054)

由上可知这两个api得出的是在均值为loc,标准差为scale的概率密度函数下,面积为α的区间,并不能直接得出我想求的样本的置信区间。

调整一下参数 scale 也是可以直接得到我所需要的样本置信区间

from scipy import stats as sst
import numpy as np

u,sigma,n = 82,20,100
conf_int = sst.norm.interval(0.95, loc=u, scale=sigma/np.sqrt(n))
# 这里 scale 传递的是标准误,不是标准差
print(conf_int)

(78.0800720309199, 85.9199279690801)

截图书籍

商务与经济统计_安德森_第12版

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值