【Python计量】linearmodels面板数据回归(一) |
您所在的位置:网站首页 › 时间序列的多元线性回归步骤 › 【Python计量】linearmodels面板数据回归(一) |
文章目录
一、导入相关库二、获取面板数据三、固定效应模型(一)使用ols估计固定效应模型(二)使用PanelOLS估计固定效应模型
此文章首发于微信公众号:Python for Finance
链接:https://mp.weixin.qq.com/s/lqgnv_csqyzVCUFh1yYq2A 我们以伍德里奇《计量经济学导论:现代方法》的”第14章 高级面板数据方法“的案例14.1为例,使用jtrain中的数据来进行固定效应估计。 一、导入相关库 import wooldridge as woo import pandas as pd import statsmodels.formula.api as smf from linearmodels.panel import PanelOLS 二、获取面板数据在使用面板数据分析工具之前,首先要改变一下数据结构,使数据集体现出面板数据的特征,表明每个观察个体的身份信息和时间信息。具体的方法是增加两个索引,也就是说通过这两个索引可以确定唯一的一条数据。 jtrain = woo.dataWoo('jtrain') jtrain = jtrain.set_index(['fcode', 'year'])获得数据如下所示: employ sales avgsal ... d89_w grant_w grant_1_w fcode year ... 410032.0 1987 100.0 47000000.0 35000.0 ... -0.333333 0.000000 0.0 1988 131.0 43000000.0 37000.0 ... -0.333333 0.000000 0.0 1989 123.0 49000000.0 39000.0 ... 0.666667 0.000000 0.0 410440.0 1987 12.0 1560000.0 10500.0 ... -0.333333 0.000000 0.0 1988 13.0 1970000.0 11000.0 ... -0.333333 0.000000 0.0 ... ... ... ... ... ... ... 419483.0 1988 108.0 11500000.0 14810.0 ... -0.333333 0.000000 0.0 1989 129.0 12000000.0 14227.0 ... 0.666667 0.000000 0.0 419486.0 1987 80.0 7000000.0 16000.0 ... -0.333333 -0.333333 0.0 1988 90.0 8500000.0 17000.0 ... -0.333333 -0.333333 0.0 1989 100.0 9900000.0 18000.0 ... 0.666667 0.666667 0.0 三、固定效应模型固定效应,即面板数据中随个体变化但不随时间变化的一类变量方法。 消除固定效应的一种方法是去除时间均值法,即将每个变量的每条数据都减去该变量按照时间的均值,得到的差值称为去除时间均值数据,然后利用去除时间均值数据进行回归估计参数的方法。 考虑只有一个解释变量的模型:对每个i,有: y i t = β 1 x i t + a i + u i t , t = 1 , 2 , . . . , T y_{it}=\beta_1x_{it}+a_i+u_{it},t=1,2,...,T yit=β1xit+ai+uit,t=1,2,...,T 对每个i求方程在时间上的平均,即: y ˉ i = ( Σ t = 1 T y i t ) / T \bar{y}_i=(\Sigma_{t=1}^T y_{it})/T yˉi=(Σt=1Tyit)/T, X ˉ i = ( Σ t = 1 T X i t ) / T \bar{X}_i=(\Sigma_{t=1}^T X_{it})/T Xˉi=(Σt=1TXit)/T 于是得到如下方程: y ˉ i = β 1 x ˉ i + a i + u i \bar{y}_i=\beta_1\bar{x}_i+a_i+u_i yˉi=β1xˉi+ai+ui 进而得到去除固定效应而又保留参数的方程: y i t − y ˉ i = β 1 ( x i t − x ˉ i ) + u i y_{it}-\bar{y}_i=\beta_1(x_{it}-\bar{x}_i)+u_i yit−yˉi=β1(xit−xˉi)+ui 这样处理虽然可以消除固定效应,但是把不随时间变化的解释变量也剔除了,如种族、性别等变量。 (一)使用ols估计固定效应模型 #求被解释变量、解释变量的去除时间均值 jtrain['lscrap_w'] = jtrain['lscrap'] - jtrain.groupby('fcode').mean()['lscrap'] jtrain['d88_w'] = jtrain['d88'] - jtrain.groupby('fcode').mean()['d88'] jtrain['d89_w'] = jtrain['d89'] - jtrain.groupby('fcode').mean()['d89'] jtrain['grant_w'] = jtrain['grant'] - jtrain.groupby('fcode').mean()['grant'] jtrain['grant_1_w'] = jtrain['grant_1'] - jtrain.groupby('fcode').mean()['grant_1'] #用OLS方程对去除时间均值进行估计 results_man = smf.ols(formula='lscrap_w ~ 0 + d88_w + d89_w + grant_w + grant_1_w', data=jtrain).fit() print(results_man.summary())结果如下: OLS Regression Results ====================================================================================== Dep. Variable: lscrap_w R-squared (uncentered): 0.201 Model: OLS Adj. R-squared (uncentered): 0.181 Method: Least Squares F-statistic: 9.940 Date: Thu, 14 Jul 2022 Prob (F-statistic): 3.36e-07 Time: 20:30:58 Log-Likelihood: -80.946 No. Observations: 162 AIC: 169.9 Df Residuals: 158 BIC: 182.2 Df Model: 4 Covariance Type: nonrobust ============================================================================== coef std err t P>|t| [0.025 0.975] ------------------------------------------------------------------------------ d88_w -0.0802 0.089 -0.903 0.368 -0.256 0.095 d89_w -0.2472 0.108 -2.287 0.024 -0.461 -0.034 grant_w -0.2523 0.122 -2.065 0.041 -0.494 -0.011 grant_1_w -0.4216 0.171 -2.472 0.014 -0.758 -0.085 ============================================================================== Omnibus: 65.791 Durbin-Watson: 2.294 Prob(Omnibus): 0.000 Jarque-Bera (JB): 770.661 Skew: -1.074 Prob(JB): 4.50e-168 Kurtosis: 13.467 Cond. No. 4.01 ============================================================================== Notes: [1] R² is computed without centering (uncentered) since the model does not contain a constant. [2] Standard Errors assume that the covariance matrix of the errors is correctly specified. (二)使用PanelOLS估计固定效应模型模块linearmodels提供PandelOLS进行固定效应模型。entity_effects=True表示特定因素。 exog_vars=['d88','d89','grant','grant_1'] exog=jtrain[exog_vars] reg_fe = PanelOLS(jtrain.lscrap, exog, entity_effects=True) results_fe = reg_fe.fit() print(results_fe)根据固定效应方法的估计方程可以知道,固定效应方程是没有截距项的,所以在以上代码中不增加常数项。 或者也可以采用from_formula方法,代码如下: reg_fe = PanelOLS.from_formula(formula='lscrap ~ d88 + d89 + grant + grant_1 + EntityEffects', data=jtrain) results_fe = reg_fe.fit() print(results_fe)结果如下: PanelOLS Estimation Summary ================================================================================ Dep. Variable: lscrap R-squared: 0.2010 Estimator: PanelOLS R-squared (Between): -0.1103 No. Observations: 162 R-squared (Within): 0.2010 Date: Thu, Jul 14 2022 R-squared (Overall): -0.0839 Time: 13:48:36 Log-likelihood -80.946 Cov. Estimator: Unadjusted F-statistic: 6.5426 Entities: 54 P-value 0.0001 Avg Obs: 3.0000 Distribution: F(4,104) Min Obs: 3.0000 Max Obs: 3.0000 F-statistic (robust): 6.5426 P-value 0.0001 Time periods: 3 Distribution: F(4,104) Avg Obs: 54.000 Min Obs: 54.000 Max Obs: 54.000 Parameter Estimates ============================================================================== Parameter Std. Err. T-stat P-value Lower CI Upper CI ------------------------------------------------------------------------------ d88 -0.0802 0.1095 -0.7327 0.4654 -0.2973 0.1369 d89 -0.2472 0.1332 -1.8556 0.0663 -0.5114 0.0170 grant -0.2523 0.1506 -1.6751 0.0969 -0.5510 0.0464 grant_1 -0.4216 0.2102 -2.0057 0.0475 -0.8384 -0.0048 ============================================================================== F-test for Poolability: 24.661 P-value: 0.0000 Distribution: F(53,104) Included effects: Entity |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |