如何在 python 中进行假设检验(附示例)
假设检验是一种正式的统计检验,我们用它来拒绝或未能拒绝统计假设。
本教程介绍如何在 Python 中执行以下假设检验:
- 样本 t 检验
- 两样本 T 检验
- 配对样本 t 检验
我们走吧!
示例 1:Python 中的 t 检验示例
单样本 t 检验用于测试总体平均值是否等于某个值。
例如,假设我们想知道某种乌龟的平均重量是否为 310 磅。
为了测试这一点,我们收集了一个简单的随机海龟样本,其权重如下:
重量: 300, 315, 320, 311, 314, 309, 300, 308, 305, 303, 305, 301, 303
以下代码展示了如何使用scipy.stats库中的ttest_1samp()函数执行单样本 t 检验:
import scipy.stats as stats #define data data = [300, 315, 320, 311, 314, 309, 300, 308, 305, 303, 305, 301, 303] #perform one sample t-test stats. ttest_1samp (a=data, popmean= 310 ) Ttest_1sampResult(statistic=-1.5848116313861254, pvalue=0.1389944275158753)
t 检验统计量为-1.5848 ,相应的双尾 p 值为0.1389 。
针对特定样本进行 t 检验的两个假设如下:
- H 0 : µ = 310(该种龟的平均体重为 310 磅)
- H A : µ ≠310(平均体重不是310磅)
由于我们的检验的 p 值(0.1389)大于 alpha = 0.05,因此我们无法拒绝检验的原假设。
我们没有足够的证据表明这种特定种类的海龟的平均重量不是 310 磅。
示例 2:Python 中的两样本 t 检验
双样本 t 检验用于检验两个总体的均值是否相等。
例如,假设我们想知道两种不同种类的海龟的平均重量是否相等。
为了测试这一点,我们从每个物种中收集了一个简单的随机样本,其权重如下:
样品1 :300、315、320、311、314、309、300、308、305、303、305、301、303
样品2 :335、329、322、321、324、319、304、308、305、311、307、300、305
以下代码显示了如何使用scipy.stats库中的ttest_ind()函数来执行这两个 t 检验示例:
import scipy. stats as stats #define array of turtle weights for each sample sample1 = [300, 315, 320, 311, 314, 309, 300, 308, 305, 303, 305, 301, 303] sample2 = [335, 329, 322, 321, 324, 319, 304, 308, 305, 311, 307, 300, 305] #perform two sample t-tests stats. ttest_ind (a=sample1, b=sample2) Ttest_indResult(statistic=-2.1009029257555696, pvalue=0.04633501389516516)
t 检验统计量为–2.1009 ,相应的双尾 p 值为0.0463 。
此特定双样本 t 检验的两个假设是:
- H 0 : µ 1 = µ 2 (两个物种之间的平均重量相等)
- H A : µ 1 ≠ µ 2 (两个物种之间的平均重量不相等)
由于检验的 p 值 (0.0463) 小于 0.05,因此我们拒绝原假设。
这意味着我们有足够的证据表明两个物种之间的平均体重不相等。
示例 3:Python 中的配对样本 t 检验
当一个样本中的每个观察值可以与另一个样本中的观察值相关联时,配对样本 t 检验用于比较两个样本的平均值。
例如,假设我们想知道某个训练计划是否能够增加篮球运动员的最大垂直弹跳(以英寸为单位)。
为了测试这一点,我们可以招募 12 名大学篮球运动员作为简单的随机样本,并测量他们每个人的最大垂直弹跳。然后我们可以让每个球员使用一个月的训练计划,然后在月底再次测量他们的最大垂直弹跳。
以下数据显示了每位球员使用训练计划前后的最大跳跃高度(以英寸为单位):
前: 22, 24, 20, 19, 19, 20, 22, 25, 24, 23, 22, 21
之后: 23, 25, 20, 24, 18, 22, 23, 28, 24, 25, 24, 20
以下代码显示了如何使用scipy.stats库中的ttest_rel() 函数来执行此配对样本 t 检验:
import scipy. stats as stats #define before and after max jump heights before = [22, 24, 20, 19, 19, 20, 22, 25, 24, 23, 22, 21] after = [23, 25, 20, 24, 18, 22, 23, 28, 24, 25, 24, 20] #perform paired samples t-test stats. ttest_rel (a=before, b=after) Ttest_relResult(statistic=-2.5289026942943655, pvalue=0.02802807458682508)
t 检验统计量为–2.5289 ,相应的双尾 p 值为0.0280 。
此特定配对样本 t 检验的两个假设是:
- H 0 : µ 1 = µ 2 (使用程序前后跳跃的平均高度相等)
- H A : µ 1 ≠ µ 2 (使用程序前后的平均跳跃高度不相等)
由于检验的 p 值 (0.0280) 小于 0.05,因此我们拒绝原假设。
这意味着我们有足够的证据表明使用训练计划之前和之后的平均跳跃高度并不相等。
其他资源
您可以使用以下在线计算器自动执行各种 t 检验: