[R-SIG-Finance] R: No intercep for First-Difference Estimator in PLM(panel data) - follow-up

Robert Iquiapaza rbali at ufmg.br
Wed Apr 15 17:10:03 CEST 2009


Thanks Giovanni,

Until the bug is fixed, I used the following code to get the result

dwage<-diff(wage2$wage,1)[wage2$time!=6]
dmarr<-diff(wage2$marr,1)[wage2$time!=6]

fd<-lm(dwage~dmarr+0)
summary(fd)
fd1<-lm(dwage~dmarr)
summary(fd1)

Robert
--------------------------------------------------
From: "Millo Giovanni" <Giovanni_Millo at Generali.com>
Sent: Wednesday, April 15, 2009 11:48 AM
To: "Robert Iquiapaza" <rbali at ufmg.br>; <r-sig-finance at stat.math.ethz.ch>
Cc: "Yves Croissant" <yves.croissant at let.ish-lyon.cnrs.fr>; "Christian 
Kleiber" <christian.kleiber at unibas.ch>
Subject: R: [R-SIG-Finance] No intercep for First-Difference Estimator in 
PLM(panel data) - follow-up

> Dear Robert, dear list,
>
> an update following a short discussion with the maintainer:
> the way to estimate an 'fd' model without intercept in plm() is the same 
> as in lm() etc., i.e. using one of the (equivalent) following formula 
> notations
> y~x+0
> y~x-1
> so the syntax in your second example is correct and should work.
> In fact it seems to be working fine unless there is only one regressor, as 
> in your example. This is a bug, probably stemming from some (nxk) matrix 
> degenerating into a vector as k=1 (maybe the most common bug ever in R?).
>
> A bug fix should appear soon; in the meantime, my observation on 
> consistency of the estimates of the model with intercept still applies. I
> take this chance to report an observation Yves just made, on which I 
> totally agree: estimating the intercept can be a useful diagnostic, as if
> it turns out significant this indicates some specification problem (the 
> difference of the intercept is nonzero=> the "true" intercept is not 
> constant, but somehow time-varying). You can get an example by estimating
> (a simplified version of-) the Arellano and Bond model:
>
>> data("EmplUK", package="plm")
>> myfdmod <- 
>> plm(log(emp)~log(wage)+log(capital)+log(output),data=EmplUK,model="fd")
>
> and looking at the summary().
>
> Best wishes,
> Giovanni
>
> Giovanni Millo
> Research Dept.,
> Assicurazioni Generali SpA
> Via Machiavelli 4,
> 34132 Trieste (Italy)
> tel. +39 040 671184
> fax  +39 040 671160
>
> -----Messaggio originale-----
> Da: Millo Giovanni
> Inviato: martedì 14 aprile 2009 16:26
> A: 'Robert Iquiapaza'; r-sig-finance at stat.math.ethz.ch
> Cc: Yves Croissant
> Oggetto: R: [R-SIG-Finance] No intercep for First-Difference Estimator in
> PLM(panel data)
>
>
> Dear Robert,
>
> in fact this should be automatic, at least at first sight, as the 
> intercept term should be differenced out. Yet there are cases where you 
> would want to retain it (see, e.g., Example 10.6 in Wooldridge, 
> Econometric Analysis of cross-section and panel data).
>
> We'll look into the formula specification. For now, let me just observe 
> that it doesn't do any harm to include the intercept anyway, as by 
> definition it is uncorrelated with the errors and the other regressors, so 
> your betas keep consistent if they were in the first place.
>
> Best wishes,
> Giovanni
>
> PS please put at least one of the authors in c/c next time
>
> Giovanni Millo
> Research Dept.,
> Assicurazioni Generali SpA
> Via Machiavelli 4,
> 34132 Trieste (Italy)
> tel. +39 040 671184
> fax  +39 040 671160
>
> -----Messaggio originale-----
> Da: Robert Iquiapaza [mailto:rbali at ufmg.br]
> Inviato: lunedì 13 aprile 2009 05:28
> A: r-sig-finance at stat.math.ethz.ch
> Oggetto: [R-SIG-Finance] No intercep for First-Difference Estimator in 
> PLM(panel data)
>
>
> Hi
>
> I want to estimate a FD model using plm, but with no intercept. It seems
> that plm ignores "intercept = FALSE".
> And adding "+0" to the function produce an error.
>
> #First-Difference Estimator
> wag.fd1 <- plm(wage ~ marr, intercept = FALSE, data = wage2, model = "fd")
>
> wag.fd2 <- plm(wage ~ marr+0, data = wage2, model = "fd")
>
>> wag.fd2 <- plm(wage ~ marr+0, data = wage2, model = "fd")
> Error in result[is.na(cond), ] <- NA :
>  (subscript) logic subscript too long
>
> My data looks like:
>> wage2
>   id time wage marr time1
> 1   1    1 1000    0     1
> 2   1    2 1050    0     2
> 3   1    3  950    0     3
> 4   1    4 1000    0     4
> 5   1    5 1100    0     5
> 6   1    6  900    0     6
> 7   2    1 2000    0     1
> 8   2    2 1950    0     2
> 9   2    3 2000    0     3
> 10  2    4 2000    0     4
> 11  2    5 1950    0     5
> 12  2    6 2100    0     6
> 13  3    1 2900    0     1
> 14  3    2 3000    0     2
> 15  3    3 3100    0     3
> 16  3    4 3500    1     4
> 17  3    5 3450    1     5
> 18  3    6 3550    1     6
> 19  4    1 3950    0     1
> 20  4    2 4050    0     2
> 21  4    3 4000    0     3
> 22  4    4 4500    1     4
> 23  4    5 4600    1     5
> 24  4    6 4400    1     6
>
>
> I would appreciate if anyone knows how to specify no intercept for first
> difference model in panel data using plm?
>
> Thank you
>
> Robert 



More information about the R-SIG-Finance mailing list