[R] Problem with systemfit 0.7-3 and transformed variables

Mikko Pakkanen mikko.pakkanen at helsinki.fi
Wed May 25 11:43:29 CEST 2005


The 'systemfit' function in systemfit 0.7-3 CRAN package seems to have a
problem with formulas that contain transformed (eg. log) variables. If I
have my data in a data frame, apparently systemfit doesn't "pass" the
information of where the variables should be taken to the transforming function.

I'm not entirely sure if this is a bug or just a limitation, I was just
surprised when I attempted to estimate a model, which I'd previously
estimated with OLS using 'lm', with 2SLS using 'systemfit' and it didn't
accept those transformations like 'lm' does.

Here's an example: this is, of course, OK:

> data(kmenta)
> demand <- q ~ p + d
> instr <- ~ d + f
> fit1 <- systemfit("2SLS", eqns=list(demand), inst=instr, data=kmenta)

But, now if I'd like to estimate a model with logarithm of p as a regressor,
an error occurs: 

> demand2 <- q ~ log(p) + d
> fit2 <- systemfit("2SLS", eqns=list(demand2), inst=instr, data=kmenta)
Error in log(p) : Object "p" not found

However, estimating the same formula with OLS using the regular 'lm' is OK:
> fit2.ols <- lm(demand2, kmenta)

Transforming an instrument causes the same error too:

> instr2 <- ~ log(d) + f
> fit3 <- systemfit("2SLS", eqns=list(demand), inst=instr2, data=kmenta)
Error in log(d) : Object "d" not found

One could certainly just create those transformed variables to avoid the
problem, but it would be much more convenient, if it wasn't necessary,
especially if several regressors are involved.

> version
         _              
platform i386-pc-mingw32
arch     i386           
os       mingw32        
system   i386, mingw32  
status                  
major    2              
minor    1.0            
year     2005           
month    04             
day      18             
language R 

Regards,

-Mikko Pakkanen




More information about the R-help mailing list