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.

También te puede interesar