给出一系列值:
>>> from scipy import stats
>>> import numpy as np
>>> x = list(range(100))
使用学生t检验,我可以找到分布的置信区间,其平均值为0.1(即置信度为90%):
def confidence_interval(alist, v, itv):
return stats.t.interval(itv, df=len(alist)-1, loc=v, scale=stats.sem(alist))
x = list(range(100))
confidence_interval(x, np.mean(x), 0.1)
[OUT]:
(49.134501289005009, 49.865498710994991)
但如果我要在每个数据点找到置信区间,例如值10
:
>>> confidence_interval(x, 10, 0.1)
(9.6345012890050086, 10.365498710994991)
如何解释值的间隔?根据统计数据/数学声音来解释它是什么?
是否类似于:
置信度为90%时,我们知道数据点
10
属于(9.6345012890050086, 10.365498710994991)
区间,
又名。
90%的置信度,我们可以说数据点落在10 + - 0.365 ......
那么我们可以将区间解释为某种类型的数据点盒形图吗?
答案 0 :(得分:6)
您的调用给出了未知参数的正态定律的平均参数的置信区间,您观察到100个观测值,平均值为10,stdv为29.此外,由于您的分布,因此无法解释它。显然不正常,因为10不是观察到的平均值。
在置信区间存在很多误解,其中大多数误解似乎源于对我们信心十足的误解。由于您对置信区间的理解存在一些混淆,因此更广泛的解释可以更深入地理解您正在处理的概念,并且希望能够明确排除任何错误来源。
非常简短的设置。我们处于我们想要估计参数的情况,或者更确切地说,我们想要测试参数化随机变量分布的参数值的假设。例如:假设我有一个具有均值m和标准差sigma的正态分布变量X,我想测试假设m = 0。
这是一个测试随机变量参数假设的过程。由于我们只能访问随机变量的具体实现的观察,因此通常通过计算这些实现的统计来进行。统计量大致是随机变量实现的函数。让我们调用这个函数S,我们可以在x_1,...,x_n上计算S,这与X的实现次数一样多。
因此您了解S(X)是随机变量以及分布,参数等等!我们的想法是,对于标准测试,S(X)遵循一个众所周知的分布,其值列表。例如:http://www.sjsu.edu/faculty/gerstman/StatPrimer/t-table.pdf
鉴于我们刚才所说的,置信区间的定义是:测试参数的值范围,如果观察结果是由参数化的分布生成的,那么范围,它不会在概率上不可能。 换句话说,置信区间给出了问题的答案:给定以下观察结果x_1,...,x_n n的实现,我们可以自信地说X的分布是通过这样的值进行参数化的。 90%,95%等......表明信心水平。通常,外部约束确定了这一水平(质量评估的工业规范,科学规范,例如:用于发现新粒子)。
我认为现在对你来说很直观:
置信度越高,置信区间越大。例如对于100%的置信度,一旦存在一些不确定性,置信区间将在所有可能的值范围内
对于大多数测试,在我不能描述的条件下,我们观察的越多,我们就越能抑制置信区间。
置信度为90%时,我们知道数据点10落在区间内(9.6345012890050086,10.365498710994991)
说这是错误的,这是最常见的错误来源。 90%置信区间从不意味着估计参数有90%的可能性落入该区间。当计算间隔时,它会覆盖参数,或者它不会,它不再是概率问题。 90%是对估算程序可靠性的评估。
现在让我们来看看你在我们刚才所说的灯光下看看它。您可以将Student测试应用于观察列表。 第一:学生测试旨在测试正态分布随机变量的均值m与未知标准差和某个值m_0之间的平等假设。
与此测试相关的统计量为t = (np.mean(x) - m_0)/(s/sqrt(n))
,其中x是观察向量,n是观察数量,经验标准偏差。毫不奇怪,这是在学生分发之后。
因此,您想要做的是:
为您的样本计算此统计量,计算与具有此多自由度的学生分布相关联的置信区间,此理论均值和置信度
看看你的计算t
是否属于那个时间间隔,它告诉你是否可以用这种置信水平排除相等假设。
我想给你一个练习,但我觉得我已经足够长了。
总结scipy.stats.t.interval
的用法。您可以使用以下两种方式之一。使用上面显示的公式计算自己的t统计量,并检查t是否适合interval(alpha, df)
返回的时间间隔,其中df是采样的长度。或者你可以直接调用interval(alpha, df, loc=m, scale=s)
,其中m是你的经验均值,并且是经验标准偏差(除以sqrt(n))。在这种情况下,返回的间隔将直接是均值的置信区间。
因此,在您的情况下,您的调用给出了未知参数的正态定律的平均参数的置信区间,其中您观察到100次观察,平均值为10,stdv为29.此外,对它进行解释也是不合理的。除了我已经指出的解释错误旁边,因为你的分布显然不正常,因为10不是观察到的平均值。
您可以查看以下资源,以便更进一步。
https://en.wikipedia.org/wiki/Confidence_interval
https://en.wikipedia.org/wiki/Student%27s_t-test
https://en.wikipedia.org/wiki/Student%27s_t-distribution
http://osp.mans.edu.eg/tmahdy/papers_of_month/0706_statistical.pdf
我还没读过,但下面的内容看起来还不错。 https://web.williams.edu/Mathematics/sjmiller/public_html/BrownClasses/162/Handouts/StatsTests04.pdf
你也应该查看p值,你会发现很多相似之处,希望你在阅读这篇文章后能更好地理解它们。
https://en.wikipedia.org/wiki/P-value#Definition_and_interpretation
答案 1 :(得分:3)
置信区间毫无希望地违反直觉。特别是对程序员来说,我敢说是程序员。
Wikipedida使用90%的信心来说明可能的解释:
如果对大量样本重复此过程,那么包含真实总体参数的计算置信区间(每个样本会有所不同)的比例将倾向于90%。
换句话说
假设计算间隔的代码是正确的(我没有检查过),你可以用它来计算均值的置信区间(因为t-distribution,它模拟样本均值标准差未知的正态分布人口)。
出于实际目的,传递样本均值是有意义的。否则你说" 如果我假装我的数据有一个样本平均值,例如10,平均值的置信区间为[9.6,10.3] "。
传递到置信区间的特定数据也没有意义。在0到99范围内增加的数字非常不太可能从正态分布中提取。