mtcars # data on cars # Is fuel efficiency better for manual transmission cars (am=1)? t.test(mpg ~ factor(am), mtcars) mpg ~ factor(gear) g <- as.numeric(factor(mtcars$gear)) X <- cbind(1, as.numeric(g == 1), as.numeric(g == 2), as.numeric(g == 3)) ## or, more simply X <- cbind(1, diag(length(unique(g)))[g, ]) for (nm in c("cyl", "vs", "am", "gear", "carb")) mtcars[[ nm ]] <- as.factor(mtcars[[ nm ]]) str(mtcars) ## This actually makes a copy of 'mtcars' in the global environment find("mtcars") str(datasets::mtcars) # unchanged model.matrix(mpg ~ gear, data = mtcars) model.matrix(mpg ~ gear, data = mtcars, contrasts.arg = list(gear = contr.SAS)) model.matrix(mpg ~ gear, data = mtcars, contrasts.arg = list(gear = contr.poly)) model.matrix(mpg ~ gear, data = mtcars, contrasts.arg = list(gear = contr.helmert)) fm1 <- lm(mpg ~ gear, data = mtcars) summary(fm1) anova(fm1) fm2 <- lm(mpg ~ gear + cyl, data = mtcars) summary(fm2) anova(fm2) fm3 <- lm(mpg ~ cyl + gear, data = mtcars) summary(fm3) anova(fm3) drop1(fm2) boxplot(mpg ~ cyl, mtcars) boxplot(mpg ~ gear, mtcars) ## Regression models fm4 <- lm(mpg ~ disp, data = mtcars) summary(fm4) anova(fm4) plot(mpg ~ disp, data = mtcars) plot(mpg ~ wt, data = mtcars) fm5 <- lm(mpg ~ disp + wt, data = mtcars) summary(fm5) anova(fm5) fm6 <- lm(mpg ~ wt + disp, data = mtcars) summary(fm6) anova(fm6) fm7 <- lm(mpg ~ gear + wt + disp, data = mtcars) summary(fm7) anova(fm7) ## Simpler model with one numeric and one categorical variable fm8 <- lm(mpg ~ gear + wt, data = mtcars) plot(mpg ~ wt, mtcars, col = mtcars$gear) coef(fm8) abline(coef(fm8)[1], coef(fm8)["wt"], col = 1) abline(coef(fm8)[1] + coef(fm8)[2], coef(fm8)["wt"], col = 2) abline(coef(fm8)[1] + coef(fm8)[3], coef(fm8)["wt"], col = 3) fm9 <- lm(mpg ~ gear + wt + gear:wt, data = mtcars) fm9 <- lm(mpg ~ gear * wt, data = mtcars) plot(mpg ~ wt, mtcars, col = mtcars$gear) cc <- coef(fm9) abline(cc[1], cc[4], col = 1) abline(cc[1] + cc[2], cc[4] + cc[5], col = 2) abline(cc[1] + cc[3], cc[4] + cc[6], col = 3) summary(fm9) anova(fm9) fm9 <- lm(mpg ~ gear:wt + gear + wt, data = mtcars)