是否可以使用 R 中的识别功能自动生成 Q-Q 图?
Is it possible to use the identify function in R for automatically generated Q-Q plots?
我这学期在大学里学习线性回归的入门课程。对于我的一项作业,我需要使用 R 分析数据集。
请允许我先分享我的部分代码:
log_Metab <- log(Metab)
mammal.lm.1 <- lm(Life ~ log_Metab)
plot(mammal.lm.1, which = 2)
基本上,我的数据集包含有关 95 种不同哺乳动物的新陈代谢率 (Metab) 和寿命 (Life) 的信息,我需要检查这两个特征之间是否存在线性关系。
现在,我粘贴的代码的第三行生成线性回归的正常 Q-Q 图,如下所示:
我想知道的很简单,并在 post 的标题中说明 - 是否可以将识别功能用于这样的情节 Q-Q 情节?图中三个编号的观察值由 R 而不是我自动选择。 如果可能,请显示并解释我应该输入的代码。例如,如果我愿意,如何识别紧靠第 90 个观测值左侧的点?
P.S。如果这是微不足道的事情,我提前道歉,但我只使用 R 大约一个月,这已经超出了我所学的范围:)
可以通过独立于绘图计算坐标来执行您想要的操作。首先我们需要可重现的数据,因为你没有提供任何数据。数据集 mtcars
带有 R(许多其他数据集也是如此):
data(mtcars)
log_hp <- log(mtcars$hp)
mpg.lm <- lm(mpg~log_hp, mtcars)
我们根据 hp
(马力)的对数计算了 mpg
(每加仑英里数)的线性回归。命令 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")
我这学期在大学里学习线性回归的入门课程。对于我的一项作业,我需要使用 R 分析数据集。
请允许我先分享我的部分代码:
log_Metab <- log(Metab)
mammal.lm.1 <- lm(Life ~ log_Metab)
plot(mammal.lm.1, which = 2)
基本上,我的数据集包含有关 95 种不同哺乳动物的新陈代谢率 (Metab) 和寿命 (Life) 的信息,我需要检查这两个特征之间是否存在线性关系。
现在,我粘贴的代码的第三行生成线性回归的正常 Q-Q 图,如下所示:
我想知道的很简单,并在 post 的标题中说明 - 是否可以将识别功能用于这样的情节 Q-Q 情节?图中三个编号的观察值由 R 而不是我自动选择。 如果可能,请显示并解释我应该输入的代码。例如,如果我愿意,如何识别紧靠第 90 个观测值左侧的点?
P.S。如果这是微不足道的事情,我提前道歉,但我只使用 R 大约一个月,这已经超出了我所学的范围:)
可以通过独立于绘图计算坐标来执行您想要的操作。首先我们需要可重现的数据,因为你没有提供任何数据。数据集 mtcars
带有 R(许多其他数据集也是如此):
data(mtcars)
log_hp <- log(mtcars$hp)
mpg.lm <- lm(mpg~log_hp, mtcars)
我们根据 hp
(马力)的对数计算了 mpg
(每加仑英里数)的线性回归。命令 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")