gpt4 book ai didi

r - 使用facet_wrap时显示每个散点图的回归方程和R^2

转载 作者:行者123 更新时间:2023-12-02 23:47:19 24 4
gpt4 key购买 nike

我有一个 data.frame(我使用熔化函数熔化了它),我从中生成多个散点图并使用以下命令拟合回归线:

ggplot(dat, aes(id, value)) + geom_point() + geom_smooth(method="lm", se=FALSE) + facet_wrap(variable~var1, scales="free")

我想在这些散点图中添加回归方程和 R^2 以获得相关回归(即每个散点图中由 geom_smooth 生成的回归)。

<小时/>

上面的 var1 只是熔化数据的 id 列之一的名称,我在使用facet_grid而不是facet_wrap时面临同样的问题。

最佳答案

我实际上解决了这个问题,请参阅下面的一个示例,其中因变量是 var1。这是一个时间序列数据集,如果与您的问题无关,请忽略日期部分。

library(plyr)
library(ggplot2)

rm(dat)
dat <- read.table("data.txt", header = TRUE, sep = ",")
dat <- transform(dat, date = as.POSIXct(strptime(date, "%Y-%m-%dT%H:%M:%OS")))

rm(dat.m)
dat.m <- melt(dat, id = c('ccy','date','var1'))

lm_eqn = function(df){
m = lm(var1 ~ value, df);
eq <- substitute(italic(y) == a + b %.% italic(x)*","~~italic(r)^2~"="~r2,
list(a = format(coef(m)[1], digits = 2),
b = format(coef(m)[2], digits = 2),
r2 = format(summary(m)$r.squared, digits = 3)))
as.character(as.expression(eq));
}

mymax = function(df){
max(df$value)
}

rm(regs)
regs <- ddply(dat.m, .(ccy,variable), lm_eqn)
regs.xpos <- ddply(dat.m, .(variable), function(df) (min(df$value)+max(df$value))/2)
regs.ypos <- ddply(dat.m, .(ccy,variable), function(df) min(df$var1) + 0.05*(max(df$var1)-min(df$var1)))

regs$y <- regs.ypos$V1
regs$x <- regs.xpos$V1

rm(gp)
gp <- ggplot(data=dat.m, aes(value, var1)) + geom_point(size = 1, alpha=0.75) + geom_smooth() + geom_smooth(method="lm", se=FALSE, color="red") + geom_text(data=regs, size=3, color="red", aes(x=x, y=y, label=V1), parse=TRUE) + facet_grid(ccy~variable, scales="free")
ggsave("data.png", gp, scale=1.5, width=11, height=8)

关于r - 使用facet_wrap时显示每个散点图的回归方程和R^2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9681765/

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