Я оцениваю модель OLS, как показано ниже.Мне нужны коэффициенты по категориальной переменной вместе с их значениями.
Вот мой код:
import pandas as pd
import numpy as np
import statsmodels.formula.api as smf
np.random.seed(12345)
df = pd.DataFrame(np.random.randn(25, 1), columns=list('A'))
df['groupid'] = [1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,5,5,5,5,5,6,6,6,6,6]
df['groupid'] = df['groupid'].astype('int')
###Fixed effects models
FE_ols = smf.ols(formula = 'A ~ C(groupid) - 1', data=df).fit()
FE_coeffs = FE_ols.params #Save coeffs
FE_coeffs.GroupID = FE_coeffs.index #Extract value of GroupID
FE_coeffs.GroupID = FE_coeffs.GroupID.str.extract('(\d+)') #Parse number from string
Я могу извлечь коэффициенты по фиктивным переменным.Я поместил их в новый фрейм данных.
C(groupid)[1] 0.2329694463342642
C(groupid)[2] 0.7567034333090062
C(groupid)[3] 0.31355791920072623
C(groupid)[5] -0.05131898650395289
C(groupid)[6] 0.31757453138500547
Однако я хочу, чтобы фрейм данных был таким:
1 0.2329694463342642
2 0.7567034333090062
3 0.31355791920072623
5 -0.05131898650395289
6 0.31757453138500547
Кажется, что код работает, включая синтаксический анализ.Когда я делаю это на Jupyter, он даже показывает правильный вывод.Но изменение не сохраняется в фрейме данных.Кажется, что там нет места = Правдивая команда.
Буду признателен за любую помощь.