2013-02-21 74 views
3

在R中,我想知道如何獲得qqnorm來計算它的異常值(我在下面用紅色圈出)。想知道如何使用qqnorm編號的異常值?

這裏是一個例子。我做了線性迴歸:

lm1 <- lm (y ~ x) 

我然後繪製模型:

plot(lm1) 

這將產生一個非常漂亮的QQ圖。你可以看到它是數字的異常值(我用紅色圈出了這個數字)。

enter image description here

但是,如果我做我自己qqnorm,離羣值都沒有編號。我怎樣才能對這些異常值進行編號,就像上圖一樣?

qqnorm(y) 
qqline(y) 

enter image description here

+1

'plot(lm1,which = 2)'? – 2013-02-21 22:40:36

+0

RomanLuštrik我不知道這是可能的。如果你添加它作爲答案,我一定會贊成它。 – Contango 2013-02-22 15:44:21

+0

你已經做到了。我很高興能夠提供幫助。 – 2013-02-23 00:51:20

回答

4

學會看代碼:

plot.lm 
# snipping the rather long output top and bottom and showing hte relevant section 
if (show[2L]) { 
    ylim <- range(rs, na.rm = TRUE) 
    ylim[2L] <- ylim[2L] + diff(ylim) * 0.075 
    dev.hold() 
    qq <- qqnorm(rs, main = main, ylab = ylab23, ylim = ylim, 
     ...) 
    if (qqline) 
     qqline(rs, lty = 3, col = "gray50") 
    if (one.fig) 
     title(sub = sub.caption, ...) 
    mtext(getCaption(2), 3, 0.25, cex = cex.caption) 
    if (id.n > 0) 
     text.id(qq$x[show.rs], qq$y[show.rs], show.rs) 
    dev.flush() 
+0

謝謝,這看起來不錯。你是如何看待代碼的 - 你是否下載了軟件包的源代碼並檢查了它? – Contango 2013-02-22 15:43:35

+0

它比這更容易。我只是在控制檯輸入了函數名稱。代碼出現。它可能比這更多地涉及,在某些情況下,您可能需要鍵入getAnywhere(plot.lm)。有一篇非常有用的文章http://cran.r-project.org/doc/Rnews/Rnews_2006-4.pdf; (第43頁)關於通過Uwe Ligges獲取代碼。谷歌它的戰略:Ligges訪問來源 – 2013-02-22 17:41:39

2

基於由@DWin回答,如果我添加一行:

text(qq$x[44]-0.2, qq$y[44], 44) 

然後,它增加了一個編號情節:

enter image description here

要正確地做到這一點,你就必須編寫代碼:

  • 排序在x,y值由qqnorm返回的值變爲有序(確保你把每對x,y值一起)。
  • 用它們的索引號標記前三位和最後三位。

由於我使用的唯一的探索性數據分析QQ圖,由羅馬Luštrik以下答案是輕鬆了不少:

plot(lm1, which = 2) 
6

另一種非常簡單的方法如下:

QQ_y=qqnorm(y) 
identify(QQ_y) 

代碼將在這裏暫停。將鼠標懸停在您的情節上,點擊假定的異常值或其他興趣點,然後控制點擊或退出以繼續執行代碼。

qqline(y) 
相關問題