Je souhaite visualiser les résultats d'un clustering (produit avec protoclust{protoclust}
) en créant des graphiques de scater pour chaque paire de variables utilisées pour classer mes données, en coloriant par classes et en chevauchant les ellipses pour l'intervalle de confiance à 95% pour chacune des classes (pour vérifier qui elipses-classes se chevauchent sous chaque paire de variables).
J'ai implémenté le dessin des ellipses de deux manières différentes et les ellipses résultantes sont différentes! (ellipses plus grosses pour la première implémentation!) A priori, elles ne diffèrent que par leur taille (une mise à l'échelle différente?), car les centres et l'angle des axes semblent être similaires dans les deux. Je suppose que je dois faire quelque chose de mal en utilisant l'un d'eux (j'espère pas avec les deux!), Ou avec les arguments.
Quelqu'un peut-il me dire ce que je fais mal?
Voici le code des deux implémentations; les deux sont basés sur les réponses à Comment une ellipse de données peut-elle être superposée à un nuage de points 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)
Voici les deux tracés ensemble (le graphique de gauche représente l' p1
implémentation ( ellipse()
):
Les données sont disponibles ici: https://www.dropbox.com/sh/xa8xrisa4sfxyj0/l5zaGQmXJt
Warning message: In cov.trob(cbind(data$x, data$y)) : Probable convergence failure
Cela se produit-il également lorsque vous exécutez le code?