使用ggplot不显示绘制lm曲线

时间:2017-03-31 15:03:39

标签: r ggplot2

根据“R for Data Science”中的ex18q1,我试图找到最佳的数据模型:

sim1a <- tibble(
  x = rep(1:10, each = 3),
  y = x * 1.5 + 6 + rt(length(x), df = 2)
)

我已应用线性模型,并尝试使用ggplot:

在图表上绘制结果
sim1a_mod <- lm(x ~ y, data = sim1a)

ggplot(sim1a, aes(x, y)) +
  geom_point(size = 2, colour= "gray") +
  geom_abline(intercept = coef(sim1a_mod)[[1]], slope = coef(sim1a_mod)[[2]], colour = "red")

coef(sim1a_mod)[[1]]打印-1.14403

coef(sim1a_mod)[[2]]打印0.4384473

我使用数据点创建绘图,但模型未显示。我做错了什么?

1 个答案:

答案 0 :(得分:3)

在R中输入lm()glm()lmer()等模型函数的公式的命名法总是DV ~ IV1 + IV2 + ... + IVn,其中DV是您的因变量并且IVn是您的自变量列表。我们通常在y轴上绘制因变量,在x轴上绘制自变量,因此在您的情况下,您需要将sim1a_mod模型更改为lm(y ~ x, data = sim1a)

在您的原始代码中,由于您运行的是其他型号,因此您的生产线正在绘制图表,但它超出了您的视野范围。如果您尝试使用以下代码再次使用原始模型进行绘制,则会看到回归线:

ggplot(sim1a, aes(x, y)) +
geom_point(size = 2, colour= "gray") +
geom_abline(intercept = coef(sim1a_mod)[[1]], slope = coef(sim1a_mod)[[2]], colour = "red") + 
scale_x_continuous(limits = c(-30, 30)) + scale_y_continuous(limits = c(-30, 30))

enter image description here