在python中为OLS回归格式化pandas数据帧

时间:2017-06-18 23:58:22

标签: python pandas statistics data-analysis statsmodels

对于计量经济学分析,我试图对巴西中央银行和政府研究机构的一些教育,健康和收入数据进行回归分析。 Python,pandas,statsmodels和matplotlib是我在这个项目中使用最多的外部库。

数据的格式在多个表中,每年的行和城市/州的列(一些文件包含城市数据,一些文件包含州数据)。

按城市和年份划分的收入的熊猫数据框示例:

1200302  1200328  ...   1720937  1720978  1721000  1721109  1721208  \
1970     0.31      NaN  ...       NaN      NaN      NaN     0.20     0.28   
1980     0.39      NaN  ...       NaN      NaN      NaN     0.45     0.57   
1991     0.44      NaN  ...       NaN      NaN     1.45     0.65     0.46   

(顶部的每个数字都是城市代码 - 许多城市都有相同的名称。

对于州的数据,每个州都有20到30年的测量值,而对于城市,这个数据只有在进行全国人口普查时可以使用3到3年。)

我想比较教育,健康和收入指标。已选择所有指标,并将数据集导入到pandas数据框中,并且已经进行了极少的清理。

如何为多个自变量找到所有城市/州的OLS或FE回归的R值?

现在我将我的程序配置为一次为一个自变量为两个州或两个城市运行线性OLS回归:

one = df1[col]
two = df2[[col,'const']].join(df3[col])
est = sm.OLS(one, two, missing='drop').fit()

1 个答案:

答案 0 :(得分:0)

像这样的非平衡面板数据的标准方法是堆叠每个横截面单元的时间序列,并为固定效果创建虚拟变量。

为横截面单位创建固定效果(即单位特定拦截),需要一个带有州和城市标签或ID的分类变量。然后,公式接口和patsy可以使用C(id)创建所需的虚拟变量。

然后OLS可用于估计有限元模型。 fit方法有一个cov_type选项,可以使用面板或集群强健的标准误差来纠正那些横截面或内部相关性。