8 votos

Paquete que R se utiliza para calcular parámetros de componente de un modelo de mezcla

Me gustaría ajuste de un modelo de mezcla de Monte Carlo de los datos generados con densidades de probabilidad que normalmente se parecen a los de la imagen adjunta. typical densities

Parecería que a partir de la inspección visual que una mezcla normal modelo podría ser aplicables, pero que en la comprobación de la CRAN tarea de vista, yo realmente no sé cuál es el paquete que podría ser apropiado para mis necesidades.

Básicamente lo que me gustaría hacer es que la oferta de un vector de los datos y, a continuación, el paquete de devolución de función de la media, la varianza y proporcional de los pesos de cada componente en el modelo de mezcla, y también, quizás, identificar cómo muchos de los componentes que hay en el modelo.

5voto

Funkatron Puntos 757

Paquete de Mclust es agradable. El mclust función se ajusta a una mezcla de normales de la distribución de los datos. Usted puede elegir automáticamente el número de componentes basados en el BIC (mclustmodel) o especificar el número de componentes. Tampoco hay necesidad de convertir los datos en una trama de datos.

Además, el paquete de Mixtools y la función normalmixEM se ajusta a una mezcla de las normales.

Actualización: recientemente he descubierto el mixAK paquete y el NMixMCMC función y es buenísimo. Tiene muchas opciones, incluyendo RJMCMC para la selección de componentes, a la derecha a la izquierda censura, etc...

3voto

Alp Puntos 446

Probar mixdist

Aquí está un ejemplo:

library(mixdist)  

#Build data vector "x" as a mixture of data from 3 Normal Distributions  
x1 <- rnorm(1000, mean=0, sd=2.0)  
x2 <- rnorm(500, mean=9, sd=1.5)  
x3 <- rnorm(300, mean=13, sd=1.0)  
x <- c(x1, x2, x3)  

#Plot a histogram (you'll play around with the value for "breaks" as    
#you zero-in on the fit).   Then build a data frame that has the  
#bucket midpoints and counts.  
breaks <- 30  
his <- hist(x, breaks=breaks)  
df <- data.frame(mid=his$mids, cou=his$counts)  
head(df)  

#The above Histogram shows 3 peaks that might be represented by 3 Normal  
#Distributions.  Guess at the 3 Means in Ascending Order, with a guess for  
#the associated 3 Sigmas and fit the distribution.  
guemea <- c(3, 11, 14)  
guesig <- c(1, 1, 1)  
guedis <- "norm"  
(fitpro <- mix(as.mixdata(df), mixparam(mu=guemea, sigma=guesig), dist=guedis))  

#Plot the results  
plot(fitpro, main="Fit a Probability Distribution")  
grid()  
legend("topright", lty=1, lwd=c(1, 1, 2), c("Original Distribution to be Fit", "Individual Fitted Distributions", "Fitted Distributions Combined"), col=c("blue", "red", rgb(0.2, 0.7, 0.2)), bg="white")  


===========================  


Parameters:  
      pi     mu  sigma  
1 0.5533 -0.565 1.9671  
2 0.2907  8.570 1.6169  
3 0.1561 12.725 0.9987  

Distribution:  
[1] "norm"  

Constraints:  
   conpi    conmu consigma   
  "NONE"   "NONE"   "NONE"   

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