Quero visualizar os resultados de um agrupamento (produzido com protoclust{protoclust}
) criando gráficos de dispersão para cada par de variáveis usadas para classificar meus dados, colorindo por classes e sobrepondo as elipses para o intervalo de confiança de 95% para cada uma das classes (para inspecionar quais classes de elipses se sobrepõem sob cada par de variáveis).
Eu implementei o desenho das elipses de duas maneiras diferentes e as elipses resultantes são diferentes! (elipses maiores para a primeira implementação!) A priori, diferem apenas em tamanho (algumas escalas diferentes?), pois o centro e o ângulo dos eixos parecem os mesmos em ambos. Acho que devo estar fazendo algo errado usando um deles (espero que não com os dois!), Ou com os argumentos.
Alguém pode me dizer o que estou fazendo de errado?
Aqui o código para as duas implementações; ambos são baseados nas respostas de Como uma elipse de dados pode ser sobreposta em um gráfico de dispersão ggplot2?
### 1st implementation
### using ellipse{ellipse}
library(ellipse)
library(ggplot2)
library(RColorBrewer)
colorpal <- brewer.pal(10, "Paired")
x <- data$x
y <- data$y
group <- data$group
df <- data.frame(x=x, y=y, group=factor(group))
df_ell <- data.frame()
for(g in levels(df$group)){df_ell <- rbind(df_ell, cbind(as.data.frame(with(df[df$group==g,], ellipse(cor(x, y),scale=c(sd(x),sd(y)),centre=c(mean(x),mean(y))))),group=g))}
p1 <- ggplot(data=df, aes(x=x, y=y,colour=group)) + geom_point() +
geom_path(data=df_ell, aes(x=x, y=y,colour=group))+scale_colour_manual(values=colorpal)
### 2nd implementation
###using function ellipse_stat()
###code by Josef Fruehwald available in: https://github.com/JoFrhwld/FAAV/blob/master/r/stat-ellipse.R
p2 <-qplot(data=df, x=x,y=y,colour=group)+stat_ellipse(level=0.95)+scale_colour_manual(values=colorpal)
Aqui estão os dois gráficos juntos (o gráfico à esquerda é p1
implementação ( ellipse()
):
Os dados estão disponíveis aqui: https://www.dropbox.com/sh/xa8xrisa4sfxyj0/l5zaGQmXJt
Warning message: In cov.trob(cbind(data$x, data$y)) : Probable convergence failure
Isso também acontece quando você executa o código?