On Jun 18, 2009, at 5:50 PM, Marc Schwartz wrote:


On Jun 18, 2009, at 4:36 PM, Jack Luo wrote:

Hi,

I am trying to use glm to fit my data, wondering if there is a easy way to fit a glm without typing all the explanatory variable names. For example, if I have 100 explanatory variables x1, x2, ..., x100 and response variable is
y, I don't want to do something like
glm1 <- glm(y ~ x1 + x2 + ... + x100, family = gaussian, data = dataA)
since it would be a lot of typing.

Many thanks,

-Jack

If y and x1 through x100 are the only variables in dataA, you can use:

 glm(y ~ ., data = dataA)

The '.' in the formula indicates that all variables not already in the formula should be used.

See ?formula for more information.


It's also possible to use indexed matrices or dataframes in the formula so that if you have an indexable object you can do regressions thusly:

glm(datm[,10] ~ datm[,1:9])
# or using just part of that matrix
glm(datm[,10] ~ datm[ , 4:9])
# or non-adjacent selection of columns
glm(datm[,"Y"] ~ datm[,c(2:3,5:7)])

This would put the onus on you to remember which columns are which when making up the glm call. You don't get the handy labeling in the formulae, but the output will have the column names if they have been assigned. If the object is a matrix as this was, then you cannot use the data="df.name" argument.

> glm(datm[,"Y"] ~ datm[,c(2:3,5:7)])

Call:  glm(formula = datm[, "Y"] ~ datm[, c(2:3, 5:7)])

Coefficients:
(Intercept) datm[, c(2:3, 5:7)]X2 datm[, c(2:3, 5:7)]X3 datm[, c(2:3, 5:7)]X5 21.70 0.00 0.00 0.00
datm[, c(2:3, 5:7)]X6  datm[, c(2:3, 5:7)]X7
                 0.00                   0.00

Degrees of Freedom: 9 Total (i.e. Null);  4 Residual
Null Deviance:      0
Residual Deviance: 1.262e-28    AIC: -623

You could wrap the subsetted matrix in as.data.frame(.):

> glm(Y ~ ., data=as.data.frame(datm[ ,c(2:3,5:7,10)] ) ) # don't forget (as I first did) to include "Y"

Call: glm(formula = Y ~ ., data = as.data.frame(datm[, c(2:3, 5:7, 10)]))

Coefficients:
(Intercept) X2 X3 X5 X6 X7 21.70 0.00 0.00 0.00 0.00 0.00

Degrees of Freedom: 9 Total (i.e. Null);  4 Residual
Null Deviance:      0
Residual Deviance: 1.262e-28    AIC: -623

--

David Winsemius, MD
Heritage Laboratories
West Hartford, CT

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to