问题描述
我这学期将在大学学习线性回归的入门课程。对于我的一项作业,我需要使用 R 分析数据集。
log_Metab <- log(Metab)
mammal.lm.1 <- lm(Life ~ log_Metab)
plot(mammal.lm.1,which = 2)
基本上,我的数据集包含有关 95 种不同哺乳动物的新陈代谢率 (Metab) 和寿命 (Life) 的信息,我需要检查这两个特征之间是否存在线性关系。
现在,我粘贴的代码的第三行生成了线性回归的正态 Q-Q 图,如下所示:
我想知道的很简单,并且在帖子的标题中有所说明 - 是否可以将识别功能用于像这样的 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")