【问题标题】:Is it possible to use the identify function in R for automatically generated Q-Q plots?是否可以将 R 中的识别功能用于自动生成的 Q-Q 图?
【发布时间】:2021-07-10 02:31:11
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

  • 如果您包含一个简单的reproducible example 以及可用于测试和验证可能的解决方案的示例输入,则更容易为您提供帮助。您不能直接将 identify 与默认绘图方法一起使用,但您可以使用 ggnorm 制作您自己的残差图。基本上按照以下步骤操作:stackoverflow.com/questions/49547679/…。你只需要这样做:qqpoints &lt;- qqnorm(resid(mammal.lm.1))

标签: r plot statistics regression linear-regression


【解决方案1】:

可以通过与绘图分开计算坐标来做你想做的事情。首先,我们需要可重复的数据,因为您没有提供任何数据。数据集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")

【讨论】:

  • 感谢您的回答,很抱歉没有附上数据集!你确实解决了我的问题!但是,我注意到当我手动生成 QQ 图时,与自动生成的 QQ 图相比,它没有带有 $45$ 度的虚线。请问是否可以添加此行,如果可以,如何添加?
  • 我得到了plot(mpg.lm, which=2) 的行,如上图所示。
  • 我明白了。是的,我错过了。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-21
  • 2012-09-14
  • 2019-08-31
  • 1970-01-01
  • 1970-01-01
  • 2020-03-02
  • 1970-01-01
相关资源
最近更新 更多