Voglio visualizzare i risultati di un clustering (prodotto con protoclust{protoclust}
) creando grafici di scater per ogni coppia di variabili utilizzate per classificare i miei dati, colorare per classi e sovrapporre le ellissi per l'intervallo di confidenza al 95% per ciascuna delle classi (per verificare quale le classi di ellissi si sovrappongono sotto ogni coppia di variabili).
Ho implementato il disegno delle ellissi in due modi diversi e le ellissi risultanti sono diverse! (ellissi più grandi per la prima implementazione!) A priori differiscono solo per dimensioni (un diverso ridimensionamento?), poiché i centri e l'angolo degli assi sembrano essere simili in entrambi. Immagino di dover fare qualcosa di sbagliato usandone uno (spero non con entrambi!) O con gli argomenti.
Qualcuno può dirmi cosa sto facendo di sbagliato?
Qui il codice per le due implementazioni; entrambi si basano sulle risposte a Come si può sovrapporre un'ellisse di dati su un diagramma a dispersione 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)
Ecco i due grafici insieme (il grafico a sinistra è p1
implementazione ( ellipse()
):
I dati sono disponibili qui: https://www.dropbox.com/sh/xa8xrisa4sfxyj0/l5zaGQmXJt
Warning message: In cov.trob(cbind(data$x, data$y)) : Probable convergence failure
ciò accade anche quando esegui il codice?