【问题标题】:Error in adding multiple linear regression lines in ggplot在 ggplot 中添加多个线性回归线时出错
【发布时间】:2018-05-28 15:48:34
【问题描述】:

我尝试在我的 ggplot 上添加我的(多条)线性回归线。 我早上有两个假人(早晚)。假人。 该图是正确的,但是当我想添加回归线时它给了我一个错误。 代码如下:

regression_1 <- lm(weight  ~ morning.dummy + dayNumber + (morning.dummy*dayNumber) + 
                     I(dayNumber^2) + (I(dayNumber^2)*morning.dummy),
                   data=weight_data)
summary(regression_1)
#plot
plot2 <- ggplot(data=weight_data,aes(x=dayNumber, y=weight, color=morning.dummy)) +
          geom_point()+
          stat_smooth(method = "lm", formula = weight  ~ morning.dummy + dayNumber + (morning.dummy*dayNumber) +I(dayNumber^2) + (I(dayNumber^2)*morning.dummy), size = 1) +
          labs(y = "Weight in kg", x = "Day Number of weight measurment", subtitle = "Day 0 = 3 October 2010")
plot2

这是错误:

Error in grid.Call.graphics(C_setviewport, vp, TRUE) : 
  non-finite location and/or size for viewport
In addition: Warning message:
Computation failed in `stat_smooth()`:
object 'dayNumber' not found 

有人知道我哪里做错了吗?

【问题讨论】:

  • 您只能在 ggplot2 中绘制具有一个 DV 的回归模型。但是,stat_smooth(method = "lm", formula = weight ~ poly(daynumber, degree = 2), size = 1) 应该给出与您的模型相同的预测。
  • 谢谢,我试过了,但仍然收到错误'dayNumber not found。但它是我的数据集中变量的名称之一。那么这可能是什么问题?
  • 是的,我忘了。它必须是stat_smooth(method = "lm", formula = y ~ poly(x, degree = 2), size = 1)。见这里:stackoverflow.com/a/25031125/1412059
  • Roland,为什么将 dayNumber 与 weight 的关系建模为二次方会产生与包含morning.dummy 和交互效应的模型相同的结果?
  • @tifu 是的,如果与本示例中的每个多项式系数存在交互,则来自y ~ poly(x1, degree = 2) * x2 的预测应该与来自每个因子水平的单独多项式拟合的预测相同,因为 ggplot2 将适合。但当然,也可以轻松地计算 ggplot2 之外的预测并将其传递给 ggplot。

标签: r ggplot2 linear-regression


【解决方案1】:

我希望这仍然对你有帮助:

library('ggplot2')

# create test data
weight <- runif(40) * 10
morning <- weight * runif(length(weight))
weight_data <- data.frame(weight, morning)

# test data
ression_1 <- lm( weight ~ poly(morning, degree = 2))
plot(morning, weight)
points(x=morning, y=regression_1$fitted.values, col='red')

#plot in ggplot2
plot2 <- ggplot(data=weight_data, aes(y=weight, x=morning))+
  geom_point()+
  stat_smooth(method = "lm", formula = y ~ poly(x, degree = 2), size = 1)+
  labs(y = "Weight in kg", x = "Day Number of weight measurment", subtitle = "Day 0 = 3 October 2010")

plot2

【讨论】:

    猜你喜欢
    • 2021-01-14
    • 2021-03-25
    • 2014-11-03
    • 2013-03-16
    • 2019-10-20
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多