【问题标题】:Plot linear and multiple linear reg on the same graph (ggplot)在同一图表上绘制线性和多个线性 reg (ggplot)
【发布时间】:2018-01-29 15:17:35
【问题描述】:

例如,我有这个数据框:

data <- data.frame(
  x=c(1:12)
  , case=c(3,5,1,8,2,4,5,0,8,2,3,5)
  , rain=c(1,8,2,1,4,5,3,0,8,2,3,4)
  , country=c("A","A","A","A","B","B","B","B","C","C","C","C")
  , year=rep(seq(2000,2003,1),3)

)

我想执行 2 次线性回归并将它们绘制在一张图上。 简而言之,我想在同一张图上比较病例随时间变化的粗略趋势(简单 lm)和相同的病例趋势,但这次调整为 2000 年至 2003 年的降雨量。

model<-lm(case~ year, data=data)

第二个是多元线性回归。我为此目的使用了此代码,但不确定它是否理想。

modelrain<-lm(case~ I(year +rain), data=data)

我用 abline 做了一个简单的情节,但不知道如何用 ggplot 制作它。我创建了一个新的数据框,但似乎不能完美运行(所以我没有将其余代码放在这里)。

非常感谢

【问题讨论】:

  • 你认为case ~ I(year +rain) 在做什么?您只需创建一个新变量v = year + rain 并执行case ~ v。将年份添加到雨变量中似乎也不是很有用。 :-) 也许你想做case ~ year + rain?当您控制rain时,您在哪里可以获得year的系数?
  • 嗨安东尼奥,我默认使用case ~I(year + rain)。与简单的线性回归相比,如何在同一图表上绘制case ~ year + rain 的线性趋势?
  • “默认”是什么意思?在第二种情况下,您希望您的情节如何?您提到了多元线性回归,但该图将有 2 个轴(即基于 2 个变量)。你在其他地方有类似的例子想要复制吗?
  • 我只想有一个图表,首先显示病例随时间的线性趋势(年份 - case ~ year,第二,随时间变化的病例随时间调整的线性趋势(case ~ year + rain),使这两个图表具有可比性。
  • 不要使用I(),因为它告诉R字面上使用加法。添加 2001 年的雨值 8 以使用 2001 + 8 = 2009 作为预测变量是一个坏主意,但这就是您使用 I() 所做的事情。 Antonios 在 cmets 中的建议(以及您在 cmets 中显示的公式)case ~ year + rain 是合适的,它只是意味着使用这两个变量,不要像问题中的代码那样逐字添加它们。

标签: r ggplot2 lm


【解决方案1】:

根据 cmets 中的建议,有三个有效的回归模型

model1<-lm(case~ year, data=data)
summary(model1)
model2<-lm(case~ year+rain, data=data)
summary(model2)
model3<-lm(case~ year*rain, data=data)
summary(model3)

由于我们拥有的数据有限,似乎没有太多进展。

关于如何使用 ggplot 为model1 绘制回归线的第一个问题是:

ggplot(data,aes(x=year,y=case)) + geom_point() + geom_lm()

正如其他人所指出的,尚不清楚 user3355655 对雨的“调整”是什么意思(因为雨和年份不能真正存在于同一 x 轴上),但如果我们愿意采取最简单的方法并简单地对待雨那么作为“因素”:

ggplot(data,aes(x=year,y=case,color=factor(rain))) + geom_point() + geom_smooth(method="lm",fill=NA) + scale_y_continuous(limits = c(-1, 10))

【讨论】:

    猜你喜欢
    • 2019-10-20
    • 2015-10-14
    • 1970-01-01
    • 2016-07-01
    • 1970-01-01
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 2017-02-24
    相关资源
    最近更新 更多