如何用置信区间解释数据点的 upper/lower 界限?

How to interpret the upper/lower bound of a datapoint with confidence intervals?

给定一个值列表:

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

使用学生 t 检验,我可以找到 alpha 为 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)

[输出]:

(49.134501289005009, 49.865498710994991)

但是如果我要找到每个数据点的置信区间,例如对于值 10:

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

应该如何解释值的区间?这样解释 statistically/mathematical 合理吗?

它是不是像这样:

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

又名。

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

那么我们可以将间隔解释为某种数据点的箱线图吗?

置信区间完全违反直觉。尤其是程序员,作为程序员我敢说

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

Were this procedure to be repeated on numerous samples, the fraction of calculated confidence intervals (which would differ for each sample) that encompass the true population parameter would tend toward 90%.

换句话说

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

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

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

传递到置信区间的特定数据也没有意义。在 0 到 99 范围内递增的数字 非常 不太可能符合正态分布。

简而言之

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

TL;DR

围绕置信区间存在很多误解,其中大部分似乎源于对我们所相信的东西的误解。由于您对置信区间的理解有些混乱,也许更广泛的解释会让您更深入地理解您正在处理的概念,并希望绝对排除任何错误来源。

消除误解

设置非常简单。我们处于这样一种情况,我们想要估计一个参数,或者更确切地说,我们想要检验一个参数值的假设,该参数值参数化了一个随机变量的分布。例如:假设我有一个正态分布变量 X,均值为 m,标准差为 sigma,我想检验假设 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. ,置信区间就会跨越所有可能的值
  3. 对于大多数测试,在我不会描述的条件下,我们拥有的观察越多,我们就越能限制置信区间。

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

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

什么是学生考试?

现在让我们来看一下您的示例,并根据我们刚才所说的内容来查看它。您将学生测试应用于您的观察列表。 第一:Student 测试旨在检验具有 unknown 标准差的正态分布随机变量的均值 m 与某个值 m_0.[=23 之间是否相等的假设=]

与此测试相关的统计数据是 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),其中 m 是您的经验均值,s 是经验标准差(除以 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 值,您会发现很多相似之处,希望您在阅读本文后能更好地理解它们 post。

https://en.wikipedia.org/wiki/P-value#Definition_and_interpretation