首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么python中的随机效果不匹配stata?

为什么python中的随机效果不匹配stata?
EN

Stack Overflow用户
提问于 2015-06-27 01:47:12
回答 1查看 712关注 0票数 3

我试图在熊猫中实现一个随机效果模型,但我的回归系数与Stata的输出不匹配。我使用的是航空公司路线和机票价格的面板。下面是我的Python代码:

代码语言:javascript
复制
import pandas as pd
import pandas.stats.plm as plm

airline = pd.read_csv("C:...\Airline.csv")
airline['constant'] = 1.0
airline = airline.set_index(['route', 'time'])
airlinePanel = airline.to_panel()


airlineRE = plm.PanelOLS(y = airlinePanel['lnMktfare'], x=airlinePanel[['constant', 'mktdistance', 'passengers', 'percentAA', 'percentAS',
            'percentDL', 'percentHA', 'percentNK', 'percentUA', 'percentUS', 'percentWN']],
            intercept= True, time_effects=True, dropped_dummies=True, verbose=True)
print airlineRE

和输出:

代码语言:javascript
复制
 -------------------------Summary of Regression Analysis-------------------------

Formula: Y ~  <mktdistance> + <passengers> + <percentAA>
         + <percentAS> + <percentDL> + <percentHA> + <percentNK> + <percentUA>
         + <percentUS> + <percentWN>

Number of Observations:         88000
Number of Degrees of Freedom:   1010

R-squared:         0.2357
Adj R-squared:     0.2268

Rmse:              0.3762

F-stat (10, 86990):    26.5805, p-value:     0.0000

Degrees of Freedom: model 1009, resid 86990

-----------------------Summary of Estimated Coefficients------------------------
Variable       Coef    Std Err     t-stat    p-value    CI 2.5%   CI 97.5%
--------------------------------------------------------------------------------
mktdistance   0.0002     0.0000     125.73     0.0000     0.0002     0.0002
passengers   -0.0000     0.0000     -33.44     0.0000    -0.0000    -0.0000
percentAA     0.1290     0.0045      28.85     0.0000     0.1202     0.1378
percentAS     0.1079     0.0067      16.06     0.0000     0.0947     0.1211
--------------------------------------------------------------------------------
percentDL     0.2682     0.0033      81.44     0.0000     0.2617     0.2746
percentHA    -0.1609     0.1439      -1.12     0.2635    -0.4430     0.1211
percentNK    -0.4412     0.0144     -30.73     0.0000    -0.4693    -0.4131
percentUA     0.2156     0.0041      52.70     0.0000     0.2076     0.2236
percentUS     0.1839     0.0034      54.19     0.0000     0.1772     0.1905
--------------------------------------------------------------------------------
percentWN    -0.0658     0.0033     -19.93     0.0000    -0.0722    -0.0593
---------------------------------End of Summary---------------------------------

首先,在我进入Stata输出之前,有人知道为什么即使我放入intercept = True也得不到截取项吗?即使我手动将其添加到回归方程中,Python也会按如下方式估计常量:

代码语言:javascript
复制
-----------------------Summary of Estimated Coefficients------------------------
Variable       Coef    Std Err     t-stat    p-value    CI 2.5%   CI 97.5%
--------------------------------------------------------------------------------
constant     0.0000        nan        nan        nan        nan        nan

其他的估计都没有改变。现在来看Stata代码:

代码语言:javascript
复制
import delimited "C:...\Airline.csv", clear
xtset route time
xtreg lnmktfare mktdistance passengers percent*

和Stata输出:

代码语言:javascript
复制
Random-effects GLS regression                   Number of obs     =     88,000
Group variable: route                          Number of groups  =      1,000

R-sq:                                           Obs per group:
     within  = 0.2983                                         min =         88
     between = 0.6943                                         avg =       88.0
     overall = 0.3154                                         max =         88

                                                Wald chi2(97)     =   39530.19
corr(u_i, X)   = 0 (assumed)                    Prob > chi2       =     0.0000

------------------------------------------------------------------------------
 lnmktfare   |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
 mktdistance |   .0002374   1.78e-06   133.40   0.000     .0002339    .0002409
 passengers  |  -.0000382   8.90e-07   -42.91   0.000    -.0000399   -.0000364

 percentAA   |   .1340237   .0058275    23.00   0.000      .122602    .1454454
 percentAS   |   .1159311    .006403    18.11   0.000     .1033815    .1284807
 percentDL   |   .2689447   .0039186    68.63   0.000     .2612644     .276625
 percentHA   |  -.0637648   .1378896    -0.46   0.644    -.3340235    .2064939
 percentNK   |  -.4974099   .0131605   -37.80   0.000     -.523204   -.4716158
 percentUA   |   .1653212   .0055116    30.00   0.000     .1545187    .1761236
 percentUS   |   .1784333   .0046914    38.03   0.000     .1692383    .1876283
 percentWN   |  -.1531444   .0041407   -36.98   0.000    -.1612601   -.1450286
     _cons   |   4.893488    .011821   413.97   0.000     4.870319    4.916657
-------------+----------------------------------------------------------------
   sigma_u   |  .02593863
   sigma_e   |  .36056598
       rho   |  .00514853   (fraction of variance due to u_i)
------------------------------------------------------------------------------

我不知道为什么两个程序之间的系数略有不同,但这个差异足以让我担心熊猫的准确性。我的主要问题是(1)为什么我不能从熊猫那里得到一个截取术语?以及(2)为什么系数在两个包中不匹配。请注意,我已经比较了Python和Stata之间的OLS、Logit和IV2SLS模型,结果完全匹配,这让我认为在pandas中随机效果模型的实现可能存在问题。我在IPython 3.0.0和Stata 14中运行Python2.7.9。

EN

回答 1

Stack Overflow用户

发布于 2016-04-16 03:09:04

你的python代码正在做固定的效果。您可以从自由度中看到这一点,python输出中的自由度超过1000,而Stata输出中的自由度小于100。与固定效应不同,随机效应不被视为待估计的参数-假设它们与X无关,但具有特定的误差结构,使RE比池化OLS更有效。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31079208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档