가우스 혼합을 사용하는 분포를 근사하고 전체 (1 차원) 데이터 세트의 추정 된 커널 밀도를 구성 요소의 합계로 자동적으로 플롯 할 수있는 쉬운 방법이 있는지 궁금합니다. 이 사용 ggplot2 같은 좋은 방식으로 밀도 :ggplot2를 사용하여 R에 플롯 가우시안 혼합물을 표시합니다.
#example data
a<-rnorm(1000,0,1) #component 1
b<-rnorm(1000,5,2) #component 2
d<-c(a,b) #overall data
df<-data.frame(d,id=rep(c(1,2),each=1000)) #add group id
##ggplot2
require(ggplot2)
ggplot(df) +
geom_density(aes(x=d,y=..scaled..)) +
geom_density(data=subset(df,id==1), aes(x=d), lty=2) +
geom_density(data=subset(df,id==2), aes(x=d), lty=4)
다음 예제 데이터 감안할 때
, ggplot2 나의 접근 방식은 수동으로이 같은 조정 전체 밀도에 집합 밀도를 음모하는 것
저울에 대해서는 작동하지 않는다는 점에 유의하십시오. 또한 3 가지 농도를 모두 조절하거나 전혀 농도를 조절하지 않으면 작동하지 않습니다. 그래서 나는 위의 줄거리를 복제 할 수 없었습니다.
또한 수동으로 하위 집합을 지정하지 않고도이 플롯을 자동으로 생성 할 수는 없습니다. geom_density에서 position = "stacked"를 매개 변수로 사용해 보았습니다.
일반적으로 데이터 세트 당 약 5-6 개의 구성 요소가 있으므로 수동으로 하위 집합을 만들 수 있습니다. 그러나 ggplot의 범례에 표시되는 구성 요소 밀도마다 다른 색상이나 선 유형을 사용하고 싶습니다. 따라서 모든 하위 세트를 수동으로 수행하면 작업량이 상당히 증가합니다.
아이디어가 있으십니까? 감사합니다.