使用 statsmodel 从 MANOVA 测试结果中仅提取 p 值

Extract only p-value from MANOVA test result with statsmodel

我有 运行 使用 statsmodel 的 MANOVA 测试如下:

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

print(manova.mv_test())

结果我得到了以下 table:

                 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 值? 以下 this post 我试过了:

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

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

IndexError: only integers, slices (:), ellipsis (...), numpy.newaxis (None) and integer or boolean arrays are valid indices

我的最终目标是仅将 p 值保存为新变量,例如从 table.[=18 中“提取”p 值=]

也许理解这个 table 是如何生成的也有帮助,因为我不确定这是什么(它是 table 而不是 pandas 而且看起来像矩阵,所以我怎样才能从那里切出任何东西?)

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

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

现在您可以 select 任何结果。