2010-05-26 1 views
6

Мне хотелось бы узнать способ выполнения ANCOVA (анализ ковариации) с использованием Python со скупой. Это в основном статистическое сравнение регрессионных линий. Я знаю, что Python может делать ANOVA, а также может использовать линию регрессии с Scipy.stats. Я не уверен, как собрать их вместе, чтобы получить эффективный ANCOVA, хотя, если это возможно.ANCOVA в Python со статистикой Scipy/Numpy

ответ

10

ANCOVA может быть выполнено с регрессией a с использованием фиктивных переменных в матрице проектирования для эффектов, зависящих от категориальной переменной.

Простой пример на http://groups.google.com/group/pystatsmodels/browse_thread/thread/aaa31b08f3df1a69?hl=en с помощью класса МНК из scikits.statsmodels

Соответствующая часть строительства проектной матрицы хд включает в себя номера/метки группы, x1 непрерывно объясняющей переменной

>>> dummy = (xg[:,None] == np.unique(xg)).astype(float) 
>>> X = np.c_[x1, dummy[:,1:], np.ones(nsample)] 

Оцените модель

>>> res2 = sm.OLS(y, X).fit() 
>>> print res2.params 
[ 1.00901524 3.08466166 -2.84716135 9.94655423] 
>>> print res2.bse 
[ 0.07499873 0.71217506 1.16037215 0.38826843] 
>>> prstd, iv_l, iv_u = wls_prediction_std(res2) 

«Тест гипотеза, что все группы имеют такой же перехват»

>>> R = [[0, 1, 0, 0], 
...  [0, 0, 1, 0]] 

>>> print res2.f_test(R) 
<F test: F=array([[ 91.69986847]]), p=[[ 8.90826383e-17]], 
df_denom=46, df_num=2> 

сильно отклонены, поскольку различия в перехвате очень большой

Update (два с половиной года спустя):

scikits.statsmodels имеет был переименован в statsmodels

и на вопрос:

С последним выпуском статмоделей удобнее использовать формулы для определения категориальных эффектов и эффектов взаимодействия. statsmodels использует patsy для обработки формул и создает проектные матрицы.

Дополнительная информация доступна по ссылкам на документацию по статистическим данным в https://stackoverflow.com/a/19495920/333700

 Смежные вопросы

  • Нет связанных вопросов^_^