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

formatting pandas dataframes for OLS regression in python

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

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

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

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-4 年的数据可用,即进行全国人口普查时。)

我想比较教育、健康和收入的指标。所有指标均已选择,数据集已导入 pandas 数据框,并进行了最低限度的清理。

如何找到多个独立变量的所有 cities/states 的 OLS 或 FE 回归的 R 值?

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

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

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

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

创建所需的虚拟变量

然后可以使用OLS来估计有限元模型。拟合方法有一个 cov_type 选项,可以使用面板或聚类稳健标准误差来校正横截面或相关内的标准误差。