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