Gráfico de la estimación tipo núcleo (kernel) de la densidad en R

Estimación kernel de la densidad

Para crear un gráfico de densidad tipo núcleo tendrás que estimar primero la densidad. Para ello puedes hacer uso de la función density y luego pasar el objeto a la función plot.

# Datos
set.seed(14012021)
datos <- rnorm(200, mean = 4)

# Estimación kernel de la densidad
d <- density(datos)

# Gráfico de la densidad tipo núcleo
plot(d, lwd = 2, main = "Gráfico densidad kernel")

Gráfico de la densidad kernel en R

Selección del kernel

El argumento kernel de la función density usa por defecto un kernel gaussiano (kernel = "gaussian"), pero existen otros tipos de kernel disponibles, como "rectangular", "triangular", "epanechnikov", "biweight", "cosine" y "optcosine". La seleción dependerá de tus datos, pero el valor por defecto es el más recomendado.

Gráfico kernel rectangular en R

Kernel rectangular

# Datos
set.seed(14012021)
datos <- rnorm(200, mean = 4)

# Estimación kernel de la densidad
d <- density(datos,
             kernel = "rectangular")

# Gráfico de la densidad tipo núcleo
plot(d, lwd = 2, main = "Kernel rectangular")

Kernel triangular gráfico de densidad

Kernel triangular

# Datos
set.seed(14012021)
datos <- rnorm(200, mean = 4)

# Estimación kernel de la densidad
d <- density(datos,
             kernel = "triangular")

# Gráfico de la densidad tipo núcleo
plot(d, lwd = 2, main = "Kernel triangular")

Kernel epanechnikov para la estimación de la densidad en R

Kernel epanechnikov

# Datos
set.seed(14012021)
datos <- rnorm(200, mean = 4)

# Estimación kernel de la densidad
d <- density(datos,
             kernel = "epanechnikov")

# Gráfico de la densidad tipo núcleo
plot(d, lwd = 2, main = "Kernel epanechnikov")

Kernel biweight en R

Kernel biweight

# Datos
set.seed(14012021)
datos <- rnorm(200, mean = 4)

# Estimación kernel de la densidad
d <- density(datos,
             kernel = "biweight")

# Gráfico de la densidad tipo núcleo
plot(d, lwd = 2, main = "Kernel biweight")

Estimación de la densidad con un núcleo cosine

Kernel cosine

# Datos
set.seed(14012021)
datos <- rnorm(200, mean = 4)

# Estimación kernel de la densidad
d <- density(datos,
             kernel = "cosine")

# Gráfico de la densidad tipo núcleo
plot(d, lwd = 2, main = "Kernel cosine")

Selección de la ventana

El argumento bw de la función density permite cambiar el parámetro ventana (bandwidth). Puedes pasar un valor, una cadena de una regla de selección o una función. El valor por defecto es "nrd0" (o bw.nrd0(.)), que implementa el procedimiento conocido como rule-of-thumb. Otras opciones son:

Variación de la rule-of-thumb de Scott (1992)

"nrd" o bw.nrd(.)

# Datos
set.seed(14012021)
datos <- rnorm(200, mean = 4)

# Estimación kernel de la densidad
d <- density(datos,
             bw = "nrd")

# Gráfico de la densidad tipo núcleo
plot(d, lwd = 2, main = "Bandwidth nrd")

Selección de la ventana con la rule of thumb bandwidth de Scott

Validación cruzada insesgada

"ucv" o bw.ucv(.)

# Datos
set.seed(14012021)
datos <- rnorm(200, mean = 4)

# Estimación kernel de la densidad
d <- density(datos,
             bw = "ucv")

# Gráfico de la densidad tipo núcleo
plot(d, lwd = 2, main = "Bandwidth ucv")

Selección de la ventana en R mediante validación cruzada insesgada

Validación cruzada sesgada

"bcv" o bw.bcv(.)

# Datos
set.seed(14012021)
datos <- rnorm(200, mean = 4)

# Estimación kernel de la densidad
d <- density(datos,
             bw = "bcv")

# Gráfico de la densidad tipo núcleo
plot(d, lwd = 2, main = "Bandwidth bcv")

Selección del bandwidth mediante validación cruzada en R

Métodos de Sheather & Jones (1991)

"SJ" o bw.SJ(.)

# Datos
set.seed(14012021)
datos <- rnorm(200, mean = 4)

# Estimación kernel de la densidad
d <- density(datos,
             bw = "SJ")

# Gráfico de la densidad tipo núcleo
plot(d, lwd = 2, main = "Bandwidth SJ")

Métodos de Sheather y Jones para la selección de ventanas en R

El bandwidth se debe elegir con precaución. Una ventana demasiado pequeña creará una curva sobreajustada mientras que una ventana demasiado grande creará una curva demasiado suave.

Storytelling con Datos

Visualización de datos para profesionales

Comprar en Amazon
ggplot2

Elegant Graphics for Data Analysis

Comprar en Amazon
Data Sketches

A journey of imagination, exploration, and beautiful data visualizations

Comprar en Amazon

También te puede interesar