我正在寻找statsmodels MANOVA实现的示例。我无法制作Statsmodels website for MANOVA的首尾。我已经达到了:
endog, exog = np.asarray(pre_post[feats_list]), np.asarray(pre_post[features])
man = sm.MANOVA(endog,exog).fit()
但是使用.fit()我得到一个错误:
NotImplementedError:
如果我在.fit()中输入任何形式的信息,它会告诉我参数太多。
TypeError: fit() takes 1 positional argument but 2 were given
我确实读过this post,并设法复制了相同的错误
man = sm.MANOVA(endog,exog)
man.mv_test()
但是似乎那里也没有解决方案。
就编程问题而言,我知道这是一种基本的知识,但是我想向任何能够提供关于如何使MANOVA工作以及如何在模型拟合后如何从模型中获得结果的见解的人敬上。 它似乎不是Python中流行的软件包,我在网上找不到任何示例。非常感谢。
答案 0 :(得分:0)
我只花了大约一个小时来了解他们的文档。设法以正确的格式获取我的数据,只是获取了NotImplementedError
...该模块尚未实现,尽管它假装是..
在编辑中添加: 查看statsmodels glm。可以非常类似地使用它。这是docs。
答案 1 :(得分:0)
这是一个小例子,展示了如何使用该功能!
import numpy as np
from statsmodels.multivariate.manova import MANOVA
n_samples = 20
n_dim = 5
n_classes = 3
X = np.random.randn(n_samples, n_dim)
y = np.random.randint(n_classes, size=n_samples)
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.3681 4.0000 16.0000 6.8678 0.0020
Pillai's trace 0.6319 4.0000 16.0000 6.8678 0.0020
Hotelling-Lawley trace 1.7170 4.0000 16.0000 6.8678 0.0020
Roy's greatest root 1.7170 4.0000 16.0000 6.8678 0.0020
============================================================
有关显示如何使用from_formula
界面的示例,请参见此blog post。