4

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

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

lm1 <- lm (y ~ x)

然后我绘制模型:

plot(lm1)

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

在此处输入图像描述

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

qqnorm(y)
qqline(y)

在此处输入图像描述

4

3 回答 3

6

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

QQ_y=qqnorm(y)
identify(QQ_y) 

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

qqline(y)
于 2014-11-04T18:22:07.820 回答
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()
于 2013-02-21T22:44:59.840 回答
2

根据@DWin 的回答,如果我添加以下行:

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

然后它在图中添加了一个数字:

在此处输入图像描述

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

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

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

plot(lm1, which = 2)
于 2013-02-22T16:24:47.247 回答