簡體   English   中英

從統計模型中提取回歸系數

[英]Extract regressions coefficient from statsmodels

我正在估計一個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上執行此操作時,它甚至顯示正確的輸出。 但是更改不會保存到數據框中。 似乎沒有inplace = True這樣的命令。

將不勝感激。

FE_coeffs是一個Series,因此添加屬性GroupID就像添加列一樣是錯誤的方向。 相反,只需使用提取的整數值覆蓋索引:

In [80]: FE_coeffs = FE_ols.params.copy()

In [81]: FE_coeffs.index = FE_coeffs.index.str.extract("(\d+)", expand=False).astype(int)

In [82]: FE_coeffs
Out[82]: 
1    0.232969
2    0.756703
3    0.313558
5   -0.051319
6    0.317575
dtype: float64

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM