In R building and changing a model is an interactive and iterative process.
Assume that we start with this model
model1 <- lm(infmor ~ urb + gnpcap + doct) | store it as a object we will modify later using appropriate functions |
summary(model1) | Display the regression table |
infmor ~ urb + gnpcap + doct) is a formula (click on the link if you do not know what this means, as this is essential for what follows.
Nested/hierarchical regression is not implemented as a specific method, you simply add or remove variables you consider as "blocks" to be dealt together simultaneously.
model2 = update(model1, .~.,-doct) | Take the initial model and remove doct. .~. this syntax means the same dependent and independents (dot means the same |
model3=update(model1,log(.)~.) | Same model, but log of dependent |
model4=update(model1,~.~,+lit - gnpcap) | Add lit and remove gnpcap |
Stepwise regression as well works from a model you have already defined as above.
There are two basic functions add1 and drop1 to add and remove variables from a model of type lm or glm. step calls these functions repeatedly
step(model1, direction="backward") | |
step(model1, direction="forward") | |
step(model1) |
Other variable selection functions are available
Package {MASS}
model <- lm(infmor~urb+gnpcap+lit,data=world) | Model as usual |
model1 <- stepAIC(model, direction="both") | Use stepAIC() |
summary(model1) | Display regression table |
All Subsets regression: Package {leaps}
model<-regsubsets(infmor~urb+gnpcap+lit+gnpagr+doct,data=world,nbest=10) | |
summary(model) | Display results |
plot(model,scale="r2") | table of models, ordered by r2 |
subsets(leaps, statistic="rsq") | {car} alternative model plots from {car} |