Python有一个很好的统计推断包。那就是scipy里面的stats.ttest_1samp实现了单样本t检验.
假设检验
假设检验(Hypothesis Testing)是数理统计学中根据一定假设条件由样本推断总体的一种方法,又称统计假设检验。其目的是用来判断样本与样本,样本与总体的差异是由抽样误差引起还是本质差别造成。假设检验不仅在统计学中应用广泛,在实际生活中也尤为重要。它是一种基本的统计推断形式,也是数理统计学的一个重要的分支。基于检验统计量T服从t分布的检验——t检验,亦称student t检验(Student’s t test)。由英国化学家、数学家、统计学家 William Sealy Gosset提出,他于1908年在Biometrika上公布t检验,但因其老板认为其为商业机密而被迫使用笔名(Student),于是就有了student t检验这一名称。其目的是用来判断两类样本在某一变量上的均值差异是否显著。
t检验计算
通过大量资料的调查,得知大学男生近视度数平均为405度,今测量本班男生近视度数分别为:210 150 225 300 270 500 600 300 425 350,已知标准差为150度,试问18信本男生的视力状况是否异常?取显著水平=0.05。
根据数理统计中的假设检验,具体步骤如下:
Step1:根据问题的要求提出原假设和备择假设;
Step2:选取T-统计量;
Step3:在给定的显著水平下,构造拒绝域,求出临界值;
Step4:根据给定的样本计算出统计量的观察值;
Step5:若统计量的观察值落入拒绝域,则拒绝,否则接受。
假设: H0:=0 ,H1: 0
已知X=1/10(210+150+225+300+270+500+600+300+425+350)=333,
计算得到t=1.64,查表得到临界值t/2(10)=2.262,因为1.64<2.262,所以接受,认为18信本男生的视力状况没有异常。
Python实现过程
1.0
from scipy import stats as ss
arr=[210, 150, 225, 300, 270, 500, 600, 300, 425, 350];
ss.ttest_1samp(arr,405 )
2.0
增加注释,增加平均值的计算,增加伴随概率的判断。
缺少t统计量的计算,代码需要一行一行计算,否则失去部分结果
from scipy.stats import ttest_1samp
import numpy as np #导入数据包
arr = [210, 150, 225, 300, 270, 500, 600, 300, 425, 350]; #信本男视力情况
arr_mean = np.mean(arr) #计算平均值
arr_mean #输出
tset, pval = ttest_1samp(arr, 405)
print("p-values",pval)
if pval < 0.05: # alpha value is 0.05 or 5%
print(" 不接受")
else:
print("接受")
3.0
增加t统计量的计算。
代码需要一行一行计算,否则失去部分结果。
from scipy.stats import ttest_1samp
import numpy as np #导入数据分析包
arr = [210, 150, 225, 300, 270, 500, 600, 300, 425, 350]; #18信本男视力数据
arr_mean = np.mean(arr) #计算平均值
arr_mean #输出平均值
ttest_1samp(arr, popmean = 405) #计算单个样本的t检验
#前一个为t统计量,后一个为伴随概率
print("p-values",pval) #输出伴随概率
if pval < 0.05: # alpha value is 0.05 or 5%
print(" 不接受")
else:
print("接受")
4.0
可以直接输出结果。
from scipy.stats import ttest_1samp #调入单样本t检验包
import numpy as np #导入计算模块
arr = [210, 150, 225, 300, 270, 500, 600, 300, 425, 350]; #18信本男视力数据
arr_mean = np.mean(arr) #计算平均值
print("arr_mean=", arr_mean) #输出平均值
t,p=ttest_1samp(arr, popmean = 405) #计算单个样本的t检验
#前一个为t统计量,后一个为伴随概率
print("t-values=",t) #输出t统计量
print("p-values=",p) #输出伴随概率
if p < 0.05: # 伴随概率p与显著水平α比较
print("差异显著")
else:
print("差异不显著")
结果分析
由上述输出结果得到伴随概率为0.136,当显著水平取0.05时,伴随概率大于0.05,所以认为18信本男生的视力与大学男生平均视力405,没有显著差异。认为18信本男生和其他大学男生的视力状况相比没有异常。