2013-09-26 4 views
9

Я хотел бы, чтобы коллега повторил модель данных с линейной панелью с первой разницей, которую я оцениваю со Stata с пакетом plm в R (или другом пакете).дисперсия линейных панелей с разницей по разнице в R и Stata

В Stata, xtreg не имеет первый вариант разницы, так что вместо этого я бегу:

reg D.(y x), nocons cluster(ID) 

В R, я делаю:

plm(formula = y ~ -1 + x, data = data, model = "fd", index = c("ID","Period")) 

коэффициенты совпадают, но стандартные ошибки в R больше, чем в Stata. Я заглянул в справочную и справочную документацию plm, но мне что-то не хватает.

ответ

10

Стандартные ошибки разные, поскольку вы используете опцию cluster в Stata.

R:

data(Grunfeld) 
library(plm) 
grun.re <- plm(inv~-1+value+capital,data=Grunfeld,model="fd") 
> summary(grun.re) 
Oneway (individual) effect First-Difference Model 

Call: 
plm(formula = inv ~ -1 + value + capital, data = Grunfeld, model = "fd") 

Balanced Panel: n=10, T=20, N=200 

Residuals : 
    Min. 1st Qu. Median Mean 3rd Qu. Max. 
-202.00 -15.20 -1.76 -1.39 7.95 199.00 

Coefficients : 
     Estimate Std. Error t-value Pr(>|t|)  
value 0.0890628 0.0082341 10.816 < 2.2e-16 *** 
capital 0.2786940 0.0471564 5.910 1.58e-08 *** 
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Stata

reg D.(inv value capital), nocons 

     Source |  SS  df  MS    Number of obs =  190 
-------------+------------------------------   F( 2, 188) = 70.58 
     Model | 259740.92  2 129870.46   Prob > F  = 0.0000 
    Residual | 345936.615 188 1840.08838   R-squared  = 0.4288 
-------------+------------------------------   Adj R-squared = 0.4228 
     Total | 605677.536 190 3187.7765   Root MSE  = 42.896 

------------------------------------------------------------------------------ 
     D.inv |  Coef. Std. Err.  t P>|t|  [95% Conf. Interval] 
-------------+---------------------------------------------------------------- 
     value | 
     D1. | .0890628 .0082341 10.82 0.000  .0728197 .1053059 
      | 
    capital | 
     D1. | .278694 .0471564  5.91 0.000  .1856703 .3717177 

Если вы хотите сгруппировать по группам, вот решение:

R:

library(lmtest) # for coeftest function 
coeftest(grun.re,vcov=vcovHC(grun.re,type="HC0",cluster="group")) 

t test of coefficients: 

     Estimate Std. Error t value Pr(>|t|)  
value 0.089063 0.013728 6.4878 7.512e-10 *** 
capital 0.278694 0.130954 2.1282 0.03462 * 
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Stata:

. reg D.(inv value capital), nocons cluster(firm) 

Linear regression          Number of obs =  190 
                 F( 2,  9) = 47.80 
                 Prob > F  = 0.0000 
                 R-squared  = 0.4288 
                 Root MSE  = 42.896 

            (Std. Err. adjusted for 10 clusters in firm) 
------------------------------------------------------------------------------ 
      |    Robust 
     D.inv |  Coef. Std. Err.  t P>|t|  [95% Conf. Interval] 
-------------+---------------------------------------------------------------- 
     value | 
     D1. | .0890628 .0145088  6.14 0.000  .0562416 .1218841 
      | 
    capital | 
     D1. | .278694 .138404  2.01 0.075 -.0343976 .5917857 
------------------------------------------------------------------------------ 

Вы можете видеть, что есть небольшая разница. Для получения дополнительной информации см. plm manual стр. 39, а также here plus here

+0

Спасибо. Я должен был понять, что plm просто запускает OLS по разным данным без корректировки структуры панели. Есть ли способ заставить его группировать по ID (или что-то более подходящее)? –

+0

Я обновил ответ. Но есть небольшая разница. Вы можете проверить ссылки. – Metrics

+0

Неужели это все еще на 'plm manual' стр. 39? Или это раздел о 'vcovHC Robust Covariance Matrix Estimators', на стр. 65 (версия 1.4-0)? благодаря – pidosaurus