参数估计和假设检验也可以扩展到两个总体的情形,主要考察两个总体的参数是否有差异。如:两个高等院校平均录取分数及标准差是否有差异;新开发的减肥药是否有效果,即用药后的人群平均体重是否比用药后的平均体重轻;两个国家之间新生婴儿的那男女比例是否有差异等。
两总体参数的假设检验根据来自总体样本数据的性质不同,分为独立样本和成对样本的统计推断。
独立样本的假设检验
两组样本数据独立:一个样本特征的变动不会影响另一个样本数据特征的变动。
如考察两种不同技术生产的产品是否有差异,通常对两个独立样本的假设检验问题不要求两个样本的样本量相等。
独立样本均值之差的假设检验
主要考察两个总体的均值是否有差异或检验其差异的具体数值,一般假定两个总体俯冲正态分布,使用t统计量进行检验。
提出问题:在a=0.01下,两种新工艺对电池续航时间是否有显著差异?
设u1和u2分别表示表示两种工艺下所有电池的总体平均续航时间,原假设和备择假设如下:
H0:u1-u2=0,H1:u1-u2 != 0
进行两独立样本均值的t检验,需要事先对两样本总体方差是否相等(方差齐性)进行检验,scipy.stats模块中的bartlett函数和levene函数均可进行:
from scipy import stats
stats.bartlett(battery[battery['tech']==1]['Endurance'],battery[battery['tech']==2]['Endurance'])
BartlettResult(statistic=3.3228777945188033, pvalue=0.0683221369421403)
stats.levene(battery[battery['tech']==1]['Endurance'],battery[battery['tech']==2]['Endurance'])
LeveneResult(statistic=1.543714821763612, pvalue=0.21833338426451232)
上述两种方差同质性检验的原假设均是样本所来自的总体方差相等,备择假设是总体方差不等。
检验结果表明,在a=0.01下,两种检验方法的p值均大于a,无法拒绝原假设,可以认为两总体方差具有同质性,即二者总体方差相等。
scipy.stats中的ttest_ind函数可进行两独立样本的t检验
stats.ttest_ind(battery[battery['tech']==1]['Endurance'],battery[battery['tech']==2]['Endurance'],equal_var=True)
Ttest_indResult(statistic=-2.9908265619140626, pvalue=0.0038722567339729993)
结果显示,P值为0.0039<<0.01,因此可以在a=0.01条件下拒绝原假设,即拒绝两种工艺生产的电池续航时间相等的假设,认为两种工艺生产的电池续航时间有差异。
为方便的进行独立样本检验,scipy.stats模块的ttest_inde_from_stast(mean1,std1,nobs1,mean2,std2,nobs2,equal_var=True)函数,可以直接使用样本统计量而不是原始数据进行检验
df1 = battery[battery['tech']==1]['Endurance']
df2 = battery[battery['tech']==2]['Endurance']
stats.ttest_ind_from_stats(df1.mean(),df1.std(),len(df1),df2.mean(),df2.std(),len(df2))
Ttest_indResult(statistic=-2.9908265619140626, pvalue=0.0038722567339729993)
可见检验结果与上面一致。
statsmodels中的stats.ttest_ind()函数来解决
import statsmodels.api as sm
sm.stats.ttest_ind(battery[battery['tech']==1]['Endurance'],battery[battery['tech']==2]['Endurance'],
alternative='two-sided',usevar='pooled',value=0)
#usevar参数pooled,unequal用于指定总体方差是否相等,value参数用户指定原假设取等号时的检验值
(-2.9908265619140626, 0.0038722567339729993, 68.0)
结果中依次是:t统计量值,P值,计算t统计量的自由度。
续前例,现在要判断工艺B的电池续航时间比工艺A长0.1小时。试问能够在显著性水平a=0.05的条件下进行检验?
提出原假设和备择假设:H0:u1-u2>=-0.1,H1:u1-u2<-0.1
sm.stats.ttest_ind(battery[battery['tech']==1]['Endurance'],battery[battery['tech']==2]['Endurance'],
alternative='smaller',usevar='pooled',value=0.1)
(-4.1539257804361975, 4.6666126944336435e-05, 68.0)
看见在a=0.05下,p值<a,可以认为工艺B生产的电池续航时间比工艺A长0.1小时。
细节注意了
如果原假设和备择假设分别是 H0:u2-u1<=0.1,H1:u2-u1>0.1
独立样本比例之差的假设检验
主要考察两个总体比例是否具有差异或检验其差异的具体数值。这里所谓的比例仍然值总体只具备两种属性,其中具备某种属性的个体数目占总体数目的比重,即假定两个总体都服从二项分布,通常用Z统计量进行检验。
提出问题:在0.05水平下,检验两本时尚杂志的读者性别的差异(n=80)
magzine = pd.read_csv('magzine.csv')
magzine.name = magzine.name.astype('category')
magzine.name.cat.categories = ['Fashion','Cosmetic']
magzine.name.cat.set_categories = ['Fashion','Cosmetic']
magzine.gender = magzine.gender.astype('category')
magzine.gender.cat.categories = ['Male','Female']
magzine.gender.cat.set_categories = ['Male','Female']
magzine.T
本例主要考察女性读者的比例,p1和p2分别表示两本杂志读者的总体女性比例。
这里计算得出Fashion杂志的女性占该杂志所有读者比例为0.4,Cosmetic杂志的女性占该杂志所有读者比例为0.7,那么二者差异是否超过了0.3呢?提出原假设和备择假设:
H0:p1-p2<=-0.3;H1:p1-p2>-0.3