0

我正在尝试执行 Tukey 的 HSD 测试,以查看我的数据中多个组的平均值是否存在显着差异。例如,在这里我试图查看“类”组的变量“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, missing = 'drop')

但是,我收到一条错误消息,提示“pairwise_tukeyhsd() 有一个意外的关键字参数‘缺失’”。

4

2 回答 2

1

我最终创建了一个新的数据框,过滤了仅代表两个变量的列,然后删除了缺失值。然后,我进行了 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)
于 2019-08-05T17:11:23.633 回答
0

尝试这个:

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)
于 2020-07-09T22:47:55.843 回答