Skip to content
Prev 138364 / 398506 Next

How to include an externally defined NULL value in lm

Matthieu wants to manipulate the *formula* --- i.e. control
what predictors go into the formula --- rather than to add something
to one of the predictors (or not, as the case maybe).

I.e. what is wanted is that if ``condition'' is TRUE then the
formula should be

	freeny.y ~ freeny.x[,-4] + freeny.x[,4]

and otherwise it should be

	freeny.y ~ freeny.x[,-4]

The subtlety is that `` y ~ x + NULL'' gives the model ``y = beta_0 +  
beta_1 * x + E''
Whereas ``y ~ x + a'' gives the model ``y = beta_0 + beta_1 * x +  
beta_2 * a + E''.
Irrespective of what the object a happens to be --- or even of  
whether it exists.
(This is a bit of an oversimplification I think, but close enuff.)

Then when lm() tries to fit y = beta_0 + beta_1 * x + beta_2 * a + E
it gets all in a dither when a is NULL, because the model does not then
make sense.

I'm afraid I don't know how to get around the problem using the NULL  
concept.
Wiser heads than mine may be able to suggest a way.

There are however different approaches to the problem, ***not***  
using NULL.

E.g.

	fff <- if(connie) as.formula(freeny.y ~ freeny.x[,-4] + freeny.x[, 
4]) else as.formula(freeny.y ~ freeny.x[,-4])
	fit <- lm(fff)

or (more sensibly?)

	fff <- if(connie) as.formula(freeny.y ~ freeny.x) else as.formula 
(freeny.y ~ freeny.x[,-4])
	fit <- lm(fff)

More sensibly still:

	fff <- if(connie) y ~ . else y ~ . - market.potential
	fit <- lm(fff,data=freeny)

Where ``connie'' is some condition (with value either TRUE or FALSE).

Formulae can also be constructed as text strings (e.g. using  
``paste'') and then converted
to actual formulae using as.formula().

HTH.

	cheers,

		Rolf Turner
On 4/03/2008, at 11:34 AM, <markleeds at verizon.net> wrote:

            
######################################################################
Attention:\ This e-mail message is privileged and confid...{{dropped:9}}