Transformaciones de entrada: el "stick de hockey"
En este ejercicio, vamos a construir un modelo para predecir el precio a partir de una medida del tamaño de la casa (superficie). El conjunto de datos houseprice, ya cargado, tiene las columnas:
price: precio de la casa en unidades de $1000size: superficie
Un diagrama de dispersión de los datos muestra que la relación es bastante no lineal: una especie de "stick de hockey", donde el precio es bastante plano para casas pequeñas, pero sube con fuerza a medida que la casa es más grande. Las funciones cuadráticas y cúbicas suelen ser formas funcionales útiles para expresar relaciones de tipo stick de hockey. Ten en cuenta que puede que no haya una razón "física" para que price esté relacionado con el cuadrado de size; una cuadrática es simplemente una aproximación en forma cerrada de la relación observada.

Ajustarás un modelo para predecir el precio como función del tamaño al cuadrado y verás su ajuste en los datos de entrenamiento.
Como ^ también es un símbolo para expresar interacciones, usa la función I() (docs) para tratar la expresión x^2 “tal cual”: es decir, como el cuadrado de x y no como la interacción de x consigo misma.
ejemploFormula = y ~ I(x^2)
Este ejercicio forma parte del curso
Aprendizaje supervisado en R: Regresión
Instrucciones del ejercicio
- Escribe una fórmula,
fmla_sqr, para expresar el precio como función del tamaño al cuadrado. Imprímela. - Ajusta un modelo
model_sqra los datos usandofmla_sqr. - Para comparar, ajusta un modelo lineal
model_lina los datos usando la fórmulaprice ~ size. - Rellena los huecos para
- generar predicciones sobre los datos de entrenamiento con los dos modelos
- pivotar las predicciones a una única columna
predusandopivot_longer(). - comparar gráficamente las predicciones de ambos modelos con los datos. ¿Cuál ajusta mejor?
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
# houseprice is available
summary(houseprice)
# Create the formula for price as a function of squared size
(fmla_sqr <- ___)
# Fit a model of price as a function of squared size (use fmla_sqr)
model_sqr <- ___
# Fit a model of price as a linear function of size
model_lin <- ___
# Make predictions and compare
houseprice %>%
mutate(pred_lin = ___(___), # predictions from linear model
pred_sqr = ___(___)) %>% # predictions from quadratic model
pivot_longer(cols = c('pred_lin', 'pred_sqr'), names_to = 'modeltype', values_to = 'pred') %>% # pivot the predictions
ggplot(aes(x = size)) +
geom_point(aes(y = ___)) + # actual prices
geom_line(aes(y = ___, color = modeltype)) + # the predictions
scale_color_brewer(palette = "Dark2")