Mostrando entradas con la etiqueta recta de regresión. Mostrar todas las entradas
Mostrando entradas con la etiqueta recta de regresión. Mostrar todas las entradas

2018-12-17

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

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 el gráfico de la figura 3.1. Utiliza el conjunto de datos Advertising.Los puntos rojos representan los valores observados de ventas (sales) y los presupuestos de televisión (TV). La línea azul representa la recta de regresión. Las líneas grises verticales representan el error asociado con cada observación. Hay errores positivos (si la observación se sitúa por encima de la líneaazul) y negativos (si la observación se sitúa por debajo de la curva).

Solución

Con la función theme personalizamos el formato: rotamos las etiquetas del eje y, eliminamos el color de fondo, y añadimos el borde.

library(tidyverse)
ggplot(ad_fitted, aes(x = budgets, y = sales)) +
  geom_point(colour = "red") +
  geom_smooth(se = FALSE, method = lm) +
  geom_segment(aes(
    x = budgets,
    y = sales,
    xend = budgets,
    yend = fitted
  )) +
  scale_x_continuous(breaks = seq(0, 300, by = 50)) +
  scale_y_continuous(breaks = seq(0, 25, by = 5)) +
  theme(
    axis.text.y = element_text(angle = 90, hjust = 1),
    panel.background = element_blank(),
    panel.border = element_rect(fill = NA)
  )
Si deseamos mantener la cuadrícula, pero eliminar el color de fondo (theme_bw) y modificar el título del eje x (labs):

ggplot(ad_fitted, aes(x = budgets, y = sales)) +
  geom_point(colour = "red") +
  geom_smooth(se = FALSE, method = lm) +
  geom_segment(aes(
    x = budgets,
    y = sales,
    xend = budgets,
    yend = fitted
  )) +
  labs(x = "TV")+
  scale_x_continuous(breaks = seq(0, 300, by = 50)) +
  scale_y_continuous(breaks = seq(0, 25, by = 5)) +
  theme_bw()+
  theme(axis.text.y = element_text(angle = 90, hjust = 1))

Entradas relacionadas

Referencias

2018-09-04

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

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.2. Utiliza el conjunto de datos Income (renta). A la izquierda los puntos rojos representan los valores observados de renta (en miles de dólares) y los años de educación de 30 individuos. A la derecha la curva azul representa la verdadera relación subyacente entre la renta y los años de educación, que es generalmente desconocida (pero es conocida en este caso porque los datos fueron simulados). Las líneas negras representan el error asociado con cada observación. Hay errores positivos (si la observación se sitúa por encima de la curva azul) y negativos (si la observación se sitúa por debajo de la curva). En total, la media de estos errores es aproximadamente cero.

Solución

Necesitamos crear un nuevo data frame, en el que añadimos una nueva columna con los valores ajustados calculado por el modelo usado por ggplot2 (el método loess es usado para menos de 1.000 observaciones)

library(ggplot2)
library(cowplot)
income_1 <- read.csv("http://www-bcf.usc.edu/~gareth/ISL/Income1.csv")

# Gráfico A
p1 <- ggplot(income_1, aes(x= Education, y = Income)) + 
  geom_point()+
  geom_smooth()

# Gráfico B
mod <- loess(Income ~ Education, data = income_1)
income <- transform(income_1, fitted = fitted(mod))
p2 <- ggplot(income, aes(x= Education, y = Income)) + 
  geom_point(colour = "red")+
  geom_smooth(se = FALSE)+
  geom_segment(aes(x = Education, y = Income,
                   xend = Education, yend = fitted))

# Ambos gráficos
theme_set(theme_grey()) # Mantiene theme_grey
plot_grid(p1, p2 , labels = "AUTO")

Entradas relacionadas

Referencias

2018-09-02

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

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.1. Utilizan el conjunto de datos Advertising. El gráfico representa las ventas en unidades de mil como una función de los presupuestos de televisión, radio o prensa, para 200 mercados. En cada gráfico se muestra la recta de regresión lineal que mejor se ajusta para las ventas y cada variable, descrito en el capítulo 3 del libro. En otras palabras, cada línea azul representa un modelo simple que puede ser usado para predecir las ventas usando la televisión, radio o prensa respectivamente.

Solución

library(tidyr)
library(ggplot2)
ad <- read.csv("http://www-bcf.usc.edu/~gareth/ISL/Advertising.csv")
ad_long <-  gather(ad, media, budgets,  TV:newspaper, factor_key = TRUE)
ggplot(ad_long, aes(x = budgets, y = sales, colour = media)) +
  geom_point()
ggplot(ad_long, aes(x = budgets, y = sales)) +
  geom_point() +
  facet_grid( ~ media, scales = "free") +
  geom_smooth(method = "lm")

Entradas relacionadas

2015-01-09

Regresión lineal simple en R con ggplot2

Title En una entrada anterior vimos un ejemplo de regresión lineal simple y creamos el diagrama de dispersión y la recta de regresión con funciones del paquete graphics. En esta ocasión emplearemos el paquete ggplot2. Como ejemplo, usamos los datos cats del peso corporal y del corazón de una muestra gatos del paquete MASS en R.

Código

library(MASS)
library(ggplot2)
ggplot(cats, aes(Bwt, Hwt))+
  geom_point(shape = 1)+   
  geom_smooth(method = lm, # Recta de regresión
              se = FALSE)  # Oculta intervalo de confianza

Diagrama de dispersión

Notas

Con la función qplot podemos obtener un gráfico muy similar.

qplot(Bwt, Hwt, data = cats)+ 
  stat_smooth(method = lm, se = FALSE)

Referencias

Nube de datos