anova_lm() python: на каком типе модели это работает?

Я новичок в Python и пытаюсь перейти на уникальную платформу Python с платформ Matlab+R.

Мне нужно сделать регрессию моих данных.

Прочитав, что доступно в Интернете - к сожалению, пока не так много, как для 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)

все три дают мне похожие результаты. Что я действительно хочу знать, так это существует ли функция, похожая на anova() из R (с хорошей таблицей, обобщающей сравнение разных моделей или внутри модели для разных переменных, как показано здесь 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, но это может занять некоторое время.


person claude    schedule 05.11.2014    source источник


Ответы (1)


Я понял, почему это не работает на всех моделях.

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

person claude    schedule 05.11.2014