ANCOVA в Python со статистикой Scipy/Numpy

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

7
задан Korem 30 May 2016 в 05:45
поделиться

1 ответ

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

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

Соответствующая часть построения расчетной матрицы xg включает номера/маркировки групп, 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)

"Test hypothesis that all groups have same intercept"

>>> 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>

strongly rejected because differences in intercept are very large

Update (two and a half years later):

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

и на вопрос:

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

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

11
ответ дан 6 December 2019 в 23:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: