8 votos

Simulando una distribución bimodal en el rango de [1;5] en R

Quiero simular un conjunto/variable de datos continuos con límites inferiores/superiores de [1;5], al mismo tiempo que aseguro que la distribución dibujada pueda considerarse bimodal.

Buscando mi problema, encontré esta fuente, que ayuda a simular una distribución bimodal, sin embargo, no aplica los límites inferiores/superiores: https://stats.stackexchange.com/search?q=bimodal+truncated+distribution

En contraste, la función rtruncnorm en R (del paquete truncnorm) me ayuda a simular una distribución normal (pero no bimodal) con límites inferiores/superiores.

La pregunta ahora es, ¿cómo puedo combinar ambos? Teóricamente, podría usar el enfoque del primer enlace, es decir, generar una distribución bimodal con dos distribuciones normales subyacentes y luego simplemente recalcular los datos dibujados con este enfoque (https://stats.stackexchange.com/a/25897/66544) para obtener mis límites.

O podría generar dos distribuciones normales truncadas con la función rtruncnorm y luego combinarlas en una distribución bimodal siguiendo el enfoque del primer enlace.

Pero no estoy seguro de si alguno de estos enfoques está justificado matemáticamente.

NOTA: ¿por qué quiero un rango de [1;5] de todos modos? Los datos reales vendrían de una encuesta en la que los encuestados responderían en una escala de 5 puntos del 1 al 5 (de forma continua, no discreta), por lo tanto, necesito simular esta finitud.

0 votos

¿Quieres una distribución discreta o una distribución continua?

0 votos

Una continua, es decir, los encuestados pueden seleccionar cualquier valor entre 1 y 5, no solo valores discretos [1,2,3,4,5]. Edité mi publicación para hacer esto más claro. ¡Gracias!

7voto

icelava Puntos 548

El enfoque más sencillo sería dibujar $\frac{n}{2}$ muestras de una distribución normal truncada con una media y otras $\frac{n}{2}$ muestras de una distribución normal truncada con una media diferente. Esto es una mezcla, específicamente una con pesos iguales; también podrías usar pesos diferentes variando las proporciones por las cuales extraes de ambas distribuciones.

library(truncnorm)

nn <- 1e4
set.seed(1)
sims <- c(rtruncnorm(nn/2, a=1, b=5, mean=2, sd=.5),
                    rtruncnorm(nn/2, a=1, b=5, mean=4, sd=.5))

hist(sims)

histogram

0 votos

Volviendo a este tema (y ya que lo preguntaste), ¿cómo sería diferente si quiero simular elecciones discretas, es decir, si solo son posibles los valores 1,2,3,4,5? ¿Básicamente simulando una escala tipo Likert?

1 votos

Puedes usar sample con un parámetro prob que tenga dos picos. Por ejemplo: sample(1:5,1e5,prob=c(1,3,1,3,1),replace=TRUE)

0 votos

Bien, eso es simple, cierto. No había pensado en esta solución directa.

6voto

g3mini Puntos 101

Otra forma es utilizar la distribución beta. Está acotada en $[0;1].

Así solo necesitas "mover" la mitad de la muestra simulada a $[1;3]$ y la otra mitad a $[3;5].

Aquí utilizo Beta(2,2) y el marco de trabajo de Stephan Kolassa:

nn <- 1e4
set.seed(1)
betas<-rbeta(nn,2,2)
sims <- c(betas[1:(nn/2)]*2+1,
          betas[(nn/2+1):nn]*2+3)

hist(sims)

enter image description here

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X