geom_density
Dada una variable continua puedes crear un gráfico de densidad en ggplot2 haciendo uso de la función geom_density
.
# install.packages("ggplot2")
library(ggplot2)
# Datos
set.seed(14012021)
x <- rnorm(200, mean = 4)
df <- data.frame(x)
# Gráfico de densidad básico en ggplot2
ggplot(df, aes(x = x)) +
geom_density()
La curva se puede personalizar de diferentes maneras, tales como cambiar el color, el ancho o el tipo de línea.
# install.packages("ggplot2")
library(ggplot2)
# Datos
set.seed(14012021)
x <- rnorm(200, mean = 4)
df <- data.frame(x)
# Gráfico de densidad en ggplot2
ggplot(df, aes(x = x)) +
geom_density(color = 4, # Color
lwd = 1, # Ancho
linetype = 1) # Tipo
También puedes colorear el área bajo la curva y establecer un nivel de transparencia con los argumentos fill
y alpha
, respectivamente.
# install.packages("ggplot2")
library(ggplot2)
# Datos
set.seed(14012021)
x <- rnorm(200, mean = 4)
df <- data.frame(x)
# Gráfico de densidad en ggplot2
ggplot(df, aes(x = x)) +
geom_density(color = 4,
fill = 4,
alpha = 0.25)
Cuando se calcula una estimación tipo núcleo es necesario seleccionar un parámetro ventana (parámetro de suavizado o bandwidth). Una ventana muy grande hará la curva muy suave, mientras que uno pequeño hará que la curva sea afilada.
El método utilizado por defecto para calcular la ventana se llama rule-of-thumb (regla del pulgar), pero puedes elegir otras opciones, utilizar un multiplicador de la ventana o escoger el valor que quieras, tal y como se muestra en los ejemplos siguientes.
Multiplicador de la ventana
# install.packages("ggplot2")
library(ggplot2)
# Datos
set.seed(14012021)
x <- rnorm(200, mean = 4)
df <- data.frame(x)
# Multiplicador de la ventana
ggplot(df, aes(x = x)) +
geom_density(adjust = 1.75)
Ventana de Scott (factor 1.06)
# install.packages("ggplot2")
library(ggplot2)
# Datos
set.seed(14012021)
x <- rnorm(200, mean = 4)
df <- data.frame(x)
# Custom bandwidth
ggplot(df, aes(x = x)) +
geom_density(bw = "nrd")
Validación cruzada insesgada
# install.packages("ggplot2")
library(ggplot2)
# Datos
set.seed(14012021)
x <- rnorm(200, mean = 4)
df <- data.frame(x)
# Validación cruzada insesgada
ggplot(df, aes(x = x)) +
geom_density(bw = "ucv")
Validación cruzada sesgada
# install.packages("ggplot2")
library(ggplot2)
# Datos
set.seed(14012021)
x <- rnorm(200, mean = 4)
df <- data.frame(x)
# Validación cruzada sesgada
ggplot(df, aes(x = x)) +
geom_density(bw = "bcv")
Método de Sheather & Jones
# install.packages("ggplot2")
library(ggplot2)
# Datos
set.seed(14012021)
x <- rnorm(200, mean = 4)
df <- data.frame(x)
# Método SJ
ggplot(df, aes(x = x)) +
geom_density(bw = "SJ")
El kernel (núcleo) utilizado se puede cambiar con el argumento kernel
. Las posibles opciones son "gaussian"
(por defecto), "rectangular"
, "triangular"
, "epanechnikov"
, "biweight"
, "cosine"
y "optcosine"
.
En el siguiente bloque de código puedes ver un ejemplo que utiliza un kernel rectangular en lugar de uno gaussiano. La decisión de qué kernel elegir dependerá de tus datos.
Kernel rectangular
# install.packages("ggplot2")
library(ggplot2)
# Datos
set.seed(14012021)
x <- rnorm(200, mean = 4)
df <- data.frame(x)
# Selección del kernel
ggplot(df, aes(x = x)) +
geom_density(kernel = "rectangular")
También te puede interesar