#python #regression
Вопрос:
Я использую statsmodels.formula.api
для запуска регрессии GEE. У меня есть категориальные и непрерывные независимые переменные в регрессии, и я хотел бы, чтобы базовые уровни в категориальной не снижались. statsmodels.formula.api
похоже, что по умолчанию снижается определенный/базовый уровень.
Когда я смотрю на пример «Удаление переменных» в документации по моделям состояний, я вижу, что ссылочные уровни также включены, когда формула имеет формат ниже:
res = smf.ols(formula='Lottery ~ Literacy Wealth C(Region) -1 ', data=df).fit()
print(res.params)
Output:
C(Region)[C] 38.651655
C(Region)[E] 23.223870
C(Region)[N] 28.634694
C(Region)[S] 34.103399
C(Region)[W] 28.560379
Однако, когда я запускаю регрессию GEE, как показано ниже, в том же формате, что и приведенные выше OLS (включая -1), базовые уровни по-прежнему автоматически удаляются с State
:
import statsmodels.formula.api as smf
import statsmodels.api as sm
fam = sm.families.Binomial()
mod = smf.gee(formula='indicator ~ Income Unemployment Debt C(State) C(History) -1 ', 'Employee id', data=train_set, family = fam, cov_struct = sm.cov_struct.Exchangeable())
Я не знаю, как позаботиться о том, чтобы контрольные уровни сохранялись для категориального State
в модели GEE.
Комментарии:
1. Является ли один из других регрессоров в модели gee также категоричным? Работает
-1
только для одной категориальной переменной, и, АФАИК, мы не можем выбрать, для какой из них.2. @Josef Да, это так. Я отредактировал вопрос, чтобы отразить это. Учитывая это, если я все еще хочу использовать
statsmodels
, могу ли я просто использоватьstatsmodels.api
напрямую и напрямую предоставлятьexog
, со всеми включенными ссылочными уровнями и без перехвата?3. Вы можете напрямую использовать модели (api) с массивами Dataframe или numpy. Тем не менее, вы все равно должны убедиться, что у вас есть неособый
exog
. Если вы не отбросите какие-либо базовые уровни с несколькими категориальными переменными, то матрица проектирования будет единственной. (Это то, что Пэтси и формулы пытаются предотвратить в данном случае.)4. Ответ в этой ссылке вводит в заблуждение. Каждый полный набор фиктивных переменных суммируется до 1 строки подряд. Если существует более 1 категориальной переменной, то каждая добавляет одну неявную константу.
5. OLS, WLS, IRL в statsmodels по умолчанию используют обобщенный обратный. Это создает регуляризованное решение, если экзог единичен. Однако cov_params имеет более низкий ранг и является единственным. Большинство других моделей вызовут исключение, если матрица проектирования является единственной.