如何在QQ图中识别数据点

3
我正在分析残差的QQ图以评估它们是否可以假定为正态分布,并且有一些数据点看起来远离理论直线。我的问题是:是否有任何方法可以要求R识别这些特定点,以便我可以更好地研究和理解它们? 谢谢!

enter image description here

1个回答

3

以下是与绘图相关的神奇技巧。首先生成一个 QQ 绘图:

> set.seed(1234)
> x <- rexp(100,100)
> qqpoints <- qqnorm(x)

现在使用identify命令可以帮助你标识出边缘上的点。输入以下代码并按回车键:
> identify(qqpoints)

前往图表,点击其中一个异常值。然后按ESC键。对于您想要标注的每个点,重复这个步骤几次。

> identify(qqpoints)
[1] 37
> identify(qqpoints)
[1] 60
> identify(qqpoints)
[1] 27
> identify(qqpoints)
[1] 75

弹出的每个数字都是你想了解更多信息的点的索引。你可以像这样获取它们的单独坐标:

> qqpoints$x[37]
[1] 2.575829
> qqpoints$y[37]
[1] 0.04324563

而在这样的分布中,该点的实际值为:

> x[37]
[1] 0.04324563

qqpoints

如果您不知道哪些是异常值并且需要先弄清楚,可以使用car包中的qqPlot函数,然后在图形上identify那些落在置信区间之外的点。请保留HTML标签。
> library(car)
> qqPlot(x)

qqPlot


亲爱的mysteRious,你的回答非常有帮助,正是我所需要的。无法感谢你! - ybarnatan
太好了!感谢您的反馈,非常感激 :) - mysteRious
神秘的是,我很抱歉再次打扰你,但我刚刚意识到这个过程是针对使用set.seed函数生成的数据集的;我该如何将其应用于我的数据集?我对语法不是很理解,所以在代码中应该替换什么才能完成它呢?谢谢! - ybarnatan
我刚刚在指数分布的100个数据点样本上进行了一个示例,该分布的平均值为1/100,我将其存储在变量x中。set.seed只是让你可以像示例一样输入所有内容,并获得相同的答案。要在您的问题上执行此操作,只需将您的定量数据加载到“x”中,其余代码将按原样工作。 - mysteRious
尝试了一下,成功识别了生成自我的数据的实际QQ图中的数据点,再次感谢您! - ybarnatan
抱歉打扰,但这个方法也适用于 qqman 包吗? - tacrolimus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接