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")
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.
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
# 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
# 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
# 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")
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")
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")
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")
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")
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")
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