2017-03-29 2 views
1

"mixtools"패키지의 출력 데이터를 jhoward이 약간 변경된 방법과 비슷하게 모델링하려고합니다. 제공된 예제가 예상대로 작동하고 그의 솔루션이 내 데이터와 함께 작동하지만 적합한 분포가 기울어 진 것처럼 보입니다. 분포 모두 x 축 위에 약간 각도되는지ggplot에 적합한 분포가 x 축과 평행하지 않습니다

Here is a link to my output graph.

통지.

인공 데이터 집합을 사용하면 더 이상 문제가 표시되지 않습니다.

`sample.ratio`=c(rnorm(120000,0.386,0.0842),rnorm(200000,0.653,0.1153)) 
`mixmdl_k2.sample`=normalmixEM(`sample.ratio`, k=2) 

ggplot_mixEM <- function(EM) { 
    require(ggplot2) 
    x  <- with(EM,seq(min(x),max(x),len=1000)) 
    pars <- with(EM,data.frame(comp=colnames(posterior), mu, sigma,lambda)) 
    em.df <- data.frame(x=rep(x,each=nrow(pars)),pars) 
    em.df$y <- with(em.df,lambda*dnorm(x,mean=mu,sd=sigma)) 
    ggplot(data.frame(x=EM$x),aes(x,y=..density..)) + 
    geom_histogram(fill=NA,color="black")+ 
    geom_polygon(data=em.df,aes(x,y,fill=comp),color="grey50", alpha=0.5)+ 
    scale_fill_discrete("Component\nModes",labels=format(em.df$mu,digits=3))+ 
    geom_density(color="red",linetype="dotted") 
} 
ggplot_mixEM(`mixmdl_k2.sample`) 

The distribution plots are new level. 분포 채우기는 이제 레벨이지만 더 이상 (0,1) 간격으로 제한되지 않습니다.

내 데이터 정보 : 0-1의 범위를 명시하며 믹스 툴에 의해 모델화 된 바이 모달 분포가 예상됩니다. scale_x_continuous(limits=c(-0.1,1.1))으로 x 배율을 높이면 문제가 해결되지 않습니다. 위의 링크에서 나온 첫 번째 해결 방법은 Spacedman이지만 내 데이터에서도 작동하지만 동일한 "기울어 진 줄거리"결과를 제공합니다.

왜 이런 일이 일어나고 있으며이 기울기를 수정하는 방법을 알고 있습니까? 음영을 강제로 x 축으로 확장하는 방법이 있습니까?

감사합니다.

수정 : 샘플 코드에 추가.

+0

샘플 입력 데이터와 함께 질문에 [재현 가능한 예] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)를 포함해야합니다. 플롯을 만들 때 사용한 코드. – MrFlick

+0

내 코드 샘플에 추가했지만 인공 데이터 세트에 문제가 더 이상 나타나지 않습니다. – Michael

+0

데이터가 시뮬레이션 된 데이터와 어떻게 다른지 판단하는 것이 유용 할 것입니다. 지금 당신은'x'의 범위에서만 다각형을 계산하는 것처럼 보이지만, 그 분포는 극단적으로 0이 아닐 수도 있습니다. 아마도 당신이 가치를 계산하는 범위에 이르는 것이 가장 좋습니다. 또한, backticks에서 변수 이름을 인용하는 이상한 습관을 어디서 받습니까? – MrFlick

답변

0

x  <- with(EM,seq(min(x),max(1.1),len=1000)) 

에 선

x <- with(EM,seq(min(x),max(x),len=1000))

을 변경하면 문제를 해결 한 것으로 보인다.

관련 문제