"inf"对scipy.stats.f_oneway中的F值意味着什么?

What does "inf" mean for F value in scipy.stats.f_oneway?

我 运行 单向方差分析,有些组的 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))

结果:

是的,非常大的 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)

'inf' 描绘了 python 中的无限值,如

x=-float('inf') //for min infinity value
y=float('inf') //for max infinity value