EmpezarEmpieza gratis

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 $1000
  • size: 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.

scatterplot

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

Ver curso

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_sqr a los datos usando fmla_sqr.
  • Para comparar, ajusta un modelo lineal model_lin a los datos usando la fórmula price ~ size.
  • Rellena los huecos para
    • generar predicciones sobre los datos de entrenamiento con los dos modelos
    • pivotar las predicciones a una única columna pred usando pivot_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")
Editar y ejecutar código