【Python计量】两期面板数据分析

本文讨论两个时期的面板数据的分析方法。

【例1】伍德里奇《计量经济学导论:现代方法》的“第13章 跨时横截面的混合:简单面板数据处理方法”的例13.5,利用SLP75_87数据,研究睡眠与工作之间的替代关系。构建多元线性回归模型如下:
s l p n a p i t = β 0 + δ 0 d 8 1 t + β 1 t o t w r k i t + β 2 e d u c i t + β 3 m a r r i t + β 4 y n g k i d i t + β 5 g d h l t h i t + a i + u i t slpnap_{it}=\beta_0+\delta_0d81_t+\beta_1totwrk_{it}+\beta_2educ_{it}+\beta_3marr_{it}+\beta_4yngkid_{it}+\beta_5gdhlth_{it}+a_i+u_{it} slpnapit=β0+δ0d81t+β1totwrkit+β2educit+β3marrit+β4yngkidit+β5gdhlthit+ai+uit

  • slpnap:睡眠时长
  • d81:1975年为0,1981年为1
  • totwrk:每周工作分钟数
  • educ:受教育的年数
  • marr:已婚为1,否则为0
  • yngkid:孩子小于3岁为1,否则为0
  • gdhlth:健康为1,否则为0
  • a:影响睡眠时间的固定因素

对于任意i,将1975年和1981年的两个方程相减得到的差分方程,我们称之为一阶差分方程。
Δ s l p n a p i = δ 0 + δ 1 Δ t o t w r k i + δ 2 Δ e d u c i + δ 3 Δ m a r r i + δ 4 Δ y n g k i d i + δ 5 Δ g d h l t h i + Δ u i \Delta slpnap_i=\delta_0+\delta_1\Delta totwrk_i+\delta_2\Delta educ_i+\delta_3\Delta marr_i+\delta_4\Delta yngkid_i+\delta_5\Delta gdhlth_i+\Delta u_i Δslpnapi=δ0+δ1Δtotwrki+δ2Δeduci+δ3Δmarri+δ4Δyngkidi+δ5Δgdhlthi+Δui
该差分方程中的固定因素消失了,剩下的都是随时间变化的因素。

处理面板数据时需特别注意面板数据的编排方式,不同的编排方式有不同的处理方法。本例中,原始数据将每一个人的1975年和1981年的数据分别存储在同一行的两个字段中,比如eudc75和educ81。

代码如下:

import wooldridge as woo
import numpy as np
import pandas as pd
import statsmodels.formula.api as smf

slp75_81 = woo.dataWoo('slp75_81')

slp75_81['D_slpnap'] = slp75_81['slpnap81'] - slp75_81['slpnap75']
slp75_81['D_totwrk'] = slp75_81['totwrk81'] - slp75_81['totwrk75']
slp75_81['D_educ'] = slp75_81['educ81'] - slp75_81['educ75']
slp75_81['D_marr'] = slp75_81['marr81'] - slp75_81['marr75']
slp75_81['D_yngkid'] = slp75_81['yngkid81'] - slp75_81['yngkid75']
slp75_81['D_gdhlth'] = slp75_81['gdhlth81'] - slp75_81['gdhlth75']
reg = smf.ols('D_slpnap~D_totwrk+D_educ+D_marr+D_yngkid+D_gdhlth',data=slp75_81)
results = reg.fit()
print(results.summary())

结果为:

                            OLS Regression Results                            
==============================================================================
Dep. Variable:               D_slpnap   R-squared:                       0.150
Model:                            OLS   Adj. R-squared:                  0.131
Method:                 Least Squares   F-statistic:                     8.191
Date:                Tue, 09 Aug 2022   Prob (F-statistic):           3.83e-07
Time:                        09:07:33   Log-Likelihood:                -1864.4
No. Observations:                 239   AIC:                             3741.
Df Residuals:                     233   BIC:                             3762.
Df Model:                           5                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
Intercept    -92.6340     45.866     -2.020      0.045    -182.999      -2.269
D_totwrk      -0.2267      0.036     -6.287      0.000      -0.298      -0.156
D_educ        -0.0245     48.759     -0.001      1.000     -96.090      96.041
D_marr       104.2139     92.855      1.122      0.263     -78.729     287.157
D_yngkid      94.6654     87.653      1.080      0.281     -78.027     267.358
D_gdhlth      87.5778     76.599      1.143      0.254     -63.338     238.493
==============================================================================
Omnibus:                       31.927   Durbin-Watson:                   1.890
Prob(Omnibus):                  0.000   Jarque-Bera (JB):               57.378
Skew:                          -0.719   Prob(JB):                     3.47e-13
Kurtosis:                       4.922   Cond. No.                     2.72e+03
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 2.72e+03. This might indicate that there are
strong multicollinearity or other numerical problems.

【例2】伍德里奇《计量经济学导论:现代方法》的“第13章 跨时横截面的混合:简单面板数据处理方法”的“13.3 两时期面板数据分析”的案例,利用CRIME2数据,研究犯罪率与失业率的关系。用以描述1982年和1987年城市犯罪率的固定效应模型是:
c r m r t e i t = β 0 + δ 0 d 8 7 t + β 1 u n e m i t + a i + u i t crmrte_{it}=\beta_0+\delta_0d87_t+\beta_1unem_{it}+a_i+u_{it} crmrteit=β0+δ0d87t+β1unemit+ai+uit

  • crmrte:犯罪率
  • d87:1982年为0,1987年为1
  • unem:失业率
  • a:影响睡眠时间的固定因素

因为 a i a_i ai 是不随时间而变化的常数,所以我们可以取两个年份的数据之差。对横截面的第i个观测值,把两年的方程分别写成:
y i 2 = ( β 0 + δ 0 ) + β 1 x i 2 + a i + u i 2 y i 1 = β 0 + β 1 x i 1 + a i + u i 2 y_{i2}=(\beta_0+\delta_0)+\beta_1x_{i2}+a_i+u_{i2}\\ y_{i1}=\beta_0+\beta_1x_{i1}+a_i+u_{i2} yi2=(β0+δ0)+β1xi2+ai+ui2yi1=β0+β1xi1+ai+ui2
如果我们将第一个方程减去第二个方程,便得到
y i 2 − y i 1 = δ 0 + β 1 ( x i 2 − x i 1 ) + ( u i 2 − u i 1 ) y_{i2}-y_{i1}=\delta_0+\beta_1(x_{i2}-x_{i1})+(u_{i2}-u_{i1}) yi2yi1=δ0+β1(xi2xi1)+(ui2ui1)

或:
Δ y = δ 0 + Δ x i + Δ u i \Delta y=\delta_0+\Delta x_i+\Delta u_i Δy=δ0+Δxi+Δui
固定效应 a i a_i ai 被差分掉,不再出现。我们称之为一阶差分方程。

处理面板数据时需特别注意面板数据的编排方式,不同的编排方式有不同的处理方法。本例中,原始数据索引为偶数的行存放着1982年数据,索引为奇数的行存放着1987年数据。

代码如下:

import wooldridge as woo
import numpy as np
import pandas as pd
import statsmodels.formula.api as smf

crime2 = woo.dataWoo('crime2')

# 创建个体索引
id_tmp = np.linspace(1, 46, num=46)
crime2['id'] = np.sort(np.concatenate([id_tmp, id_tmp]))

# 对每个个体的crmrte and unem进行一阶差分
crime2['crmrte_diff1'] = \
    crime2.sort_values(['id', 'year']).groupby('id')['crmrte'].diff()
crime2['unem_diff1'] = \
    crime2.sort_values(['id', 'year']).groupby('id')['unem'].diff()

# statsmodels估计一阶差分模型:
reg_sm = smf.ols(formula='crmrte_diff1 ~ unem_diff1', data=crime2)
results_sm = reg_sm.fit()
print(results_sm.summary())

结果如下:

                            OLS Regression Results                            
==============================================================================
Dep. Variable:           crmrte_diff1   R-squared:                       0.127
Model:                            OLS   Adj. R-squared:                  0.107
Method:                 Least Squares   F-statistic:                     6.384
Date:                Tue, 09 Aug 2022   Prob (F-statistic):             0.0152
Time:                        10:13:43   Log-Likelihood:                -202.17
No. Observations:                  46   AIC:                             408.3
Df Residuals:                      44   BIC:                             412.0
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
Intercept     15.4022      4.702      3.276      0.002       5.926      24.879
unem_diff1     2.2180      0.878      2.527      0.015       0.449       3.987
==============================================================================
Omnibus:                        2.636   Durbin-Watson:                   1.146
Prob(Omnibus):                  0.268   Jarque-Bera (JB):                2.255
Skew:                           0.539   Prob(JB):                        0.324
Kurtosis:                       2.883   Cond. No.                         8.70
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.

我们也可以调用linearmodels的FirstDifferenceOLS模块进行估计。

import wooldridge as woo
import numpy as np
import pandas as pd
import linearmodels as plm

crime2 = woo.dataWoo('crime2')
crime2['d87'] = (crime2['year'] == 87).astype(int)  # False=0, True=1
# 创建个体索引
id_tmp = np.linspace(1, 46, num=46)
crime2['id'] = np.sort(np.concatenate([id_tmp, id_tmp]))

crime2 = crime2.set_index(['id', 'year'])
reg_plm = plm.FirstDifferenceOLS.from_formula(formula='crmrte ~ d87 + unem',
                                              data=crime2)
results_plm = reg_plm.fit()
print(results_plm)

结果为:

                     FirstDifferenceOLS Estimation Summary                      
================================================================================
Dep. Variable:                 crmrte   R-squared:                        0.1961
Estimator:         FirstDifferenceOLS   R-squared (Between):              0.4064
No. Observations:                  46   R-squared (Within):               0.1961
Date:                Tue, Aug 09 2022   R-squared (Overall):              0.4041
Time:                        10:27:37   Log-likelihood                   -202.17
Cov. Estimator:            Unadjusted                                           
                                        F-statistic:                      5.3653
Entities:                          46   P-value                           0.0082
Avg Obs:                       2.0000   Distribution:                    F(2,44)
Min Obs:                       2.0000                                           
Max Obs:                       2.0000   F-statistic (robust):             5.3653
                                        P-value                           0.0082
Time periods:                       2   Distribution:                    F(2,44)
Avg Obs:                       46.000                                           
Min Obs:                       46.000                                           
Max Obs:                       46.000                                           
                                                                                
                             Parameter Estimates                              
==============================================================================
            Parameter  Std. Err.     T-stat    P-value    Lower CI    Upper CI
------------------------------------------------------------------------------
d87            15.402     4.7021     3.2756     0.0021      5.9257      24.879
unem           2.2180     0.8779     2.5266     0.0152      0.4488      3.9872
==============================================================================

·

猜你喜欢

转载自blog.csdn.net/mfsdmlove/article/details/126243912