2018-09-15

Gráficos de An Introduction to Statistical Learning - Figura 2.5.

Gráfico a replicar

Continuamos con la serie iniciada sobre la creación de gráficos del libro An Introduction to Statistical Learning. En esta ocasión replicaremos los gráficos de la figura 2.5. Utiliza el conjunto de datos Income2 (renta). El gráfico representa los valores observados de renta (en miles de dólares) en función de los años de educación y la antigüedad de 30 individuos. Los puntos rojos representan los valores observados para esas tres variables. La superficie amarilla representa un modelo de suavizado con thin-plate spline. En este caso . Las líneas verticales negras representan el error asociado con cada observación.

Solución

Prácticamente idéntica a las dos entradas anteriores, con la diferencia de que en lugar de la función loess o lm para ajustar un modelo lineal, empleamos otros modelos de suavizado con splines, con diferentes parámetros (tensor product, o bivariate).

  • Tensor product
  • Bivariate
  • income_2 <- read.csv("http://www-bcf.usc.edu/~gareth/ISL/Income2.csv")
    library(mgcv)
    model1 <- gam(Income ~ te(Education, Seniority, bs = "tp"), data = income_2) # tensor product
    model1 <- gam(Income ~ s(Education, Seniority, bs = "tp"), data = income_2) # bivariate
    x <- range(income_2$Education)
    x <- seq(x[1], x[2], length.out=30)
    y <- range(income_2$Seniority)
    y <- seq(y[1], y[2], length.out=30)
    z <- outer(x,y,
               function(Education,Seniority)
                         predict(model1, data.frame(Education,Seniority)))
    p <- persp(x,y,z, theta=30, phi=30,
               col="yellow",expand = 0.5,shade = 0.2,
               xlab="Education", ylab="Seniority", zlab="Income")
    obs <- trans3d(income_2$Education, income_2$Seniority,income_2$Income,p)
    pred <- trans3d(income_2$Education, income_2$Seniority,fitted(model1),p)
    points(obs, col="red",pch=16)
    segments(obs$x, obs$y, pred$x, pred$y)
    

    Entradas relacionadas

    Referencias

    No hay comentarios:

    Publicar un comentario

    Nube de datos