gpt4 book ai didi

r - ggplot2 中的 qqnorm 和 qqline

转载 作者:行者123 更新时间:2023-12-03 05:58:40 25 4
gpt4 key购买 nike

假设有一个线性模型 LM,我想要残差的 qq 图。通常我会使用 R 基础图形:

qqnorm(residuals(LM), ylab="Residuals")
qqline(residuals(LM))

我可以弄清楚如何获取情节的 qqnorm 部分,但我似乎无法管理 qqline:

ggplot(LM, aes(sample=.resid)) +
stat_qq()

我怀疑我错过了一些非常基本的东西,但似乎应该有一个简单的方法来做到这一点。

编辑:非常感谢以下解决方案。我修改了代码(非常轻微)以从线性模型中提取信息,以便该图的工作方式类似于 R 基础图形包中的便利图。

ggQQ <- function(LM) # argument: a linear model
{
y <- quantile(LM$resid[!is.na(LM$resid)], c(0.25, 0.75))
x <- qnorm(c(0.25, 0.75))
slope <- diff(y)/diff(x)
int <- y[1L] - slope * x[1L]
p <- ggplot(LM, aes(sample=.resid)) +
stat_qq(alpha = 0.5) +
geom_abline(slope = slope, intercept = int, color="blue")

return(p)
}

最佳答案

下面的代码将为您提供您想要的情节。 ggplot 包似乎不包含计算 qqline 参数的代码,所以我不知道是否可以在(可理解的)单行代码中实现这样的图。

qqplot.data <- function (vec) # argument: vector of numbers
{
# following four lines from base R's qqline()
y <- quantile(vec[!is.na(vec)], c(0.25, 0.75))
x <- qnorm(c(0.25, 0.75))
slope <- diff(y)/diff(x)
int <- y[1L] - slope * x[1L]

d <- data.frame(resids = vec)

ggplot(d, aes(sample = resids)) + stat_qq() + geom_abline(slope = slope, intercept = int)

}

关于r - ggplot2 中的 qqnorm 和 qqline,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4357031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com