2017-04-10 6 views
0

정말 혼란 스럽습니다. R'Mclust' model object에 대한 플롯 (분류 또는 불확실성)의 축 레이블을 변경하고 싶습니다. 왜 두 개 변수로만 된 단순한 객체가 아닌 여러 객체에서 작동하는지 이해할 수 없습니다. 여기에 예를 R : plot에서 축 레이블 변경. gcplot2를 사용한 mclust 모델의 불확실성 및/또는 불투명도

: 나는 시도

require(mclust) 

mod1 = Mclust(iris[,1:2]) 
plot(mod1, what = "uncertainty", dimens = c(1,2), xlab = "test") 
# changed x-axis-label 

mod2 = Mclust(iris[,1:4]) 
plot(mod2, what = "uncertainty", dimens = c(1,2), xlab = "test") 
# no changed x-axis-label 

또 다른 방법은 coordProj로했다 :

coordProj(data= iris[, -5], dimens = c(1,2), parameters = mod2$parameters, 
      z = mod2$z, what = "uncertainty", xlab = "test") 
# Error in plot.default(data[, 1], data[, 2], pch = 19, main = "", xlab = xlab, : 
#      formal argument "xlab" matched by multiple actual arguments 

은 그래서 어쩌면 ggplot2 함께 작동합니다 (그리고 내가 제일 좋아하는 옵션이 될 것이다), 생각했다. 이제 축 레이블을 변경할 수는 있지만 타원을 그리는 방법을 모르겠습니다. 누군가가 솔루션 plot.Mclust의 축 레이블을 변경 알고있을 또는 ggplot에 타원을 추가 할 경우

require(ggplot2) 

ggplot(data = iris) + 
    geom_point(aes(x = Sepal.Length, y = Sepal.Width, size = mod2$uncertainty)) + 
    scale_x_continuous(name = "test") 

그것은 좋은 것입니다. 감사합니다.

+0

내가 ELKI에 의해 수행 시각화 좋아 : https://en.m.wikipedia.org/wiki/File:EM_Clustering_of_Old_Faithful_data.gif 도와 –

답변

2

plot.Mclust에 대한 코드를 살펴보기 시작했지만 stat_ellipse을 사용하고 음모가 같아 질 때까지 수준을 변경했습니다. -distribution (기본값)이 50 % 신뢰도 (기본값 95 % 대신) 인 것으로 나타납니다. 실제 공분산 행렬 (mod2$parameters$variance$sigma)을 사용하여 더 나은 방법을 찾을 수 있지만, 원하는 곳으로 이동할 수 있습니다.

require(dplyr) 

iris %>%  
    mutate(uncertainty = mod2$uncertainty, 
      classification = factor(mod2$classification)) %>% 
    ggplot(aes(Sepal.Length, Sepal.Width, size = uncertainty, colour = classification)) + 
     geom_point() + 
     guides(size = F, colour = F) + theme_classic() + 
     stat_ellipse(level = 0.5, type = "t") + 
     labs(x = "Label X", y = "Label Y") 

output of codeblock

+1

감사합니다! 불행히도 당신의 플롯을 재현 할 수 없습니다. 아마도 다른 mod2를 계산했을 것입니까? 그러나 나는 어제 실제 데이터에'level = 0.4, type = "norm"'옵션을 원래의 플롯에 가장 가까운 것처럼 보이기 위해 같은 해결책으로'stat_ellipse'를 사용했습니다. 아마 mclust (유한 혼합 모델의 구성 요소에 대해 다 변수 가우스)의 모델 가정을 고려할 때 좀 더 감각적입니다. 어쨌든, 노력하여 주셔서 감사합니다. 플롯을 전송하는 쉬운 방법입니다. [여기] (https://groups.google.com/forum/#!topic/ggplot2/z-j_IeACczA)도 보았습니다. – user5514978