是否可以将 R 中的识别函数用于自动生成的 Q-Q 图?

问题描述

我这学期将在大学学习线性回归的入门课程。对于我的一项作业,我需要使用 R 分析数据集。

请允许我先分享我的部分代码

log_Metab <- log(Metab)
mammal.lm.1 <- lm(Life ~ log_Metab)
plot(mammal.lm.1,which = 2)

基本上,我的数据集包含有关 95 种不同哺乳动物的新陈代谢率 (Metab) 和寿命 (Life) 的信息,我需要检查这两个特征之间是否存在线性关系。

现在,我粘贴的代码的第三行生成了线性回归的正态 Q-Q 图,如下所示:

Normal Q-Q Plot

我想知道的很简单,并且在帖子的标题中有所说明 - 是否可以将识别功能用于像这样的 Q-Q 图这样的图?图中的三个编号观察值由 R 自动选择,而不是由我选择。 如果可能,请显示并解释我应该输入的代码。例如,如果我愿意,如何确定第 90 个观测值左侧的点?

附言如果这是微不足道的事情,我提前道歉,但我只使用 R 大约一个月,这已经超出了我所学的范围:)

解决方法

可以通过与绘图分开计算坐标来执行您想要的操作。首先,我们需要可重现的数据,因为您没有提供任何数据。数据集 mtcars 带有 R(与许多其他数据集一样):

data(mtcars)
log_hp <- log(mtcars$hp)
mpg.lm <- lm(mpg~log_hp,mtcars)

我们已经根据 mpg(马力)的对数计算了 hp(每加仑英里数)的线性回归。命令 plot(mpg.lm) 将调用绘图命令的特殊版本 plot.lm,并准备 4 个绘图。通过阅读 ?plot.lm 处的手册页,我们可以看到您想要的图是第二个图,我们可以通过以下方式访问该图:

plot(mpg.lm,which=2)

现在我们需要标准化残差和理论分位数:

mpg.res <- rstandard(mpg.lm)
out <- qqnorm(mpg.res,plot.it=FALSE)
coords <- cbind(x=out$x,y=out$y)

矩阵 coords 具有分位数和标准化残差,行名称是汽车。这为我们提供了我们想要在图中识别点的一切。我会将已识别的点设为红色:

identify(coords,labels=rownames(coords),cex=.75,col="red")

QQ Plot