7

Given a list of values:

>>> from scipy import stats
>>> import numpy as np
>>> x = list(range(100))

Using student t-test, I can find the confidence interval of the distribution at the mean with an alpha of 0.1 (i.e. at 90% confidence) with:

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)

But if I were to find the confidence interval at every datapoint, e.g. for the value 10:

>>> confidence_interval(x, 10, 0.1)
(9.6345012890050086, 10.365498710994991)

How should the interval of the values be interpreted? Is it statistically/mathematical sound to interpret that at all?

Does it goes something like:

At 90% confidence, we know that the data point 10 falls in the interval (9.6345012890050086, 10.365498710994991),

aka.

At 90% confidence, we can say that the data point falls at 10 +- 0.365...

So can we interpret the interval as some sort of a box plot of the datapoint?

4

2 回答 2

6

简而言之

您的调用给出了未知参数的正态定律的平均参数的置信区间,您观察到 100 个观测值,平均值为 10,标准偏差为 29。此外,解释它也不合理,因为您的分布显然不是正常,因为 10 不是观察到的平均值。

TL;博士

置信区间周围有很多误解,其中大部分似乎源于对我们有信心的误解。由于您对置信区间的理解存在一些混淆,因此更广泛的解释可能会让您更深入地理解您正在处理的概念,并希望绝对排除任何错误来源。

清除误解

非常简单地进行设置。我们处于想要估计一个参数的情况,或者更确切地说,我们想要检验一个假设,以检验一个参数值的假设,该参数将随机变量的分布参数化。例如:假设我有一个平均值为 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 的实现,我们是否可以自信地说 X 的分布是由该值参数化的。90%、95% 等...断言置信水平。通常,外部约束固定这个水平(质量评估的工业规范,科学规范,例如:用于发现新粒子)。

我认为现在对您来说很直观:

  1. 置信水平越高,置信区间越大。例如,对于 100% 的置信度,一旦存在一些不确定性,置信区间将跨越所有可能的值

  2. 对于大多数测试,在我不会描述的条件下,我们拥有的观察越多,我们就越能限制置信区间。

在 90% 的置信度下,我们知道数据点 10 落在区间 (9.6345012890050086, 10.365498710994991)

这么说是错误的,它是最常见的错误来源。90% 的置信区间绝不意味着估计的参数有 90% 的机会落入该区间。当计算区间时,它是否覆盖了参数,或者不覆盖,这不再是概率问题。90% 是对估计程序可靠性的评估

什么是学生考试?

现在让我们来看你的例子,并在我们刚才所说的基础上看它。您将学生测试应用于您的观察列表。第一:学生测试旨在检验标准差未知的正态分布随机变量的均值 m与某个值 m_0 之间是否相等的假设。

与此测试相关的统计数据是t = (np.mean(x) - m_0)/(s/sqrt(n))其中 x 是您的观察向量,n 是观察数,s 是经验标准差。毫不奇怪,这遵循学生分布。

因此,您想要做的是:

  1. 为您的样本计算这个统计量,计算与具有这么多自由度、这个理论平均值和置信水平的学生分布相关的置信区间

  2. 看看你的计算是否t落入那个区间,这告诉你是否可以排除具有这种置信度的等式假设。

我想给你做个练习,但我想我已经够长了。

总结一下使用scipy.stats.t.interval。您可以使用它的两种方式之一。使用上面显示的公式计算自己的 t 统计量,并检查 t 是否符合interval(alpha, df)df 是采样长度返回的区间。或者你可以直接调用interval(alpha, df, loc=m, scale=s)where m 是你的经验平均值,s 是经验标准偏差(除以 sqrt(n))。在这种情况下,返回的区间将直接是均值的置信区间。

因此,在您的情况下,您的调用给出了未知参数的正常定律的平均参数的置信区间,您观察到 100 个观测值,平均值为 10,标准值为 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

于 2017-03-24T11:07:30.880 回答
3

置信区间完全违反直觉。特别是对于程序员,我敢说作为程序员。

Wikipedida使用 90% 的置信度来说明可能的解释:

如果要对大量样本重复此过程,则包含真实总体参数的计算置信区间(每个样本会有所不同)的分数将趋于 90%。

换句话说

  1. 置信区间提供有关样本统计参数(例如平均值)的信息。
  2. 例如,90% 置信区间的解释是:如果您无限次重复实验,90% 的结果置信区间将包含真实参数。

假设计算区间的代码是正确的(我没有检查过),您可以使用它来计算均值的置信区间(因为t-distribution,它模拟了具有未知标准偏差的正态分布总体的样本均值)。

出于实际目的,传入样本均值是有意义的。否则,您会说“如果我假设我的数据的样本平均值为 10,则平均值的置信区间将为 [9.6, 10.3] ”。

传递到置信区间的特定数据也没有意义。从 0 到 99 范围内增加的数字不太可能从正态分布中得出。

于 2017-03-15T08:08:33.613 回答