假设检验原理:https://baike.baidu.com/item/%E5%81%87%E8%AE%BE%E6%A3%80%E9%AA%8C/638320
原假设H0:一般是我们不希望成立的情况
备择假设H1:意义在于当原假设被拒绝时供采用
检验水准:常用α表示,指检验假设H0本来成立,却拒绝H0的概率大小,常用α=0.05
单样本t检验
1 import pandas as pd 2 from statsmodels.stats import weightstats as ws 3 4 ccss = pd.read_excel(r"E:360DownloadsSoftware ableauCCSS_Sample.xlsx") 5 6 des = ws.DescrStatsW(ccss.query("s0=='广州' & time==200704").index1)
des.mean # 计算均数
97.16472701710536
des.tconfint_mean() # 计算均数的95%可信区间
(93.03590418536487, 101.29354984884586)
des.ttest_mean(100) # 计算单样本双侧t检验,-1.3625667518512996 t值, 0.17611075148299993 p值,99 自由度
(-1.3625667518512996, 0.17611075148299993, 99.0)
des.ttest_mean(100, 'smaller') # 单样本t检验,需要指定比均值大还是小
(-1.3625667518512996, 0.08805537574149996, 99.0)
两样本t检验
# 两样本t检验,即两样本是否来自同一个总体 d1 = ws.DescrStatsW(ccss.index1[ccss.s7=='未婚']) d2 = ws.DescrStatsW(ccss.index1[ccss.s7=='已婚']) comp = ws.CompareMeans(d1, d2) comp.ttest_ind()
(2.4052613760094634, 0.01632072178933914, 1131.0)
comp.ttest_ind(usevar="unequal") # 如果方差不齐
(2.4669071564965956, 0.013870360692359867, 690.0875759383671)
comp.ttost_ind(0, 3) # 检查均值差等于和等于3,第一个0.5731764533402571,将两组中p值较大的作为总的p值
(0.5731764533402571, ((2.4052613760094634, 0.00816036089466957, 1131.0), (0.18450919322007547, 0.5731764533402571, 1131.0)))
comp.tconfint_diff() # 均值差的可信区间
(0.5987129330356953, 5.899791658291523)
配对t检验
# 配对t检验,比较同一个对象在实验前后,或者同一个对象在不同时间阶段的测量结果;将受试对象按情况相近者配对(或者自身配对),分别给予不同处理 ccss_p = pd.read_excel(r"E:360DownloadsSoftware ableauCCSS_Sample.xlsx",sheet_name='CCSS_pair') des = ws.DescrStatsW(ccss_p.index1 - ccss_p.index1n) des.ttest_mean()
(1.1616334792419984, 0.24856144386191056, 87.0)