如何使用python找出样本均值在+/-一个总体均值单位内的概率为0.95的区间?

Posted

技术标签:

【中文标题】如何使用python找出样本均值在+/-一个总体均值单位内的概率为0.95的区间?【英文标题】:How to find out the interval within which probability of sample mean lying within +/- a units of population mean is 0.95 using python? 【发布时间】:2021-05-06 06:32:12 【问题描述】:

我是统计和数据科学领域的初学者,所以请您善待我。

我必须在python中解决以下问题:

问题陈述 - 假设总体变量 X 为 N(3, 0.3) 且 n = 20。必须选择多大的区间才能使样本均值 ????¯ 位于 ±a 单位内的概率为 0.95总体平均 μ?

我知道 68% 的数据在 1 个标准差范围内,即 2.7 到 3.3。 95% 的数据在 2 个标准差范围内,即 2.4 到 3.6。

我的代码:

 from scipy.stats import norm
  a,b = norm.interval(alpha=0.95, loc=3, scale=0.3)
  print(b-a)
    

输出:

1.1759783907240324
 

但答案 (b-a) 不正确,因为它与隐藏测试用例的预定义答案不匹配。

在打印我得到的 a,b 值时:

a= 2.412010804637984

b= 3.587989195362016

可能是我没有正确回答问题,或者我的计算方式不正确。

已编辑

尝试 2

from scipy.stats import norm
import numpy as np
a,b = norm.interval(alpha=0.95, loc=3, scale=np.sqrt(0.3))
print(b-a)   # 2.147032972460588
print(a,b)    # 1.9264835137697058 4.073516486230294

使用概念 μ=????¯ ± Z(σ/√n)。 ????¯ 是样本均值。 μ 是总体平均值。 95% 是置信区间。

尝试 3

from math import sqrt
u=3+(1.96*(0.3/(sqrt(20))))
l=3-(1.96*(0.3/(sqrt(20))))
u-l   # 0.2629615941539756

尝试 4

from math import sqrt
u=3+(1.645*(0.3/(sqrt(20))))
l=3-(1.645*(0.3/(sqrt(20))))
u-l   # 0.22069990937922945

所有尝试都显示错误答案。

请告诉我该怎么做。

【问题讨论】:

如果有人回复,我将不胜感激...... 我猜0.3 in N(3, 0.3) 不是标准差而是方差,即应该是norm.interval(alpha=0.95, loc=3, scale=np.sqrt(0.3)) 试过 norm.interval(alpha=0.95, loc=3, scale=np.sqrt(0.3))。还是不对…… 我又增加了 3 次尝试 也许这个问题更适合stats.stackexchange.com 【参考方案1】:

您的公式是正确的,但您需要将 0.95 除以一半并在表格主体内找到该概率。然后在顶部和左侧边距上读取获得此概率水平所需的标准偏差数。

所以你的 py 代码是:

from scipy.stats import norm

a,b = norm.interval(alpha=0.475, loc=3, scale=0.3)
print(b-a)

间隔为 0.38

【讨论】:

【参考方案2】:

一开始你是对的。这只是您希望结果有多准确的问题。

“我知道 68% 的数据位于 1 个标准差范围内,即 2.7 到 3.3。95% 的数据位于 2 个标准差范围内,即 2.4 到 3.6。”大致就是https://en.wikipedia.org/wiki/68%E2%80%9395%E2%80%9399.7_rule

请注意,1.1759783907240324 与 1.2 = 3.6-2.2 非常相似

您可以复制 1.17597839072 如下:

u=3+(1.96*(0.3))
l=3-(1.96*(0.3))
print(u-l)
1.1760000000000002

请注意,如果 0.3 已经是标准偏差,则无需除以 sqrt(20)。如果您根据https://en.wikipedia.org/wiki/Confidence_interval 进行 t 检验,这可能会很有用

68–95–99.7 rule

可以很容易地在python中检查如下。

a,b = norm.interval(alpha=0.69, loc=0, scale=1)
print('one std to each side: ',b-a)
print('with a: ',a)
print('with b: ',b)



a,b = norm.interval(alpha=0.95, loc=0, scale=1)
print('two std to each side: ',b-a)
print('with a: ',a)
print('with b: ',b)

有输出:

one std to each side:  2.0304440664340557
with a:  -1.0152220332170279
with b:  1.0152220332170279
two std to each side:  3.919927969080108
with a:  -1.959963984540054
with b:  1.959963984540054

如您所见,一个标准差为 +-1,两个为 +-1.96。

我可以用我们自己的函数做同样的事情:

#a,b = norm.interval(alpha=0.69, loc=0, scale=1)
b=0+(1*(1))
a=0-(1*(1))
print('one std to each side: ',b-a)
print('with a: ',a)
print('with b: ',b)
#a,b = norm.interval(alpha=0.95, loc=0, scale=1)
b=0+(1.96*(1))
a=0-(1.96*(1))
print('two std to each side: ',b-a)
print('with a: ',a)
print('with b: ',b)

有输出:

one std to each side:  2
with a:  -1
with b:  1
two std to each side:  3.92
with a:  -1.96
with b:  1.96

如您所见,一个标准差为 +-1,两个为 +-1.96。

正如所料--> https://en.wikipedia.org/wiki/68–95–99.7_rule

【讨论】:

以上是关于如何使用python找出样本均值在+/-一个总体均值单位内的概率为0.95的区间?的主要内容,如果未能解决你的问题,请参考以下文章

指数分布的样本均值服从啥分布

假设检验总体和样本平均值

SPSS假设检验

抽样分布 样本均值和样本方差的分布

SPSS参数的区间估计

用Python计算样本方差,总体方差,比较