Para responder a su pregunta "es porque X es una mezcla de una Variable Aleatoria continua y discreta" La respuesta es no. Las razones medias son (1) el tamaño de la muestra (que es limitado / contable) (2) el hecho de que usted está tratando de obtener el valor de la cola y (3) la forma de la KDE (distribución).El valor teórico de 3,088 será emprirically calculado si y sólo si usted tiene el tamaño de la muestra lo suficientemente grande.
(@Jack JackGuRae dice Se trata de que las simulaciones no son realmente aleatorias lo cual no es exactamente cierto, ya que los generadores de números pseudoaleatorios utilizan algoritmos que sí garantizan que las muestras lo suficientemente grandes se distribuyan adecuadamente, es decir, la simulación de 1000 tiradas de dados le dará p=1/6 para cada lado a digamos 3 p.d.)
(@msitt da en el clavo con el comentario de la cola)
Como ha mencionado antes, es cierto que para algunas de las simulaciones, necesitaba considerablemente más pequeño tamaño de la muestra, pero en este caso se está tratando de muestrear de un altamente distribución sesgada a la izquierda. Considere el siguiente código para trazar la KDE:
sims <- 10e6
errors <- rnorm(sims)
v <- ifelse(runif(sims) <= 0.009, -10.0, 0.00)
x <- v + errors
plot(density(x), col = 2, lwd = 2)
abline(v=unname(quantile(x,probs=c(0.01))))
donde la línea vertical es el cuantil del 1%. Las posibilidades de tener una muestra pequeña con este valor particular para el cuantil del 1% son muy pequeñas.
Otro ejemplo en el que se parametriza el cálculo de los cuantiles en función del número de simulaciones y del modo Bernoulli y se representan los cuantiles en función del número de simulaciones:
set.seed (3134)
quant <- function(sims, tailmode)
{
errors <- rnorm(sims)
v <- ifelse(runif(sims) <= 0.009, tailmode, 0.00)
x <- v + errors
return(unname(quantile(x,probs=c(0.01))))
}
sims <- seq(100, 20000, len=20)
par(mfrow=c(2,2))
plot(sims, Vectorize(quant, c("sims","tailmode"))(sims,-10), col = 2, pch=16, ylim = c(-9, -1), ylab = "", xlab="", main="-10")
plot(sims, Vectorize(quant, c("sims","tailmode"))(sims,-5 ), col = 2, pch=16, ylim = c(-9, -1), ylab = "", xlab="", main="-5")
plot(sims, Vectorize(quant, c("sims","tailmode"))(sims,-1 ), col = 2, pch=16, ylim = c(-9, -1), ylab = "", xlab="", main="-1")
plot(sims, Vectorize(quant, c("sims","tailmode"))(sims, 0 ), col = 2, pch=16, ylim = c(-9, -1), ylab = "", xlab="", main="0")
da
que muestra claramente que cuanto menos sesgada es su distribución (es decir, el modo Bernoulli aumenta), más rápido converge el cuantil calculado del 1% a su valor modelo.