Mostrando entradas con la etiqueta gather. Mostrar todas las entradas
Mostrando entradas con la etiqueta gather. Mostrar todas las entradas

2019-04-08

Quantile-quantile (Q-Q) plots with ggplot2

Problem

We'd like to create quantile-quantile (Q-Q) plots using ggplot2.

Solution

  • Option 1: one column.
  • We create two examples using one column of a data frame. In the first example, we previously transform the vector rivers into a data frame. In the second, we use the column Volume from the data frame trees.

    library(tidyverse)
    ggplot(data.frame(rivers), aes(sample = rivers)) + stat_qq() + stat_qq_line()
    ggplot(trees, aes(sample = Volume)) + stat_qq() + stat_qq_line()
    
  • Option 2: multiple columns.
  • We compare the distribution of Miles/(US) gallon by number of cylinders (cyl).

    ggplot(mtcars, aes(sample = mpg, colour = factor(cyl))) +
      stat_qq() +
      stat_qq_line()
    
  • Option 3: multiple panels.
  • In this first example no transformation is needed because a column of the data frame contains the groups..

    ggplot(mtcars, aes(sample = mpg)) +
      facet_wrap( ~ factor(cyl)) +
      stat_qq() +
      stat_qq_line()
    
    In the second example, we convert the data frame from wide format to long format for faceting into multiple panels with facet_wrap. Instead of 31 observations for 3 variables, we will have one column condition containing 93 observaciones for the 3 variables.

    gather(trees, condition, measurement, Girth:Volume, factor_key = TRUE) %>%
      ggplot(aes(sample = measurement)) +
      facet_wrap( ~ condition, scales = "free") +
      stat_qq() +
      stat_qq_line()
    
    In the third example, we convert from wide to long, facet by chemical composition, and use a colour for each kiln.

    library(HSAUR2)
    gather(pottery, condition, measurement, Al2O3:BaO, factor_key = TRUE) %>%
      ggplot(aes(sample = measurement, colour = kiln)) +
      facet_wrap(~ condition, scales = "free") +
      stat_qq() +
      stat_qq_line()
    

References

2019-03-09

Gráficos Q-Q con ggplot2

Problema

En entradas anteriores explicamos como crear un gráfico Q-Q con el paquete stats preinstalado por defecto. En esa ocasión mostraremos cómo crear estos gráficos con ggplot2.

Solución

  • Opción 1: única columna.
  • Creamos dos ejemplos de una sola columna de un data frame. En el primero el vector rivers que transformamos previamente en un data frame, y en el segundo la columna Volume del data frame trees.

    library(tidyverse)
    ggplot(data.frame(rivers), aes(sample = rivers)) + stat_qq() + stat_qq_line()
    ggplot(trees, aes(sample = Volume)) + stat_qq() + stat_qq_line()
    
  • Opción 2: múltiples columnas.
  • Comparamos las distribuciones de Miles/(US) gallon por número de cilindros (cyl).

    ggplot(mtcars, aes(sample = mpg, colour = factor(cyl))) +
      stat_qq() +
      stat_qq_line()
    
  • Opción 3: múltiples paneles.
  • En este primer ejemplo no es necesario realizar ninguna transformación porque el data frame tiene una columna con los grupos.

    ggplot(mtcars, aes(sample = mpg)) +
      facet_wrap( ~ factor(cyl)) +
      stat_qq() +
      stat_qq_line()
    
    En este segundo ejemplo transformamos el data frame de formato ancho a largo para poder crear los paneles con facet_wrap. En lugar de tener 31 observaciones para 3 variables, tendremos una columna condition con las 3 variables y 93 observaciones.

    gather(trees, condition, measurement, Girth:Volume, factor_key = TRUE) %>%
      ggplot(aes(sample = measurement)) +
      facet_wrap( ~ condition, scales = "free") +
      stat_qq() +
      stat_qq_line()
    
    En este tercer ejemplo empleamos múltiples colores en función del kiln en cada panel por sustancia química encontrada.

    library(HSAUR2)
    gather(pottery, condition, measurement, Al2O3:BaO, factor_key = TRUE) %>%
      ggplot(aes(sample = measurement, colour = kiln)) +
      facet_wrap(~ condition, scales = "free") +
      stat_qq() +
      stat_qq_line()
    

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

Nube de datos