Я пытаюсь запустить регрессию в Python, но это занимает время и перестает работать. В Stata это работает и занимает всего несколько секунд.
Это связано с категориальным столбцом, включающим групповые фиксированные эффекты. Без переменной производительность Stata и Python примерно одинакова: на 200000 наблюдений требуется около 1 секунды:
Код Стата
reg income height Number_children
Код Python
model = smf.ols(income ~ height + Number_children, data=humans).fit()
Добавляя манекен, я меняю код Stata на areg
:
areg income height Number_children, absorb(Village)
Это занимает всего 1-2 секунды дольше, чем без манекена.
В Python:
model = smf.ols(income ~ height + Number_children + Village, data=humans).fit()
куда:
Name: Village, dtype: category
Categories (3678, object):
Останавливаю регресс через 2 минуты ожидания. Есть ли идеи, как запустить код и увеличить скорость почти до такой же скорости, как у Stata? Проблема больше вызвана переменной или командой регрессии?
- РЕДАКТИРОВАТЬ:
Основываясь на ответе Дмитрия, я попробовал это для всех переменных:
e.g.:
humans["income_gr_m"]= humans["income"].groupby(humans['Village']).mean()
humans["income_star"] = humans["income"] - humans["income_gr_m"] + humans["income"].mean()
Однако это также заставляет Python работать как минимум 2 минуты (я снова остановился). Или трансформацию надо проводить по-другому? Спасибо