[R] problem with "dynformula" from "plm" package [RE-POST]

Owen Powell opowell at gmail.com
Fri Nov 27 18:54:17 CET 2009


Great! That did the trick, thanks David.

To summarize for the list, to get "dynformula" to work (example):

R> a = dynformula(emp~wage+capital,log.form=list(capital=FALSE,TRUE),lag.form=list(emp=2,c(2,3)),diff.form=list(FALSE,capital=TRUE))

it might be necessary to use:

R> plm(formula = formula(a), data=EmplUK)

rather than just:

R> plm(formula = a, data = EmplUK)

~Owen

2009/11/27 David Winsemius <dwinsemius at comcast.net>:
> You might also note that the authors hint on the help page that one might
> want to use the formula() operation on the result of dynformula. Following
> that path would have gotten us to a more successful conclusion.
>
>> grun.fe <- plm(formula = formula(a),data=EmplUK)
>> grun.fe
>
> Model Formula: log(emp) ~ lag(log(emp), 1) + lag(log(emp), 2) +
> lag(log(emp),
>    1) + lag(log(emp), 2) + lag(log(wage), 2) + lag(log(wage),
>    3) + diff(capital, 2) + diff(capital, 3)
>
> Coefficients:
>  lag(log(emp), 1)  lag(log(emp), 2) lag(log(wage), 2) lag(log(wage), 3)
>  diff(capital, 2)
>        0.8678675        -0.1936447        -0.1632724         0.3200785
>   0.0037612
>  diff(capital, 3)
>        0.0137866
>
>
> --
> David.
> On Nov 27, 2009, at 12:04 PM, Owen Powell wrote:
>
>> Hi David,
>>
>> Thank you for the response.
>>
>> I forgot to mention that I'd already tried what (I think) you propose
>> (adding ".form" to the end of the "lag", "log" and "diff") and I still
>> see the same results (posted below). Specifically, I still see no
>> lags, logs or diffs in my model.
>>
>> Any other ideas?
>>
>> ~Owen
>>
>> R> rm(list = ls())
>> R> options(prompt= "R> ")
>> R> library("plm")
>> R> data("EmplUK", package="plm")
>> R> EmplUK <- plm.data(EmplUK, index = c("firm", "year"))
>> R>
>> log(emp)~lag(log(emp),1)+lag(log(emp),2)+lag(log(wage),2)+lag(log(wage),3)+diff(capital,2)+diff(capital,3)
>> log(emp) ~ lag(log(emp), 1) + lag(log(emp), 2) + lag(log(wage),
>>   2) + lag(log(wage), 3) + diff(capital, 2) + diff(capital,
>>   3)
>> R> a =
>> dynformula(emp~wage+capital,log.form=list(capital=FALSE,TRUE),lag.form=list(emp=2,c(2,3)),diff.form=list(FALSE,capital=TRUE))
>> R> grun.fe <- plm(formula = a,data=EmplUK,model="within")
>> [1] 1031    2
>> R> summary(grun.fe)
>> Oneway (individual) effect Within Model
>>
>> Call:
>> plm(formula = a, data = EmplUK, model = "within")
>>
>> Unbalanced Panel: n=140, T=7-9, N=1031
>>
>> Residuals :
>>   Min.  1st Qu.   Median  3rd Qu.     Max.
>> -17.1000  -0.3060   0.0137   0.3070  27.3000
>>
>> Coefficients :
>>        Estimate Std. Error t-value  Pr(>|t|)
>> wage    -0.143626   0.032790 -4.3802 1.186e-05 ***
>> capital  0.801495   0.064088 12.5062 < 2.2e-16 ***
>> ---
>> Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
>>
>> Total Sum of Squares:    5030.6
>> Residual Sum of Squares: 4207.8
>> F-statistic: 86.9179 on 2 and 889 DF, p-value: < 2.22e-16
>>
>> 2009/11/27 David Winsemius <dwinsemius at comcast.net>
>>>
>>> On Nov 27, 2009, at 10:25 AM, Owen Powell wrote:
>>>
>>>> Hello list,
>>>>
>>>> I'm following the paper (http://www.jstatsoft.org/v27/i02/paper) on
>>>> how to use "plm" to run panel regressions, and am having trouble with
>>>> what I believe should be something very basic.
>>>>
>>>> When I run the command (p.9 in the paper):
>>>>
>>>> R>
>>>>
>>>> dynformula(emp~wage+capital,log=list(capital=FALSE,TRUE),lag=list(emp=2,c(2,3)),diff=list(FALSE,capital=TRUE))
>>>>
>>>
>>> Perhaps you could have read the help page for the current version of the
>>> package which says the argument have been modified. Using the current
>>> arguments:
>>>
>>>
>>> dynformula(emp~wage+capital,log.form=list(capital=FALSE,TRUE),lag.form=list(emp=2,c(2,3)),diff.form=list(FALSE,capital=TRUE))
>>>
>>> log(emp) ~ lag(log(emp), 1) + lag(log(emp), 2) + lag(log(emp),
>>>   1) + lag(log(emp), 2) + lag(log(wage), 2) + lag(log(wage),
>>>   3) + diff(capital, 2) + diff(capital, 3)
>>>
>>> --
>>> David Winsemius, MD
>>>
>>>> I see:
>>>>
>>>> emp ~ wage + capital
>>>>
>>>> rather than the complete model that is given in the paper:
>>>>
>>>> log(emp) ~ lag(log(emp), 1) + lag(log(emp), 2) + lag(log(wage), 2) +
>>>> lag(log(wage), 3) + diff(capital, 2) + diff(capital, 3)
>>>>
>>>> And indeed, when I try to run a regression using that formula, it
>>>> appears to not contain any lags or logs (output below).
>>>>
>>>> Any ideas? Thanks in advance,
>>>>
>>>> ~Owen
>>>>
>>>> --
>>>> Owen Powell
>>>> http://center.uvt.nl/phd_stud/powell
>>>>
>>>> R> library("plm")
>>>> R> data("EmplUK", package="plm")
>>>> R> a =
>>>>
>>>> dynformula(emp~wage+capital,log=list(capital=FALSE,TRUE),lag=list(emp=2,c(2,3)),diff=list(FALSE,capital=TRUE))
>>>
>>> snipped
>>>
>>>
>>> David Winsemius, MD
>>> Heritage Laboratories
>>> West Hartford, CT
>>>
>>
>>
>>
>> --
>> Owen Powell
>> http://center.uvt.nl/phd_stud/powell
>
> David Winsemius, MD
> Heritage Laboratories
> West Hartford, CT
>
>



-- 
Owen Powell
http://center.uvt.nl/phd_stud/powell




More information about the R-help mailing list