【译】用python做计量之面板数据模型
雁陎 • 2020 年 06 月 25 日
Loading...
原文:[https://bashtage.github.io/linearmodels/panel/index.html](https://bashtage.github.io/linearmodels/panel/index.html)
## 介绍
面板数据是具有时间序列(T)和截面(N)两个维度组织的数据。在面板数据的大多数经典应用中,观测的数量N大,而时间段的数量T小(通常在2到5之间)。这些估计量的渐近理论多是在N固定而T会发散的前提下得到的的。
大多数面板模型旨在估计下面方程的参数:
$$
y_{i t}=x_{i t} \beta+\alpha_{i}+\epsilon_{i t}
$$
其中i为观测,t为时间,$\beta$包含了要估计的参数。$\alpha_i$是个体的异质性,无法观测。$\epsilon_{i t}$是特异性误差(idiosyncratic errors),与$\alpha_i$和$x_{it}$不相关。
所有的模型都需要两个输入:
* `dependent`,即因变量$y_{it}$
* `exog`,即自变量$x_{it}$
并使用不同的技术处理$\alpha_i$
* [`PanelOLS`](https://bashtage.github.io/linearmodels/panel/panel/linearmodels.panel.model.PanelOLS.html#linearmodels.panel.model.PanelOLS "linearmodels.panel.model.PanelOLS")固定效应,即面板数据中随个体变化但不随时间变化的一类变量方法。这在数学上等价于为每个观测包含一个虚拟变量,尽管出于性能原因,实际上并不是这样实现的。
* [`BetweenOLS`](https://bashtage.github.io/linearmodels/panel/panel/linearmodels.panel.model.BetweenOLS.html#linearmodels.panel.model.BetweenOLS "linearmodels.panel.model.BetweenOLS")平均数估计。即对面板数据的每个个体求平均数,然后利用自变量和因变量的N组观测值估计参数。
* [`FirstDifferenceOLS`](https://bashtage.github.io/linearmodels/panel/panel/linearmodels.panel.model.FirstDifferenceOLS.html#linearmodels.panel.model.FirstDifferenceOLS "linearmodels.panel.model.FirstDifferenceOLS")一阶差分估计。即对个体固定效应模型中的回归量与被回归量的差分变量构成的模型的参数进行OLS估计。
* [`RandomEffects`](https://bashtage.github.io/linearmodels/panel/panel/linearmodels.panel.model.RandomEffects.html#linearmodels.panel.model.RandomEffects "linearmodels.panel.model.RandomEffects")随机效应。当固定效应独立于回归变量时,RandomEffects 使用一个拟差分来有效地估计。 然而,当固定效应和回归变量之间存在依赖关系时,估计量就不再具有一致性。
* [`PooledOLS`](https://bashtage.github.io/linearmodels/panel/panel/linearmodels.panel.model.PooledOLS.html#linearmodels.panel.model.PooledOLS "linearmodels.panel.model.PooledOLS")混合最小二乘估计。Pooledols 忽略了固定效应,当效应与回归因子无关时,它是一致的但是低效的。
Panelols 比其他的估计方法更通用,可以用于两类效应的模型(例如,实体(即固定)和时间效应)
> 模型中的$\alpha_i$,与回归自变量相关,称之为固定效应模型;与回归自变量不相关,称之为随机效应模型。
>
> 固定效应将α消掉,随机效应则将其放入误差项,然后探索方差结构。
模型规范类似于 statsmodels。 下面例子估计了一个固定效应回归面板上的劳动者的工资,模型中劳动者的工资是经验平方的函数,如果一个男人结婚了虚拟变量设为1,如果这个男人是工会成员同样设定虚拟变量。
```python
from linearmodels.panel import PanelOLS
from linearmodels.datasets import wage_panel
import statsmodels.api as sm
data = wage_panel.load()
data = data.set_index(['nr','year'])
dependent = data.lwage
exog = sm.add_constant(data[['expersq','married','union']])
mod = PanelOLS(dependent, exog, entity_effects=True)
res = mod.fit(cov_type='unadjusted')
res
```
结果:
```python
PanelOLS Estimation Summary
================================================================================
Dep. Variable: lwage R-squared: 0.1365
Estimator: PanelOLS R-squared (Between): -0.0674
No. Observations: 4360 R-squared (Within): 0.1365
Date: Wed, Jun 24 2020 R-squared (Overall): 0.0270
Time: 23:03:18 Log-likelihood -1439.0
Cov. Estimator: Unadjusted
F-statistic: 200.87
Entities: 545 P-value 0.0000
Avg Obs: 8.0000 Distribution: F(3,3812)
Min Obs: 8.0000
Max Obs: 8.0000 F-statistic (robust): 200.87
P-value 0.0000
Time periods: 8 Distribution: F(3,3812)
Avg Obs: 545.00
Min Obs: 545.00
Max Obs: 545.00
Parameter Estimates
===========