在GGPlot上绘制GLM回归方程和Rsquared

时间:2019-06-19 04:28:54

标签: r ggplot2 tidyr

我遇到这样的问题:

样本数据:

library(tidyverse)
library(ggpubr)
a <- mtcars
reorganized <- a %>% gather (-mpg, key = "var", value = "value")

g <- ggplot(reorganized, aes(y = value, x = var)) +
  stat_smooth(method="glm", se=TRUE, fill=NA, 
              method.args = list(family = "binomial"), fullrange = F) +
  geom_smooth(method="glm", fill='red',
              method.args = list(family = "binomial")) +
  stat_regline_equation(
    aes(label =  paste(..eq.label.., ..adj.rr.label.., sep = "~~~~"))
  )+
  geom_point(aes(), alpha=2/10, shape=21, fill="blue", colour="black", size=0.2) +
  facet_wrap(~var, nrow=1)+
  theme_bw()

数据是reorganized数据帧,具有3列:mpg,var,value

使用此代码,我想用逻辑回归线绘制面,用散点图绘制方程。但是,公式似乎不正确,它们仅具有y = b + ax的形式,有时Radj不在绘图中 enter image description here

如何在此图中绘制逻辑回归的正确公式?

1 个答案:

答案 0 :(得分:0)

似乎您正在尝试对非分类变量使用glm方法。这行不通。相反,您应该使用“黄土”或“ lm”方法。另外,要在每个构面内正确插入方程式,您可以控制方程式的位置和大小。代码如下(geom_smooth默认为“黄土”):

ggplot(reorganized, aes(y = value, x = mpg)) +
  geom_smooth(se=TRUE, fill=NA, method.args=list(family="gaussian"), fullrange = F) +
  stat_regline_equation( aes(label =  paste(..eq.label.., ..adj.rr.label.., 
                                             sep = "~~~~")),
                         label.x.npc = "left", label.y.npc = "top", size = 2)+
  geom_point(aes(), alpha=2/10, shape=21, fill="blue", colour="black", size=0.2) +
  facet_wrap(~var, nrow=2)+
  theme_bw()

It should look like this

默认情况下,geom_smooth设置为具有公式y〜x的黄土方法。这就是为什么方程式中只有y和x的原因。如果要使用其他公式,则应寻找如何在geom_smooth中自定义公式。