python - 对于 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))
结果:
解决方案
是的,非常大的 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)
推荐阅读
- sql - sql根据特定列选择唯一行
- django - 如何在 Djongo 的模型中定义 mongodb ArrayField
- tensorflow - 从训练有素的 Keras 模型打印结果概率
- sql - 如何分隔逗号分隔值并获取 SQL 中列的聚合?
- javascript - 每当我 ping 我的机器人时,它都会将 API 延迟显示为 NaNms
- android - Huawei ML Kit Text to Speech 音频时长
- java - 使用 JWT 过滤器时如何正确编写 WebSecurityConfigurerAdapter?
- android - 如何在 ndk 工具链中实现 malloc_trim(0)?
- laravel - 单击部分饼图的一部分时,我有什么方法可以过滤表中的数据?拉拉维尔
- aws-sdk-js - 要求(“@aws-sdk/client-redshift-data”);失败