Análisis de Regresión Lineal del Consumo de Combustible (MPG) en R
Variables categóricas y continuas
cate <- c('cylinders','model_year','origin')
cont <- setdiff(names(autompg), cate)
for(col in cate) autompg[,col] <- as.factor(autompg[,col])
Diagrama de cajas de variables categóricas
par(mfrow=c(1,2))
boxplot(autompg$mpg, main = 'mpg boxplot')
boxplot(mpg ~ cylinders, data = autompg, col = c('red','blue','green','brown','yellow'), main = 'mpg by cylinders')
abline(h = mean(autompg$mpg), lty = 2, lwd = 3)
abline(h = median(autompg$mpg), lty = 1, lwd = 3)
Histograma de variables continuas
par(mfrow=c(1,2))
hist(autompg$acceleration, main = 'acceleration histogram', xlab = 'acceleration')
abline(v = mean(autompg$acceleration), lty = 2, col = 'red')
abline(v = median(autompg$acceleration), lty = 1, col = 'red')
boxplot(autompg$acceleration, main = 'acceleration boxplot', horizontal = TRUE)
Dispersión
scatter.smooth(autompg$displacement, autompg$mpg, xlab = 'displacement', ylab = 'mpg', lpars = list(col = 'red', lwd = 2), pch = 20)
abline(lm(mpg ~ displacement, data = autompg), lty = 2, col = 'red', lwd = 2)
Con colores
plot(autompg$horsepower, autompg$mpg, xlab = 'horsepower', ylab = 'mpg', col = c('red','blue','green')[autompg$origin], pch = 20)
legend('topright', legend = levels(autompg$origin), col = c('red','blue','green'), pch = 20)
Modelos de regresión lineal
fit1 <- lm(mpg ~ ., data = autompg)
summary(fit1)
fit2 <- lm(mpg ~ ., data = autompg[,-6])
summary(fit2)
Comparación de R2
R2s.fit1 <- c(summary(fit1)$r.squared, summary(fit1)$adj.r.squared)
R2s.fit2 <- c(summary(fit2)$r.squared, summary(fit2)$adj.r.squared)
data.frame('fit1' = R2s.fit1, 'fit2' = R2s.fit2, row.names = c('R2','R2adj'))
Matriz de variables dummy para cilindros
cyl.dummy <- matrix(0, nlevels(autompg$cylinders), (nlevels(autompg$cylinders) - 1))
colnames(cyl.dummy) <- c('x1','x2','x3','x4')
rownames(cyl.dummy) <- levels(autompg$cylinders)
fix(cyl.dummy)
Estimación de coeficientes
X <- model.matrix(fit2)
dim(X)
y <- as.matrix(autompg$mpg)
dim(y)
b <- solve(t(X) %*% X) %*% t(X) %*% y
Supuestos del modelo
El supuesto adicional que se necesita es que ε sea un vector de variables aleatorias independientes distribuidas normalmente con E(ε) = 0 y matriz de varianza-covarianza var(ε) = σ2I. Supongamos por ahora que este supuesto se cumple.