使用 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 任何结果。
我有 运行 使用 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 任何结果。