2013-09-26 5 views
9

Je voudrais qu'un collègue réplique un modèle de données de panel linéaire de première différence que j'estime avec Stata avec le paquet plm dans R (ou un autre paquet).variance du modèle de panneau linéaire de première différence dans R et Stata

Stata xtreg n'a pas une première option de différence, donc au lieu que je courir:

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

En R, je fais:

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

Les coefficients correspondent, mais les erreurs standards dans R sont plus grandes que dans Stata. J'ai regardé dans la documentation plm d'aide et de pdf, mais je dois manquer quelque chose.

Répondre

10

Les erreurs standard sont différentes car vous utilisez l'option cluster dans 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 

Si vous voulez regrouper par groupe, voici la solution:

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 
------------------------------------------------------------------------------ 

Vous pouvez voir qu'il ya une légère différence. Pour les détails dans R, voir plm manual page 39 et également here plus here

+0

Merci. J'aurais dû réaliser que plm exécute simplement OLS sur les données différenciées sans ajuster pour la structure du panneau. Existe-t-il un moyen de l'obtenir en cluster sur ID (ou quelque chose de plus approprié)? –

+0

J'ai mis à jour la réponse. Mais, il y a une légère différence. Vous pouvez vérifier les références. – Metrics

+0

Est-ce encore sur 'plm manual' page 39? Ou s'agit-il de la section sur les «Estimateurs de matrices de covariance robustes vcovHC», page 65 (version 1.4-0)? Merci – pidosaurus

Questions connexes