美文网首页
利用Python进行t检验

利用Python进行t检验

作者: Game0ver | 来源:发表于2022-02-12 23:55 被阅读0次

t检验主要用于检验计量资料(连续变量)的两组均值是否存在差异

一、t检验介绍

无论是哪种t检验,都有以下的基本前提条件:

  • 样本数据服从正态分布
  • 样本数据之间互相独立

检验步骤:

  • 提出原假设和备择假设
  • 构造t统计量
  • 计算t统计量
  • 对得到的P值进行分析,P>0.05则接受原假设,否则拒绝原假设(P值是指在原假设成立的条件下,观察到的试验差别是由于机遇所致的概率)

各t检验的应用场景

名称 应用场景
单样本t检验 检验单组样本均数与已知总体均数之间有无差异
独立样本t检验 检验两组不相关样本之间的均数有无差异
配对样本t检验 检验两组相关样本之间的均数有无差异

二、单样本t检验

  • 应用场景

    比较单组样本均值与已知总体均值之间是否存在差异。已知总体均数一般为标准值、理论值和经过大量观察后得到的比较稳定的指标值

  • 原假设与备择假设

    • H0: 样本均数与已知总体均数相等
    • H1: 样本均数与已知总体均数不相等
  • 例子

    1. 以往通过大规模调查已知某地新生儿的平均出生体重为3.30kg。从该地难产儿中随机抽取35名新生儿作为研究样本,平均出生体重为3.42kg,标准差为0.40kg,问该地难产儿出生体重与一般新生儿体重有无差异

      # 已知:总体均值3.30kg,样本数量35,样本均值3.42kg,标准差0.40kg。问:样本均值与总体均值是否有差异?
      # 
      # 提出原假设和备择假设:
      # H0: 样本均值与总体均值相等,无差异
      # H1: 样本均值与总体均值不相等,存在差异
      from scipy.stats import ttest_1samp
      from scipy import stats
      
      # 1. 生成均值为3.42,标准差为0.40的样本
      samp = stats.norm.rvs(loc=3.42, scale=0.40, size=35)
      print(f"samp's type is {type(samp)}, size = {len(samp)}, mean = {samp.mean()}, std = {samp.std()}")
      # out: samp's type is <class 'numpy.ndarray'>, size = 35, mean = 3.3751406109024398, std = 0.3993899466032266
      
      # 2. 第一个参数是样本数据,第二个参数是已知总体均数
      t, p = ttest_1samp(samp, 3.42)
      print(f"t = {t}, p = {p}")
      # t = -1.2655105930679713, p = 0.21429231177437397
      
      # 结论:p = 0.214 > 0.05,表明差异无统计学意义,按 α = 0.05的水准接受H0,
      # 即根据现有的样本信息,尚不能认为样本均值与总体均值存在差异
      

三、独立样本t检验

  • 应用场景

    比较两不相关的样本之间的均数是否存在差异。若两总体的方差相等,即方差齐性,则进行独立样本t检验,否则进行近似t检验

  • 原假设与备择假设

    • H0: 两组样本之间的均数相等
    • H1: 两组样本之间的均数不相等
  • 例子

    1. 某项研究评估低氧环境(模拟高原环境)对运动者心肌血流量的影响,将17名男性志愿者随机分成两组,分别在正常含氧环境(正常组)和低氧环境(低氧组)中测定运动后的心肌血流量。问两种环境中运动者的心肌血流量是否有差异

      # 原假设与备择假设
      # H0: 两种环境中运动者的心肌血流量的总体均数相同
      # H1: 两种环境中运动者的心肌血流量的总体均数不同
      from scipy import stats
      from scipy.stats import ttest_ind
      import numpy as np
      
      normal_group = np.array([3.5, 3.1, 3.1, 2.7, 2.5, 2.3, 2.3, 2.2, 2.2])
      hypoxia_group = np.array([6.4, 5.7, 5.6, 5.3, 5.1, 4.9, 4.7, 3.5])
      
      # 进行levene检验(检验方差齐性)
      _, levene_p = stats.levene(normal_group, hypoxia_group)
      print(f"levene_p = {levene_p}")
      # levene_p = 0.31920582497946387
      
      if levene_p > 0.05: 
          t, p = ttest_ind(normal_group, hypoxia_group, equal_var=true)
      else:
          t, p = ttest_ind(normal_group, hypoxia_group, equal_var=False)
      
      print(f"t = {t}, p = {p}")
      # t = -7.578738236840621, p = 1.6655366374516882e-06
      
      # 结论:p = 1.665e-06 < 0.05, 说明差异具有统计学意义,按 α = 0.05 的水准拒绝H0,
      # 即认为两种环境中运动者的心肌血流量存在差异
      
      

四、 配对样本t检验

  • 应用场景

    检验两相关样本的均数所代表的未知总体均数是否有差异

  • 原假设与备择假设

    • H0: 两组样本之间的均数相等
    • H1: 两组样本之间的均数不相等
  • 例子

    1. 某项研究评估咖啡因对运动者的心肌血流量的影响,先后测定了12名男性志愿者饮用咖啡前后运动状态下的心肌血流量。问饮用前后运动者的心肌血流量有无差异

      # 原假设与备择假设
      # H0: 饮用前后运动者的心肌血流量无差异
      # H1: 饮用前后运动者的心肌血流量有差异
      from scipy.stats import ttest_rel
      import numpy as np
      
      before = np.array([4.8, 5.1, 6.4, 5.7, 5.6, 5.3, 5.1, 4.9, 4.7, 3.5, 5.2, 5.3])
      after = np.array([4.8, 4.9, 4.5, 5.4, 4.7, 3.8, 4.1, 3.2, 3.0, 3.2, 5.3, 5.1])
      
      t, p = ttest_rel(before, after)
      print(f"t = {t}, p = {p}")
      # t = 3.7398870259524446, p = 0.0032668229904865296
      
      # 结论:p = 0.003< 0.05, 说明差异具有统计学意义,按 α = 0.05 的水准拒绝H0,
      # 即认为饮用前后运动者的心肌血流量有差异
      

相关文章

  • 利用Python进行t检验

    t检验主要用于检验计量资料(连续变量)的两组均值是否存在差异 一、t检验介绍 无论是哪种t检验,都有以下的基本前提...

  • t检验算法及其在R语言中的实现

    定义及分类 在进行 t 检验之前让我们先看看它的定义:t 检验法就是在假设检验时利用 t 分布进行概率计算的检验方...

  • Stata系列-如何进行多元回归分析

    进行之前补充两个背景知识: t检验t检验是检验解释变量的显著性,t检验的原假设为:某一解释变量的系数为0我们进行t...

  • 数据分布及假设检验-python

    利用python来对数据分布进行描述分析和假设检验 数据选自Journal of the American Med...

  • SPSS数据分析中的独立样本T检验

    上一次我们说到了如何对样本进行单样本T检验,知道了如何通过单样本T检验来对数据进行分析。今天我们继续来看看T检验中...

  • 如何选择T检验?

    内容目录 t 检验分类配对 t 检验(非独立t检验)非配对 t 检验(独立t检验)单/双侧 t 检验选择 小结: ...

  • T检验

    T检验公式:t=(Xaver-Uaver)/(Sdev/sqrt(n-1))R python C++的 stude...

  • 怎么理解P值

    在进行假设检验过程中,包括t检验,F检验,非参数检验以及卡方检验等,最后均是通过P值是否大于0.05或0.01进行...

  • 15-假设检验之F检验

    F检验(又称为方差齐性检验)主要对于方差齐性或方差同质性进行检验。 独立样本T检验前需要进行方差齐性检验,F检验的...

  • SPSS数据分析中的配对样本T检验

    之前的文章中我们了解了如何对样本进行单样本T检验以及独立样本T检验。今天我们继续来看看T检验中的最后一位成员—配对...

网友评论

      本文标题:利用Python进行t检验

      本文链接:https://www.haomeiwen.com/subject/saaxlrtx.html