首页 > 解决方案 > 对于 scipy.stats.f_oneway 中的 F 值,“inf”是什么意思?

问题描述

我运行了单向方差分析,有些组的 F 值是“inf”,p 值是“0.000000e+00”。这是否意味着差异显着?

我使用 groupby 分隔数据框并循环通过示例代码:

from scipy import stats

c_jobs_anova = []

for name_group in c_jobs.groupby(['Name']):
    samples = [condition[1] for condition in name_group[1].groupby('Condition')['Value']]
    f_value, p_value = stats.f_oneway(*samples)
    print('Group: {}, F value: {:.3f}, p value: {:.3f}'.format(name_group[0], f_value, p_value))
    c_jobs_anova.append((name_group[0], f_value, p_value))

结果:

在此处输入图像描述

标签: pythonpandasscipystatisticsanova

解决方案


是的,非常大的 F 统计值表明显着性很高,正如 p 被报告为 0 所证明的那样。从数学上讲,如果没有组内变异性,F 会出现无穷大,例如,

>>> stats.f_oneway([2, 2, 2], [1, 1, 1])
F_onewayResult(statistic=inf, pvalue=0.0)

如果与组间变异性相比,组内变异性非常小,则此结果也是可能的,从而导致数值溢出。

>>> stats.f_oneway([2, 2, 2], [1, 1, 1.00000001])
F_onewayResult(statistic=inf, pvalue=0.0)

推荐阅读