0

我真的很困惑。我想为 in 更改绘图的轴标签(分类或不确定性),但'Mclust' model objectR不明白为什么它适用于只有两个变量但不是多个变量的简单对象。

这里有一个例子:

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(这将是我最喜欢的选择)。现在我可以更改轴标签等,但我不知道如何绘制椭圆?

require(ggplot2)

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

如果有人可能知道更改轴标签plot.Mclust或将椭圆添加到ggplot. 非常感谢!

4

1 回答 1

2

我开始查看 plot.Mclust 的代码,但后来我只是使用stat_ellipse并更改了级别,直到绘图看起来相同。它似乎是一个联合t分布(默认),置信度为 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")

代码块的输出

于 2017-04-12T00:35:16.147 回答