跳至主要內容

区间估计

Nemo Zhang大约 6 分钟数学笔记统计学

区间估计

区间估计是一种基于统计学原理,根据样本数据推断总体特征值的一种方法。区间估计的目的是在一定的置信水平下,对总体的特征值给出一个估计区间。

创作声明

  • 人工智能生成

    本文部分内容(图像/文本/代码)由人工智能 (AI) 技术生成。AI 仅用于辅助表达。

在进行区间估计时,通常先计算样本数据的统计量(如均值、标准差等),然后基于这些统计量计算出置信区间。置信区间是一个区间范围,表示真实参数值的可能取值范围。一般来说,置信区间由一个下限和一个上限组成,这个区间表示在一定置信水平下,真实参数值在这个区间内的概率为指定置信水平。

置信区间是用来描述一个统计模型的未知参数真实值可能存在的区间。在统计学中,置信区间通常是基于样本数据得到的,它表示在一定置信水平下(通常是 95% 或 99%),真实参数值位于此区间内的概率。

例如,对于一个总体的均值,可以通过样本数据计算出样本均值,并通过 tt 分布计算出样本均值的置信区间。假设置信水平为 95%,则意味着在 100 次采样中,有 95 次采样所得的置信区间会包含真实均值。这种方法能够给出在一定置信水平下的估计范围,帮助我们更好地了解总体特征值的真实范围。

计算

假设我们要计算的总体均值 μ\mu,样本容量为 nn,样本均值为 xˉ\bar{x},样本标准差为 ss。我们可以使用 tt 分布来计算置信区间。tt 分布是用来估计均值的分布,其形状类似于正态分布,但是取决于样本容量 nn

  • 大样本:一般认为样本容量 n>=30n>=30,抽样分布可以接近正态分布,才符合中心极限定理,所以,样本容量达到 30 的为大样本,可以用抽样分布为正态分布的特征来推断总体信息。
  • 小样本:样本容量 n<30n<30 的通常被认为是小样本,因为抽样分布不符合正态分布,小样本的抽样分布符合 tt 分布,可以认为 tt 分布是专门为小样本的置信区间更好估计,所设计的。

置信区间的计算步骤如下:

t 分布

计算 tt 值。tt 值表示样本均值与总体均值之间的偏差。计算公式为:

t=xˉμs/n t = \frac{\bar{x} - \mu}{s / \sqrt{n}}

其中,xˉ\bar{x} 是样本均值,ss 是样本标准差,n\sqrt{n} 是样本容量的平方根。

计算置信区间的上下界。置信区间的计算公式为:

xˉtα/2,n1snμxˉ+tα/2,n1sn \bar{x} - t_{\alpha/2, n-1} \frac{s}{\sqrt{n}} \leq \mu \leq \bar{x} + t_{\alpha/2, n-1} \frac{s}{\sqrt{n}}

其中,tα/2,n1t_{\alpha/2, n-1}tt 分布的上分位数,它表示 tt 分布在左侧面积为 α/2\alpha/2 的那个点。通常,α\alpha 的值为 0.05 或 0.01。

计算上下界的数值。根据置信区间的计算公式,可以将 xˉ\bar{x}, ss, nntα/2,n1t_{\alpha/2, n-1} 的值代入公式,得到上下界的数值。

正态分布

以上是基于tt分布的置信区间的计算方法。当样本容量nn较大时,tt分布可以近似为正态分布。在这种情况下,可以使用正态分布的上下界计算方法,其计算公式为:

xˉzα/2snμxˉ+zα/2sn \bar{x} - z_{\alpha/2} \frac{s}{\sqrt{n}} \leq \mu \leq \bar{x} + z_{\alpha/2} \frac{s}{\sqrt{n}}

其中,zα/2z_{\alpha/2}是正态分布的上分位数,它表示正态分布在左侧面积为α/2\alpha/2的那个点。这种方法通常在样本容量较大(大于30)时使用。

程序

以 python 为例。假设进行了 5 次独立重复实验,每次实验得到的结果分别为x1,x2,x3,x4,x5x_1, x_2, x_3, x_4, x_5,要计算这 5 组实验结果的均值和 95% 置信区间的上下界。

逐步代码

  1. 计算均值。均值可以通过 numpy 的 mean 函数计算,即:
import numpy as np

x = np.array([x1, x2, x3, x4, x5])
mean = np.mean(x)
  1. 计算标准差。标准差可以通过 numpy 的 std 函数计算,即:
std = np.std(x, ddof=1)

其中,ddof 参数设置为 1 表示使用无偏样本标准差进行计算。

  1. 计算 tt 值。tt 值可以通过 scipy 的 t 分布计算函数 t.ppf 来计算,即:
from scipy.stats import t

alpha = 1 - 0.95
n = len(x)
df = n - 1
t_value = t.ppf(1 - alpha/2, df)

其中,alpha 表示置信水平,n 表示样本容量,df 表示自由度,t_value 表示 tt 分布的上分位数。

  1. 计算置信区间的上下界。置信区间的上下界可以通过上面的公式计算,即:
lower = mean - t_value * std / np.sqrt(n)
upper = mean + t_value * std / np.sqrt(n)

其中,lower 表示置信区间的下界,upper 表示置信区间的上界。

这样,我们就得到了 95% 置信区间的上下界。需要注意的是,在进行置信区间计算时,需要假定数据服从正态分布或 tt 分布。如果数据不满足这些假设,置信区间的计算结果可能不准确。此外,在样本容量较小的情况下,tt 分布的形状可能会偏离正态分布,这时候需要使用更精细的方法来计算置信区间。

封装

import numpy as np
from scipy.stats import t

def calculate_confidence_interval(data, confidence_level):
    '''
    计算均值和置信区间

    参数:
    data: 二维numpy数组,每行代表一个实验,每列代表一个数据点
    confidence_level: 置信水平,取值范围为0到1之间

    返回值:
    mean: numpy数组,每个元素为一个数据点的均值
    lower: numpy数组,每个元素为一个数据点的置信区间下界
    upper: numpy数组,每个元素为一个数据点的置信区间上界
    '''

    # 计算均值
    mean = np.mean(data, axis=1)

    # 计算标准差
    std = np.std(data, axis=1, ddof=1)

    # 计算t值
    alpha = 1 - confidence_level
    n = data.shape[1]
    df = n - 1
    t_value = t.ppf(1 - alpha/2, df)

    # 计算置信区间的上下界
    lower = mean - t_value * std / np.sqrt(n)
    upper = mean + t_value * std / np.sqrt(n)

    return mean, lower, upper

该函数接受两个参数:dataconfidence_leveldata 是一个二维 numpy 数组,每行代表一个实验,每列代表一个数据点;confidence_level 是置信水平,取值范围为 0 到 1 之间。

该函数返回三个值:mean 表示每个数据点的均值,lower 表示每个数据点的置信区间的下界,upper 表示每个数据点的置信区间的上界。

使用该函数可以计算任意置信水平下的均值和置信区间。例如,如果需要计算 95% 置信水平下的均值和置信区间,可以调用如下代码:

mean, lower, upper = calculate_confidence_interval(data, 0.95)
上次编辑于: