Scipy stats.ttest_ind无法获取自由度:文档与实际存在差异?
独立样本t检验(ttest_ind)提取自由度的问题
我在使用Scipy的stats模块中的ttest_ind函数时,想要提取独立样本t检验的自由度信息。根据SciPy v1.11.4官方文档,该函数会返回三个值:
- statistic:t统计量
- pvalue:对应备择假设的p值
- df:计算t统计量时使用的自由度
但运行以下代码时出现错误:
from scipy.stats import ttest_ind # 两组示例数据 group1 = [25, 30, 22, 28, 32] group2 = [18, 24, 20, 26, 19] t_statistic, p_value, degrees_of_freedom = ttest_ind(group1, group2, permutations=None)
报错信息:
ValueError: not enough values to unpack (expected 3, got 2)
问题原因与解决方法
不是文档错误,问题出在参数设置上:ttest_ind函数默认不返回自由度,需要显式设置return_df=True参数,才能获取包含自由度的三元组。修改后的代码如下:
from scipy.stats import ttest_ind group1 = [25, 30, 22, 28, 32] group2 = [18, 24, 20, 26, 19] # 添加return_df=True参数 t_statistic, p_value, degrees_of_freedom = ttest_ind(group1, group2, permutations=None, return_df=True) print(f"自由度: {degrees_of_freedom}")
另外,如果你使用的是SciPy 1.7.0及以上版本,也可以通过设置result=True让函数返回一个TtestResult对象,直接从中提取自由度:
result = ttest_ind(group1, group2, permutations=None, result=True) print(f"自由度: {result.df}")
内容的提问来源于stack exchange,提问作者luifrancgom
相关产品推荐
相关产品推荐

