gpt4 book ai didi

r - 带有ggplot2::stat_qq的Q-Q图,颜色,单个组

转载 作者:行者123 更新时间:2023-12-04 11:54:52 26 4
gpt4 key购买 nike

我正在寻找一种更便捷的方法来获取ggplot2中的Q-Q图,其中对整个数据集计算分位数。但我可以为数据中的组使用映射(颜色/形状)。

library(dplyr)
library(ggplot2)
library(broom) ## for augment()

组成一些数据:
set.seed(1001)
N <- 1000
G <- 10
dd <- data_frame(x=runif(N),
f=factor(sample(1:G,size=N,replace=TRUE)),
y=rnorm(N)+2*x+as.numeric(f))
m1 <- lm(y~x,data=dd)
dda <- cbind(augment(m1),f=dd$f)

基本情节:
ggplot(dda)+stat_qq(aes(sample=.resid))

enter image description here

如果我尝试添加颜色,则将各组分开进行分位数计算(这是我不想要的):
ggplot(dda)+stat_qq(aes(sample=y,colour=f))

enter image description here

如果我使用 stat_qq(aes(sample=y,colour=f,group=1)),则ggplot会忽略颜色规范,而我会得到第一张图。

我想要一个点的位置与第一种情况相同,但颜色与第二种情况相同的绘图。我有一个基于 qqnorm的手动解决方案,可以发布,但正在寻找更好的东西...

最佳答案

您可以自己计算分位数,然后使用geom_point进行绘制:

dda = cbind(dda, setNames(qqnorm(dda$.resid, plot.it=FALSE), c("Theoretical", "Sample")))

ggplot(dda) +
geom_point(aes(x=Theoretical, y=Sample, colour=f))

enter image description here

嗯,我想我应该读到你的问题的结尾。这是您所指的手动解决方案,对吗?尽管您可以将其打包为一个函数:
my_stat_qq = function(data, colour.var) {

data=cbind(data, setNames(qqnorm(data$.resid, plot.it=FALSE), c("Theoretical", "Sample")))

ggplot(data) +
geom_point(aes_string(x="Theoretical", y="Sample", colour=colour.var))

}

my_stat_qq(dda, "f")

关于r - 带有ggplot2::stat_qq的Q-Q图,颜色,单个组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42678858/

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