【笔记】数据方法论-2.2.推断统计分析-假设检验

文章目录

  • 写在前面
  • 1.假设检验
      • 1.1 引入
      • 1.2 假设检验概念
      • 1.3 小概率事件
      • 1.4 P-Value与显著性水平
  • 2.假设检验步骤
  • 3.常用假设检验
      • 3.1 Z检验
      • 3.2 T检验
  • 4.双边检验与单边检验
      • 4.1 概念
      • 4.2 右边假设检验
      • 4.3 左边假设检验

写在前面

1.假设检验

1.1 引入

  • 某车间用一台包装机包装糖果,袋装糖的净重是一个随机变量,服从正态分布。当机器正常时,均值为0.5KG,标准差为0.015KG。某日开工后为了检验包装机是否正常,随机抽取它所包装的糖9袋,净重分别为:[0.497, 0.506, 0.518, 0.524, 0.498, 0.511, 0.520, 0.515, 0.512]。问:机器是否正常
  • 解析:机器正常时的均值,是总体的均值,而我们统计的,只是总体中一部分抽样(样本)。因此,一次抽样统计的均值,并不能代替总体的均值。我们可以使用区间估计进行验证
    import numpy as np
    import matplotlib.pyplot as plt
    
    plt.rcParams['font.family'] = 'SimHei'
    plt.rcParams['axes.unicode_minus'] = False
    
    a = np.array([0.497, 0.506, 0.518, 0.524, 0.498, 0.511, 0.520, 0.515, 0.512])
    # 定义总体的均值与标准差
    all_mean,all_std = 0.5,0.015
    # 计算样本均值
    sample_mean = a.mean()
    # 计算标准误
    sample_se = all_std / np.sqrt(len(a))
    # 设置95%的置信区间
    left, right = sample_mean - 1.96 * sample_se, sample_mean + 1.96 * sample_se
    print("置信区间:{:.3f} ~ {:.3F}".format(left,right))
    # 可视化计算结果
    plt.plot(all_mean,0,marker='*',color='orange',ms=15,label='总体均值')
    plt.plot(sample_mean,0,marker='o',color='r',label='样本均值')
    plt.hlines(0,xmin=left,xmax=right,colors='b',label='置信区间')
    plt.axvline(left,0.4,0.6,color='r',ls='--',label='左边界')
    plt.axvline(right,0.4,0.6,color='g',ls='--',label='右边界')
    plt.legend()
    
    在这里插入图片描述
    【笔记】数据方法论-2.2.推断统计分析-假设检验_第1张图片
  • 上面的示例中,是根据现有的参数去估计机器是否是正常的,但是换一种思路:假设机器是正常的,之后以这个假设进行推断,会得到怎样的结果呢?

1.2 假设检验概念

  • 假设检验:又称显著性检验,通过样本的统计量,来判断与总体参数之间是否存在差异(差异是否显著)。即对总体参数进行一定的假设,然后通过收集的数据,验证之前做出的假设是否合理。在假设检验中,我们需要建立两个完全对立的假设,分别为原假设H0备择假设H1。然后根据样本信息进行分析判断,是选择维持原假设还是接受备择假设。
  • 假设检验基于反证法。首先需要假设原假设为真,在此基础上如果得出了违反逻辑与常理的结论,则表明原假设是错误的,此时我们接受备择假设。否则我们没有充分的理由推翻原假设,只能继续维持原假设。
  • 例如:在上面的例子中,我们建立两个假设:H0-机器运作正常;H1-机器运作不正常。

1.3 小概率事件

在假设检验中,违反逻辑与常规的结论,就是小概率时间。我们认为小概率事件在一次实验中是不会发生的。一旦小概率事件发生,我们就有理由拒绝原假设。

1.4 P-Value与显著性水平

为了便于量化,我们计算一个概率值(P-Value),该概率值可以认为是支持原假设的概率。因为在假设检验中,通常原假设为等值假设,因此,P-Value也就相当于样本统计量与总体参数无差异的概率。之后,我们还需要设定一个阀值,这个阀值就是显著性水平(使用α表示),通常α的取值为0.05 (1-α为置信度)。当P-Value的值大于α时,支持原假设,否则拒绝原假设。

2.假设检验步骤

  • 步骤如下
    • 1.设置原假设与备择假设
    • 2.设置显著性水平α(α一般为0.05)
    • 3.根据问题选择假设检验的方式
    • 4.计算统计量,并通过统计量获取P值
    • 5.根据P值与α值,选择原假设或者是备择假设

3.常用假设检验

3.1 Z检验

  • Z检验用来判断样本均值与总体均值是否具有显著性差异。Z检验通过正态分布的理论来推断差异发生的概率,从而比较两个均值的差异是否显著。
  • Z检验适用于:
    • 总体呈正态分布
    • 总体方差已知
    • 样本容量较大(>30)
  • Z统计量计算方式
    • 在这里插入图片描述
    • x ˉ \bar{x} xˉ:样本均值
    • μ0:待检验的总体均值(假设的总体均值)
    • S x ˉ \bar{x} xˉ:标准误
    • σ \sigma{} σ:总体标准差
    • n:样本容量
  • 通过Z检验求解上面的题目:
    • 1.设置原假设与备择假设
      • 原假设:μ=μ0=0.5KG(机器运作正常)
      • 备择假设:μ≠μ0≠0.5KG(机器运作不正常)
    • 2.设置显著性水平
      • 设置α=0.05
    • 3.根据问题选择假设检验方式
      • 带装糖净重的总体呈正态分布,总体标准差已知,选择Z检验
    • 4.计算统计量,通过统计量获取P值
      import scipy.stats as stats
      
      a = np.array([0.497, 0.506, 0.518, 0.524, 0.498, 0.511, 0.520, 0.515, 0.512])
      # 总体均值与标准差
      all_mean, all_std = 0.5, 0.015
      # 计算样本均值
      samplt_mean = a.mean()
      # 计算标准误
      se = all_std / np.sqrt(len(a))
      # 计算Z统计量
      z = (sample_mean - all_mean) / se
      print('Z统计量:{}'.format(z))
      # 计算P值
      p = 2 * stats.norm.sf(abs(z))
      print('P-Value值:{}'.format(p))
      
      在这里插入图片描述
      • 根据Z值可知:Z值偏离超过了两倍的标准差,P值也就小于0.05,因此在显著性水平α=0.05时,P<α,故我们接受备择假设,认为机器运作是不正常的。

3.2 T检验

  • t检验:类似于Z检验,用来判断样本均值与总体均值是否有显著性差异。
  • t检验基于t分布。t检验适用于以下情况:
    • 总体呈正态分布
    • 总体方差未知
    • 样本数量较少(<30)
  • 随着样本容量增大(样本容量>30)时,t分布主键接近于正态分布。此时t检验近似于Z检验
  • t统计量计算方式
    • t = x ˉ − μ 0 S x ˉ \frac{\bar{x}-μ_0}{S_{\bar{x}}} Sxˉxˉμ0 = x ˉ − μ 0 S / n \frac{\bar{x}-μ_0}{S/\sqrt{n}} S/n xˉμ0
    • x ˉ \bar{x} xˉ:样本均值
    • μ 0 μ_0 μ0:待检验的总体均值(假设的总体均值)
    • S x ˉ S{\bar{x}} Sxˉ:标准误
    • S:样本标准差
    • n:样本容量
  • 问:鸢尾花的平均花瓣长度是3.5cm,这种说法正确么?
  • 解答:
    • 1.设置原假设与备择假设
      • 原假设:μ = μ0 = 3.5cm
      • 备择假设:μ≠μ0≠3.5cm
    • 2.设置显著性水平
      • α=0.05
    • 3.根据问题选择假设检验方式
      • 鸢尾花呈正态分布,总体标准差未知,选择t检验
    • 4.计算统计量,根据统计量获取P值
      import pandas as pd
      from sklearn.datasets import load_iris
      
      iris = load_iris()
      data = pd.DataFrame(iris.data,
                          columns = ['sepal_length','sepal_widht','petal_length','petal_width'])
      # 计算样本均值
      sample_mean = data['petal_length'].mean()
      # 计算样本标准差
      samplt_std = data['petal_length'].std()
      print('样本均值:{}'.format(samplt_mean))
      print('样本标准差:{}'.format(samplt_std))
      # 计算t统计量
      t = (sample_mean - 3.5) / (samplt_std / np.sqrt(len(data)))
      print('t统计量:{}'.format(t))
      # 计算p值
      # df:自由度(t分布中的概念)
      p = 2 * stats.t.sf(abs(t),df=len(data['petal_length']-1))
      print('P-Value值:{}'.format(p))
      
      在这里插入图片描述
      • 在显著性水平α=0.05时,没有充分的理由证明鸢尾花花瓣长度的均值不是3.5cm,所以我们继续维持原假设

4.双边检验与单边检验

4.1 概念

  • 检验总体均值μ和假设均值μ0是否相等,当μ≠μ0时,总体均值可以大于假设均值,也可以小于假设均值,像这样的检验称为双边假设检验(双边检验)
  • 有时我们只需要知道总体参数大于或者小于假设参数,这样的检验称为单边假设检验(单边检验)
  • 以均值为例:设总体均值为μ,假设均值为μ0,如果:
    • 原假设:μ ≤ μ0
    • 备择假设:μ>μ0
    • 右边假设检验
    • 原假设:μ≥μ0
    • 备择假设:μ <μ0
    • 左边假设检验
  • 在单边检验中,原假设为维持现状,备择假设为改变现状;单边检验与双边检验计算统计量的方式相同,不同的是得出的P值不同

4.2 右边假设检验

  • 问:鸢尾花的平均花瓣长度不超过3.5cm
  • 解答:
    • 1.设置原假设与备择假设
      • 原假设:μ ≤ μ0
      • 备择假设:μ > μ0
    • 2.设置显著性水平
      α = 0.05
    • 3.选择假设检验方式
      • 鸢尾花总体正态分布,总体标准差未知,选择t检验
    • 4.计算统计量,并获取P值
      print(t)
      p = stats.t.sf(t,df=len(data['petal_length']-1))
      print('P-Value值:{}'.format(p))
      
      在这里插入图片描述
      • P<α,所以拒绝原假设,接受备择假设,即:鸢尾花的平均长度超过3.5cm

4.3 左边假设检验

  • 问:鸢尾花的平均花瓣长度不小于3.5cm
  • 解答:
    • 1.设置原假设与备择假设
      • 原假设:μ ≥ μ0
      • 备择假设:μ < μ0
    • 2.设置显著性水平
      α = 0.05
    • 3.选择假设检验方式
      • 鸢尾花总体正态分布,总体标准差未知,选择t检验
    • 4.计算统计量,并获取P值
      print(t)
      p = stats.t.cdf(t,df=len(data['petal_length']-1))
      print('P-Value值:{}'.format(p))
      
      在这里插入图片描述
      • P>α:所以维持原假设,即鸢尾花花瓣平均长度不小于3.5cm

你可能感兴趣的:(大数据分析师成长之路,统计学,python,数据分析)