Python玩转数据分析——T检验

概念

T检验,也称 student t 检验 ( Student’s t test ) ,用来比较两个样本的均值差异是否显著,通常用于样本含量较小 ( n < 30 ) 的样本。分为单样本 t 检验、两独立样本 t 检验和两配对样本 t 检验。

适用条件

  1. 已知一个总体均数;
  2. 可得到一个样本均数及该样本标准差;
  3. 样本来自正态或近似正态总体。

单样本 t 检验

假设现在有10个男生的体重数据(单位:千克),问这些男生体重的均值与70千克是否有显著差异(显著性水平为0.05)?代码如下:

weight=[53,75,69,67,58,64,70,72,65,74]
def t_1samp(list_c,u):
    lst=list_c.copy()
    n=len(lst)
    s=np.std(lst)*(n**0.5)/(n-1)**0.5
    t=(np.mean(lst)-u)/(s/(n)**0.5)
    sig=2*stats.t.sf(abs(t),n-1)
    dic_res=[{'t值':t,'自由度':n-1,'Sig.':sig,'平均值差值':np.mean(lst)-u}]
    df_res=pd.DataFrame(dic_res,columns=['t值','自由度','Sig.','平均值差值'])
    return df_res
t_1samp(weight,70)

结果如下:
在这里插入图片描述
由于p值 Sig.= 0.170 > 0.05 ,故可以认为这些男生的体重均值与70千克无明显差异。

两独立样本 t 检验

假设现在还有另外10个女生的体重数据,问上一组男生的体重和这一组女生的体重有无明显差异(显著性水平为0.05)。代码如下:

weight_f=[42,44,54,62,58,57,63,55,57,48]
def t_2samp(list_c1,list_c2):
    lst1,lst2=list_c1.copy(),list_c2.copy()
    n1,n2=len(lst1),len(lst2)
    sig_homovar=stats.levene(lst1,lst2)[1]
    var1,var2=np.var(lst1)*n1/(n1-1),np.var(lst2)*n2/(n2-1)
    var12=((n1-1)*var1+(n2-1)*var2)/(n1+n2-2)
    t_homo=(np.mean(lst1)-np.mean(lst2))/(var12*(1/n1+1/n2))**0.5
    df_homo=n1+n2-2
    sig_homo=2*stats.t.sf(abs(t_homo),df_homo)
    t_nothomo=(np.mean(lst1)-np.mean(lst2))/(var1/n1+var2/n2)**0.5
    df_nothomo=(var1/n1+var2/n2)**2/((var1/n1)**2/n1+(var2/n2)**2/n2)
    sig_nothomo=2*stats.t.sf(abs(t_nothomo),df_nothomo)
    df_res=pd.DataFrame(index=['假定等方差','不假定等方差'],columns=['显著性','t值','自由度','Sig.'])
    df_res['显著性']=[sig_homovar,'-']
    df_res['t值']=[t_homo,t_nothomo]
    df_res['自由度']=[df_homo,df_nothomo]
    df_res['Sig.']=[sig_homo,sig_nothomo]
    return df_res
t_2samp(weight,weight_f)

结果如下:
在这里插入图片描述
因为方差齐性检验的显著性大于0.05,故可以认为两组独立样本等方差,其p值 Sig. = 0.001 < 0.05 ,故可以认为男生的体重和女生的体重有显著差异。

两配对样本 t 检验

假设现在这组男生开始用某种减肥方法减肥,一个星期后测得各自体重,问这种减肥方法效果是否显著(显著性水平为0.05)。代码如下:

weight2=[54,73,65,65,59,63,68,70,61,67]
diff=[weight[i]-weight2[i] for i in range(len(weight))]
t_1samp(diff,0)

结果如下:
在这里插入图片描述
由于p值 Sig. = 0.0174 < 0.05 ,故可以认为男生的减肥方法效果显著。

你可能感兴趣的:(python,t检验,python,t检验)