Saludo cordial para cada uno.

Les pido ayuda para generar números aleatorios de una mixtura k-puntos.


Sabemos que la función de distribución F es una mixtura k-puntos si es de
la forma F(x) = p_1 F_1(x) + p_2 F_2(x) + … + p_k F_k(x), donde F_j es una
función de distribución de probabilidad, p_j > 0 y suma(p_j) = 1, para j =
1, 2, …, k.



En mi caso particular F es la suavización de la función de probabilidad
discreta {p_j} mediante kernel gamma. En el siguiente código F es la
función Keg:



# Distribución empírica suavizada



# Valores que toma la variable y su probabilidad puntual

y <- c(1, 1.3, 1.5, 2.1, 2.8)

k <- length(y)



# Frecuencia o número de veces de cada observación y_j

s <- c(1, 1, 2, 3, 1)

n <- sum(s) # Número de observaciones



# Conjunto de riesgo. Número de observaciones mayores o iguales a cada valor
# que toma la variable aleatoria (a cada y_j)

r <- sort(cumsum(s), decreasing = TRUE)



# Kernel gamma



# Probabilidades discretas a suavizar

p <- s/n



# Parámetro de forma común de las distribuciones gamma



mi2 <- sum(y**2*s)
mi4 <- sum(y**4*s)

alfa <- sqrt(n/(mi4/mi2 - 1))



# Función de distribución suavizada. Mixtura k-puntos con kernel gamma

Keg <- function(x){sum(sapply(1:k, function(j){p[j]*pgamma(x, shape = alfa,
                                                           scale =
y[j]/alfa)}))}



Gracias desde ya por su amable y profesional ayuda. Busqué sin éxito una
biblioteca R con tal función.



Saludos.



César Escalante C.

	[[alternative HTML version deleted]]

