2018-08-27

Gráficos de An Introduction to Statistical Learning con ggplot2 - Figura 1.3.

Gráfico a replicar

Continuamos con la serie iniciada sobre la creación de gráficos del libro An Introduction to Statistical Learning con ggplot2 parte 1. En esta ocasión replicaremos el gráfico de la figura 1.3. Se trata de un diagrama de caja en el que representamos el resultado de un análisis discriminante cuadrático (lda). Aplicamos un análisis análisis discriminante cuadrático al subconjunyo de datos de Smarket comprendido entre 2001-2007 y predecimos la probabilidad de que el mercado de valores decrezca usando los datos de 2005.

Solución

# Análisis discriminante cuadrático
library(ISLR)
library(MASS)
library(ggplot2)
train <- (Smarket$Year < 2005)
Direction.2005 <- Smarket$Direction[!train]
Smarket.2005 <- Smarket[!train,]
qda.fit <-  qda(Direction ~ Lag1 + Lag2, data = Smarket, subset = train)
qda.class <- predict(qda.fit, Smarket.2005)$class
mean(qda.class == Direction.2005)
[1] 0.5992063
En media la predicción de probabilidad de que decrezca el mercado de valores es mayor en los días en los que el mercado decrece. Basándonos en estos resultados, podemos predecir correctamente la dirección del movimiento de mercado en un 60% de las veces.

  • Gráfico
  • En este caso la creación del gráfico es sencilla y prácticamente idéntica a la de la entrada anterior. El único reto es utilizar correctamente la salida de datos de qda.pred.

    qda.pred <- predict(qda.fit, Smarket.2005)
    qda.pred <- cbind(data.frame(qda.pred), pred = Direction.2005)
    
    ggplot(qda.pred, aes(x = pred, y = posterior.Down, fill = pred)) +
      stat_boxplot(geom = "errorbar", width = 0.5) +
      geom_boxplot(show.legend = FALSE, outlier.alpha = .5) +
      scale_fill_manual(values = c("royalblue", "orangered")) +
      labs(x = "Today's Direction", y = "Predicted probability")
    
    Dejo el panel de fondo por defecto pues ayuda a evaluar mejor el gráfico. Si lo que queremos en blanco tal y como el libro añadiríamos al código anterior:

    theme(panel.background = element_blank())

    Entradas relacionadas

    No hay comentarios:

    Publicar un comentario

    Nube de datos