NaN 出现在 Python 中 Tukey 的 HSD 的结果中

NaN appearing in results for a Tukey's HSD in Python

我正在尝试执行 Tukey 的 HSD 测试,看看我的数据中几组的平均值是否存在显着差异。例如,在这里我试图查看组 'Class' 的变量 'acad_se_communicate_needs' 是否存在均值差异。但是,我在结果中遇到了 NaN 值。这是怎么回事,我该如何解决?

我已经使用 statsmodels 函数来执行此操作。我避免了需要将数据拆分为每个组的不同数据帧的方法,因为我必须对多个变量执行此分析。还有,那些方法对我来说真的很难理解。

from statsmodels.stats.multicomp import pairwise_tukeyhsd
from statsmodels.stats.multicomp import MultiComparison

mc = MultiComparison(clean['acad_se_communicate_needs'], clean['Class'])
result = mc.tukeyhsd()
print(result)

我的输出如下...nan 无处不在!

Multiple Comparison of Means - Tukey HSD,FWER=0.05
==============================================
 group1    group2  meandiff lower upper reject
----------------------------------------------
Freshman   Junior    nan     nan   nan  False 
Freshman   Senior    nan     nan   nan  False 
Freshman Sophomore   nan     nan   nan  False 
 Junior    Senior    nan     nan   nan  False 
 Junior  Sophomore   nan     nan   nan  False 
 Senior  Sophomore   nan     nan   nan  False 
----------------------------------------------

有 nan 值(缺失)。我尝试了一些代码来删除缺失值。该代码看起来像
sm.stats.multicomp.pairwise_tukeyhsd('acad_se_communicate_needs','Class', alpha=0.05, 缺失 = 'drop')

但是,我收到一条错误消息 "pairwise_tukeyhsd() got an unexpected keyword argument 'missing'"。

我最终创建了一个新的数据框,过滤了仅代表两个变量的列,然后删除了缺失值。然后,我进行了Tukey的HSD测试。

    cleanTukey1 = clean.filter(items=['acad_se_communicate_needs', 'Class']).dropna()
    from statsmodels.stats.multicomp import pairwise_tukeyhsd
    from statsmodels.stats.multicomp import MultiComparison
    mc1 = MultiComparison(cleanTukey1['acad_se_communicate_needs'], cleanTukey1['Class'])
    result1 = mc1.tukeyhsd()
    print(result1)
    print(mc1.groupsunique)

试试这个:

import pandas
import statsmodels.formula.api as smf
import statsmodels.stats.multicomp as multi 
test = <df>.filter(items=['<variable 1>', '<variable 2>']).dropna()
mc1 = multi.MultiComparison(test['<quantitative variable>'], test['<categorical variable>'])
result1 = mc1.tukeyhsd()
print(result1)