python实现levene检验样本数据,之后实现独立样本T检验

      统计学中有很多非常经典的样本检验方法,在具体的使用场景中我们要依据具体的情况来选择合适的样本检验方法以便于得到正确的实验结果。

      最近正好的用到了T检验,这里简单贴一下百度百科中对于T检验的定义和介绍:

           

     从上面的介绍中我们不难发现:T检验是用于比较两个样本平均数的差异性的,当然它有一个适用性的前提约束条件就是样本的分布为正态分布,这就要求我们在使用该方法的时候需要先对样本的分布等情况做一个检验,python的Scipy模块中已经封装好了相应地函数方法,已经能够满足我们的需求,在这里简单进行实践,具体内容如下:
 

#!usr/bin/env python
#encoding:utf-8
from __future__ import division

'''
__Author__:沂水寒城
功能:python 实现独立样本检验
'''


import sys
import xlrd
import numpy as np
import scipy.stats as stats
import scipy.optimize as opt

reload(sys)
sys.setdefaultencoding("utf-8")
 
 
def readOneExcelData(datapath='before/BMI.xls'):
    '''
    读取单个 Excel 中的数据
    获取整行和整列的值(返回数组)
    table.row_values(i)
    table.col_values(i)
    '''
    workbook=xlrd.open_workbook(datapath,'rb')
    table=workbook.sheets()[0]
    row_num,col_num=table.nrows,table.ncols
    data_list=[]
    for i in range(1,row_num):  #去除第一行的标题
        data_list.append(table.row_values(i)[0])
    print 'data_list_length: ',len(data_list)
    one,two=data_list[0:36],data_list[36:]
    print 'one_length: ',len(one)
    print 'two_length: ',len(two)
    return one,two


def leveneTest(one,two):
    '''
    当不确定两总体方差是否相等时,应先利用levene检验,检验两总体是否具有方差齐性
    p值远大于0.05,认为两总体具有方差齐性
    如果两总体不具有方差齐性,需要将equal_val参数设定为“False”
    需注意的情况:
    如果两总体具有方差齐性,错将equal_var设为False,p值变大
    两总体方差不等时,若没有将equal_var参数设定为False,则函数会默认equal_var为True,这样会低估p值
    '''
    res=stats.levene(one,two)
    statistic,pvalue=res
    print 'statistic: ',statistic
    print 'pvalue: ',pvalue
    return statistic,pvalue


def T_TestDouble(one,two):
    '''
    两独立样本t检验-ttest_ind
    '''
    statistic,pvalue=leveneTest(one,two)
    if pvalue>0.05:
        T_statistic,T_pvalue=stats.ttest_ind(one,two,equal_var=True)
    else:
        T_statistic,T_pvalue=stats.ttest_ind(one,two,equal_var=False)
    print '=*-'*30
    print 'T_statistic: ',T_statistic
    print 'T_pvalue: ',T_pvalue




if __name__=='__main__':
    one,two=readOneExcelData(datapath='before/50m.xls')
    T_TestDouble(one,two)

    one,two=readOneExcelData(datapath='before/yangwo.xls')
    T_TestDouble(one,two)

         结果如下:
 

data_list_length:  72
one_length:  36
two_length:  36
statistic:  0.6963738019852161
pvalue:  0.4068437373713307
=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-
T_statistic:  -0.27800065992812495
T_pvalue:  0.781831335343451
data_list_length:  72
one_length:  36
two_length:  36
statistic:  2.233199944804748
pvalue:  0.13956829000621795
=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-
T_statistic:  0.08430397488762228
T_pvalue:  0.9330553926737493

        这里的结果中我们只需要主要关注P值就可以了,P<0.05认为有显著性差异,P>0.05认为无显著性差异。

      

  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Together_CZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值