想知道如何在使用qqnorm时对异常值进行编号?

时间:2013-02-21 21:27:19

标签: r

在R中,我想知道如何让qqnorm对其异常值进行编号(我在下面以红色圈出这些)。

这是一个例子。我做了线性回归:

lm1 <- lm (y ~ x)

然后我绘制模型:

plot(lm1)

这会产生一个非常好的QQ情节。你可以看到它对异常值进行了编号(我用红色圈出了它)。

enter image description here

但是,如果我自己做qqnorm,那么异常值就没有编号。我如何对这些异常值进行编号,就像上图一样?

qqnorm(y)
qqline(y)

enter image description here

3 个答案:

答案 0 :(得分:6)

另一种非常简单的方法如下:

QQ_y=qqnorm(y)
identify(QQ_y) 

代码会暂停。将鼠标悬停在您的绘图上,单击假定的异常值或其他感兴趣的点,然后控制单击或转义以继续编码。

qqline(y)

答案 1 :(得分: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()

答案 2 :(得分:2)

基于@DWin的回答,如果我添加以下行:

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

然后它添加了一个数字:

enter image description here

要正确执行此操作,您必须将代码写入:

  • 将qqnorm返回的x,y值排序为顺序(确保将每对x,y值保持在一起)。
  • 使用索引编号标记前三个和后三个。

由于我只使用QQ图进行探索性数据分析,因此RomanLuštrik的以下答案要容易得多:

plot(lm1, which = 2)