2014-11-06 1 views
1

Mcust를 이해하려고 노력 중이므로 가장 쉬운 방법은 가우시안 혼합 모델링을 사용하여 가우스 모델을 모델링하는 것입니다. 나는 G = 1이 가장 적합하다고 생각했을 것이다. 그러나 나는 G = 6을 얻었고 그것들을 프린트하면 원래의 Gaussian에 근접하지도 않습니다. 어떤 힌트가 여기에 잘못 되었습니까?단순 정규 분포에서 R의 가우시안 혼합 모델링 (Mclust)이 실패했습니다.

x<-seq(-4,4,length=200) 
y<-dnorm(x,mean=0, sd=1) 
plot(x,y, type="l", lwd=2) 
mod1<-Mclust(y) 
ColourVec<-c('green','cyan','blue','red','yellow','yellow','yellow') 
for (i in 1:max(mod1$G)){ 
    tmp<-mod1$classification==i 
    par(new=T) 
    plot(density(mod1$data[tmp],adjust=2),col=ColourVec[i],xlim=c(-4,4),ylim=c(0,0.4)) 
} 

Output image

건배! 두린

+0

사용하지 않은'mclust' 아직,하지만 난 당신이 원하는 생각' 'dnorm()'의 호출 대신에''rnorm (200, mean = 0, sd = 1) –

답변

1

Mclust(y,)은 입력으로 데이터 y를 취합니다. 단 변량 법선의 데이터를 원하면 y를 rnorm()으로 시뮬레이트해야합니다. 물론 시뮬레이션의 수는 kernelsmoothed 밀도에 편견을 감소 증가

library(mclust) 
x<-seq(-4,4,length=200) 
y<-rnorm(200,mean=0, sd=1) 
plot(x,dnorm(x,mean=0, sd=1), type="l", lwd=2) 
mod1<-Mclust(y) 
ColourVec<-c('green','cyan','blue','red','yellow','yellow','yellow') 
for (i in 1:max(mod1$G)){ 
    tmp<-mod1$classification==i 
    lines(density(mod1$data[tmp],adjust=2),col=ColourVec[i]) 
} 

enter image description here

:이 리드. 이 같은 SD 서로 다른 단 변량 가우스, 그러나 다른 수단으로부터 N에 증가 = 2000 시뮬레이션, 1000 리드에 :

N<-2000 
x<-seq(-4,7,length=200) 
y<-c(rnorm(N/2,mean=0,sd=1), rnorm(N/2,mean=3,sd=1)) 
plot(x,dnorm(x,mean=0, sd=1), type="l", lwd=2,xlim=c(-3,7)) 
lines(x,dnorm(x,mean=3, sd=1), lwd=2) 

mod1<-Mclust(y) 
ColourVec<-c('green','cyan','blue','red','yellow','yellow','yellow') 
for (i in 1:max(mod1$G)){ 
    tmp<-mod1$classification==i 
    lines(density(mod1$data[tmp],adjust=2),col=ColourVec[i]) 
} 

enter image description here