Ggplot या दीर्घवृत्त पैकेज के साथ 95% CI दीर्घवृत्त की साजिश रचते समय विभिन्न परिणाम प्राप्त करना


11

मैं protoclust{protoclust}अपने डेटा को वर्गीकृत करने के लिए उपयोग किए जाने वाले चर के प्रत्येक जोड़े के लिए स्केटर प्लॉट बनाकर (कक्षाओं के साथ निर्मित ) परिणामों को कल्पना करना चाहता हूं, कक्षाओं द्वारा रंग देना और प्रत्येक वर्ग के लिए 95% आत्मविश्वास अंतराल के लिए दीर्घवृत्तियां (निरीक्षण करने के लिए) एलिप्सेस-कक्षाएं चर के प्रत्येक जोड़े के तहत ओवरलैप होती हैं)।

मैंने दीर्घवृत्त के आरेख को दो अलग-अलग तरीकों से लागू किया है और परिणामी दीर्घवृत्त अलग हैं! (पहले कार्यान्वयन के लिए बड़े दीर्घवृत्त!) एक प्राथमिकता वे केवल आकार में भिन्न होती हैं (कुछ भिन्न स्केलिंग?), कुल्हाड़ियों के केंद्र और कोण के रूप में, दोनों में समान प्रतीत होती हैं। मुझे लगता है कि मुझे उनमें से किसी एक का उपयोग करके कुछ गलत करना चाहिए (आशा है कि दोनों के साथ नहीं!), या तर्कों के साथ।

कोई मुझे बता सकता हैं मुझसे क्या गलती हो रही है?

यहाँ दो कार्यान्वयन के लिए कोड; दोनों इस बात पर आधारित हैं कि 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)

यहां दो प्लॉट एक साथ हैं (बाएं ग्राफ p1कार्यान्वयन है ellipse()):

यहाँ छवि विवरण दर्ज करें

डेटा यहाँ उपलब्ध हैं: https://www.dropbox.com/sh/xa8xrisa4sfxyj0/l5zaGQmXJt


यह बात नहीं हो सकती है, लेकिन जब मैं आपका कोड चलाता हूं तो मुझे चेतावनी मिलती है Warning message: In cov.trob(cbind(data$x, data$y)) : Probable convergence failureकि क्या यह तब भी होता है जब आप कोड चलाते हैं?
एटिरेटू -

@atiretoo हाँ, यह तब भी होता है जब मैं कोड चलाता हूँ। मुझे पता नहीं क्यों। शायद किसी और को पता है? jose
josetanago

जवाबों:


9

आप कुछ भी गलत नहीं कर रहे हैं, दो फ़ंक्शन डेटा के वितरण के बारे में अलग-अलग अंतर्निहित धारणाएं बना रहे हैं। आपका पहला कार्यान्वयन बहुभिन्नरूपी सामान्य है, और दूसरा एक बहुभिन्नरूपी टी-वितरण (देखें? Cov.trob in पैकेज MASS)। यह देखने में आसान है कि क्या आप एक समूह को बाहर निकालते हैं:

#pull out group 1
pick = group ==1
p3 <- qplot(data=df[pick,], x=x, y=y)
tl = with(df[pick,], 
     ellipse(cor(x, y),scale=c(sd(x),sd(y)),
             centre=c(mean(x),mean(y))))
p3 <- p3 + geom_path(data=as.data.frame(tl), aes(x=x, y=y))
p3 <- p3 + stat_ellipse(level=0.95)
p3 # looks off center
p3 <- p3 + geom_point(aes(x=mean(x),y=mean(y),size=2,color="red"))
p3

इसलिए हालांकि यह एक ही केंद्र और अभिविन्यास के करीब है लेकिन वे समान नहीं हैं। आप पास होने के cov.trob()लिए सहसंबंध और पैमाने प्राप्त करने के लिए ellipse()और स्केलिंग को समान वितरण के समान सेट करने के लिए t तर्क का उपयोग करके समान आकार के दीर्घवृत्त के करीब आ सकते हैं stat_ellipse()

tcv = cov.trob(data[pick,2:3],cor=TRUE)
tl = with(df[pick,], 
          ellipse(tcv$cor[2,1],scale=sqrt(diag(tcv$cov)),
                  t=qf(0.95,2,length(x)-1),
                  centre=tcv$center))
p3 <- p3 + geom_path(data=as.data.frame(tl), aes(x=x, y=y,color="red"))
p3

लेकिन पत्राचार अभी भी सटीक नहीं है। अंतर कोविर्सियस मैट्रिक्स के कोलेस्की अपघटन का उपयोग करने और सहसंबंध और मानक विचलन से स्केलिंग बनाने के बीच उत्पन्न होना चाहिए। मैं एक गणितज्ञ के लिए पर्याप्त नहीं हूं कि यह देखने के लिए कि अंतर कहां है।

कौनसा सही है? यह आपको तय करना है! stat_ellipse()कार्यान्वयन, कम दूरस्थ अंक के प्रति संवेदनशील होना है, जबकि पहले अधिक रूढ़िवादी होगा।


1
इस प्रश्न को हल करने के लिए अपना समय निकालने के लिए बहुत बहुत धन्यवाद! अब यह स्पष्ट है। jose
josetanago

1
मुझे भूखंडों में दीर्घवृत्त पसंद हैं, इसलिए कार्रवाई में इन कार्यों को देखने के लिए यह मजेदार था।
एटिरेटू - मोनिका
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.