2016-06-18 51 views
14

Aşağıdaki basit örnek için, aşağıdaki grafiklerde belirtilen belirli noktaların olduğunu görebilirsiniz. Bu grafiklerde belirtilen satır numaralarını, özellikle Normal Q-Q çizimini nasıl çıkarabilirim? plot.lm(): tanısal Q-Q çiziminde etiketli ayıklama sayıları

set.seed(2016) 
maya <- data.frame(rnorm(100)) 
names(maya)[1] <- "a" 
maya$b <- rnorm(100) 
mara <- lm(b~a, data=maya) 
plot(mara) 

ben orada bir listesini bulmak olmadığını görmek için str (mara) kullanarak çalıştı, ama orada normal Q-Q grafiğinden sayıların herhangi göremez. Düşünceler?

cevap

15

Sorunu yeniden üretilebilirlik için set.seed(2016) kullanarak düzenledim. Sorunuzu cevaplamak için, gördüğünüz Q-Q çizimini nasıl üreteceğinizi açıklamam gerekiyor.

se <- sqrt(sum(mara$residuals^2)/mara$df.residual) ## Pearson residual standard error 
hii <- lm.influence(mara, do.coef = FALSE)$hat ## leverage 
std.resi <- mara$residuals/(se * sqrt(1 - hii)) ## standardized residuals 
## these three lines can be replaced by: std.resi <- rstandard(mara) 

Şimdi, plot.lm tarafından üretilen kendimizi ve o oluşturmak Q-Q arsa karşılaştıralım:

par(mfrow = c(1,2)) 
qqnorm(std.resi, main = "my Q-Q"); qqline(std.resi, lty = 2) 
plot(mara, which = 2) ## only display Q-Q plot 

Q-Q

aynı değil mi?

Şimdi tek sorun, sayıların nasıl etiketlendiğidir. Bu etiketli noktalar, en büyük 3 mutlak standardize artıklarını işaretler. Düşünün:

x <- sort(abs(std.resi), decreasing = TRUE) 
id <- as.integer(names(x)) 
id[1:3] 
# [1] 23 8 12 

Şimdi, yakından grafiğe bakarsanız, bu üç sayı gösterilir tam olarak ne olduğunu görebilirsiniz. Bunu bildiğinizde, örneğin, id[1:5] da kontrol edebilirsiniz.

+0

Teşekkür ederiz! Bu umduğumdan çok daha fazlaydı. En iyisi sensin! (Ayrıca, bu set.seed işin daha önce ne olduğunu hiç bilmiyordum, ama haklısın. Bu daha iyi bir soru çünkü şimdi herkes aynı rasgele sayılara bakıyor.) –

+0

Sana ünümü verebilseydim ve/veya daha fazla yıldız. Bu gerçekten harika bir cevaptı. –