我是Python的新手,并尝试从Matlab + R平台过渡到一个独特的平台Python。
我需要对数据进行回归。
在阅读了网上可用的内容之后 - 遗憾的是没有像R一样多 - 我意识到我需要使用以下选项:
import statsmodels.api as sm
import statsmodels.formula.api as smf
mod1 = smf.glm(formula=formula_new, data=dta_new, family=sm.families.Gaussian())
mod2 = smf.ols(formula=formula_new, data=dta_new, family=sm.families.Gaussian())
mod3 = sm.OLS.from_formula(formula=formula_new, data=dta_new)
这三个人给了我类似的结果。
我真正想知道的是,是否存在类似于R的anova()
的函数(有一个很好的表总结了不同模型的比较,或者在不同变量的模型中,如此处所示http://www.r-bloggers.com/r-tutorial-series-anova-tables/)对于任何这些模型选项。
我试图运行
table = sm.stats.anova_lm(modX)
print table
X = 1,2,3,基本上适用于所有模型(那些来自smf。或sm。)但我总是得到同样的错误:
AttributeError: 'OLS'/'GLM' object has no attribute 'model'
使用OLS或GLM,具体取决于型号的类型。
感谢任何输入。我没有正确导入模块吗?我很困惑。
欢迎链接到python的应用程序/示例/教程。
rpy2不是我服务器上的选项,我正在努力安装R3.0,但可能需要一段时间。
答案 0 :(得分:0)
我想为什么它不适用于所有型号。
anova_lm()
需要fit()
属性:
table = sm.stats.anova_lm(modX.fit())
print table
但是,它仅适用于mod2和mod3,因此它不适用于GLM模型。
我在网上发现了一些与此问题相关的信息。希望它很快会扩展到GLM模型。 http://comments.gmane.org/gmane.comp.python.pystatsmodels/11000