如何提取stats.ttest_ind返回结果中的df值?
解决独立样本t检验结果中df无法提取的问题
问题原因
你打印出的TtestResult是scipy返回的自定义结果对象,它的打印展示会显示statistic、pvalue、df三个字段,但该对象仅将前两个字段设为可索引/解包的元素,df是对象的属性而非可迭代元素,所以直接用索引或三元解包会报错。
解决方法
1. 直接通过属性访问提取df
这是最直接的方式:
a = list(range(0, 10)) b = list(range(20, 40, 2)) out = stats.ttest_ind(a, b) # 提取各值 t_stat = out[0] # 或 out.statistic pvalue = out[1] # 或 out.pvalue df = out.df # 关键:通过属性名访问df
2. 一次性获取所有三个值(避免重复调用函数)
如果想一次性拿到三个结果,不要直接解包,而是通过对象属性赋值:
result = stats.ttest_ind(a, b) t_stat, pvalue, df = result.statistic, result.pvalue, result.df
补充说明
scipy设计这个结果对象时,默认将常用的统计量和p值设为可迭代元素,自由度作为附加属性存在,所以即便打印时能看到df,也不能用索引或三元解包的方式获取,必须通过.访问属性。
内容的提问来源于stack exchange,提问作者MaaikevR
相关产品推荐
相关产品推荐

