首页 > 解决方案 > 使用 statsmodel 从 MANOVA 测试结果中仅提取 p 值

问题描述

我已经使用 statsmodel 运行了 MANOVA 测试,如下所示:

manova = MANOVA(endog=X, exog=y)

print(manova.mv_test())

结果我得到了下表:

                 Multivariate linear model
============================================================
                                                            
------------------------------------------------------------
           x0           Value  Num DF  Den DF F Value Pr > F
------------------------------------------------------------
          Wilks' lambda 0.7762 5.0000 28.0000  1.6148 0.1887
         Pillai's trace 0.2238 5.0000 28.0000  1.6148 0.1887
 Hotelling-Lawley trace 0.2884 5.0000 28.0000  1.6148 0.1887
    Roy's greatest root 0.2884 5.0000 28.0000  1.6148 0.1887
============================================================

我的问题是,我如何只提取 p 值?在这篇文章之后,我尝试过:

 print(manova.mv_test().results['x0']['stat'].values['Hotelling-Lawley trace',4])

但我得到了索引错误,而且我不确定我是否理解它背后的逻辑。

IndexError:只有整数、切片 ( :)、省略号 ( ...)、numpy.newaxis ( None) 和整数或布尔数组是有效的索引

我的最终目标是仅将 p 值保存为新变量,例如从表中“提取”p 值。

也许了解这个表是如何生成的也可能会有所帮助,因为我不确定这是什么(它不是熊猫而且看起来不像矩阵,所以我怎么能从那里切任何东西?)

标签: pythonslicestatsmodelsp-valuemanova

解决方案


我能够用这条线解决同样的问题,在你的情况下应该是:

x = pd.DataFrame((manova.mv_test().results['x0']['stat']))

现在您可以选择任何结果。


推荐阅读