Quiero visualizar los resultados de una agrupación (producida con protoclust{protoclust}
) creando gráficos de dispersión para cada par de variables utilizadas para clasificar mis datos, colorear por clases y superponer las elipses para el intervalo de confianza del 95% para cada una de las clases (para inspeccionar cuáles las clases de elipses se superponen debajo de cada par de variables).
¡He implementado el dibujo de las elipses de dos maneras diferentes y las elipses resultantes son diferentes! (¡elipses más grandes para la primera implementación!) A priori, solo difieren en tamaño (¿alguna escala diferente?), ya que los centros y el ángulo de los ejes parecen ser similares en ambos. Creo que debo estar haciendo algo mal al usar uno de ellos (¡espero que no con ambos!), O con los argumentos.
¿Alguien puede decirme qué estoy haciendo mal?
Aquí el código para las dos implementaciones; ambos se basan en las respuestas a ¿Cómo se puede superponer una elipse de datos en un diagrama de dispersión 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)
Aquí están las dos parcelas juntas (el gráfico izquierdo es p1
implementación ( ellipse()
):
Los datos están disponibles aquí: https://www.dropbox.com/sh/xa8xrisa4sfxyj0/l5zaGQmXJt
Warning message: In cov.trob(cbind(data$x, data$y)) : Probable convergence failure
¿esto también sucede cuando ejecuta el código?