为线性回归图(ggplot2)添加R平方?

时间:2018-07-09 08:48:30

标签: r

我一直在尝试诸如ggmisc软件包之类的不同建议,但似乎没有任何一项对我有利。

我正在使用iris数据框,只是试图绘制随机变量:

modellm <- lm(`Sepal.Length` ~ `Sepal.Width` + `Petal.Length` + `Petal.Width`, data = iris)

model <- coef(Modellm)["(Intercept)"] + 
  coef(Modellm)["Sepal.Width"] * iris$`Sepal.Width` + 
  coef(Modellm)["Petal.Length"] * iris$`Petal.Length` + 
  coef(Modellm)["Petal.Width"] * iris$`Petal.Width` + 
  residuals(Modellm)

library(ggplot2)
ggplot(iris, aes(`Sepal.Length`, model))+ 
  geom_point(size=2, alpha=0.2)+
  geom_smooth(method='lm')

我怎么可能在ggplot中获得R平方值?

2 个答案:

答案 0 :(得分:2)

如果要显示r平方值,只需将其添加到绘图的末尾即可:

 + annotate("text", x = 1, y = 1, label = paste0("R Squared = ", summary(modellm)$r.squared))

使用x和y坐标调整展示位置

答案 1 :(得分:1)

如果您真的想 绘制 R ^ 2,则可以执行以下操作。

library(ggplot2)
p <- ggplot(iris, aes(`Sepal.Length`, model))+ 
  geom_point(size=2, alpha=0.2)+
  geom_smooth(method='lm')

r2 <- summary(Modellm)$r.squared

p + scale_y_continuous(
  sec.axis=sec_axis(~ . * 4 / 30 , name = expression(paste(R^{2})))) +
  geom_rect(xmin=7.9, xmax=8, ymin=0, ymax=1*30/4, 
            fill="white", color="#78B17E") +
  geom_rect(xmin=7.9, xmax=8, ymin=0, ymax=r2*30/4, fill="#78B17E") + 
  annotate("text", x = 7.95, y = 7.62, size=3, color="#78B17E",
           label = paste0(round(r2, 2)))

产量

enter image description here