22 votes

Comment simuler une distribution bimodale ?

J'ai le code suivant pour générer une distribution bimodale mais lorsque je trace le graphique de l'histogramme. Je ne vois pas les 2 modes. Je me demande s'il y a un problème avec mon code.

mu1 <- log(1)   
mu2 <- log(10)
sig1 <- log(3)
sig2 <- log(3)
cpct <- 0.4   

bimodalDistFunc <- function (n,cpct, mu1, mu2, sig1, sig2) {
  y0 <- rlnorm(n,mean=mu1, sd = sig1)
  y1 <- rlnorm(n,mean=mu2, sd = sig2)

  flag <- rbinom(n,size=1,prob=cpct)
  y <- y0*(1 - flag) + y1*flag 
}

bimodalData <- bimodalDistFunc(n=100,cpct,mu1,mu2, sig1,sig2)
hist(log(bimodalData))

14voto

Julius Points 9748

Le problème semble être juste trop petit n et une trop faible différence entre mu1 y mu2 en prenant mu1=log(1) , mu2=log(50) y n=10000 donne ça :

enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X