我正在根据拟合的lm模型使用geom_smooth方法lm和geom_line绘制一条线性线,但是它们没有绘制相同的曲线。

哪一个是对的? 我的代码中有错误吗?

下面的代码:

sales <- structure(list(NET_PRICE_TTC = c(59.988, 54.448, 54.99, 59.9895, 
59.990666, 59.994, 54.454, 55.707428, 59.992, 49.3044, 59.988, 
60.504, 44.9064, 40.336, 55.5855, 57.989599, 56.983999, 59.989714, 
59.989714, 60.501, 60.504, 56.18057, 57.265091, 60.504, 59.9925, 
47.077, 59.988, 60.504, 60.504, 53.97, 60.504, 59.988, 57.847714, 
56.467999, 56.211199, 59.989999, 60.504, 57.48, 52.683, 49.898117, 
60.504, 49.896, 59.997, 48.9, 57.49, 60.504, 49.483999, 59.9928, 
60.504, 60.504, 60.504, 58.488, 50.55857, 47.136, 54.4512, 60.504, 
59.988, 60.4968, 49.896, 48.9, 58.483999, 59.988, 60.5064, 52.459999, 
49.901142, 59.991, 53.988, 51.900799, 60.375, 60.42857, 59.988, 
52.504999, 59.988, 55.488, 59.988, 49.8975, 59.9892, 59.988, 
60.5064, 56.718, 59.988, 59.989714, 59.623636, 59.988, 47.547157, 
60.50057, 60.3492, 59.988, 59.991, 59.9928, 59.988, 59.988, 60.504, 
59.988, 48.01457, 43.4904, 48.9, 59.988, 48.901333, 44.994, 56.990768, 
56.2395, 59.988, 60.498, 59.989091, 59.988, 59.989999, 48.881777, 
55.491, 59.9904, 59.986285, 56.443636, 52.9395, 59.988, 59.989714, 
59.988, 45.86516, 51.310956, 60.504, 56.182285, 60.499636, 48.900666, 
56.574666, 52.1415, 51.159, 59.988, 59.827999, 57.262908, 59.988, 
60.5016, 59.988, 60.445333, 58.74, 57.48, 59.991, 50.349332, 
60.282545, 52.941, 60.4992, 44.374736, 59.748, 59.988, 55.705714
), QTY = c(10, 6, 12, 16, 18, 4, 12, 14, 6, 20, 16, 12, 10, 6, 
16, 30, 6, 14, 14, 8, 22, 14, 22, 12, 16, 48, 12, 2, 8, 20, 2, 
6, 28, 12, 30, 12, 10, 8, 8, 34, 6, 10, 8, 18, 24, 10, 24, 10, 
12, 6, 6, 6, 28, 56, 10, 4, 16, 10, 16, 28, 6, 10, 10, 24, 14, 
16, 10, 30, 8, 14, 2, 24, 12, 4, 4, 16, 20, 18, 10, 16, 4, 14, 
22, 10, 38, 14, 20, 24, 8, 10, 16, 2, 10, 16, 56, 40, 24, 12, 
18, 4, 26, 16, 4, 4, 22, 10, 24, 54, 16, 10, 14, 22, 16, 10, 
14, 14, 62, 46, 8, 14, 22, 36, 18, 16, 16, 2, 18, 22, 10, 10, 
8, 18, 32, 6, 8, 18, 22, 8, 10, 38, 8, 8, 14)), .Names = c("NET_PRICE_TTC", 
"QTY"), class = "data.frame", row.names = c(NA, -143L))

lin <- lm(QTY ~ NET_PRICE_TTC, sales)

lin_intercept = coef(lin)["(Intercept)"]
lin_price_coef = coef(lin)["NET_PRICE_TTC"]

demand_curve = data.frame(price_point = seq(45, 60, by = 1))
demand_curve %<>% mutate(quantity = lin_intercept + lin_price_coef * price_point)


ggplot(sales, aes(x = QTY, y = NET_PRICE_TTC)) +
  geom_point() +
  geom_line(data = demand_curve, aes(x = quantity, y = price_point)) +
  geom_smooth(
    method = lm,
    color = "black",
    se = FALSE,
    fullrange = TRUE
  )

#1楼 票数:2 已采纳

您的代码中有错误。 在回归中,将QTY用作NET_PRICE_TTC的函数,而在ggplot调用中,将x=QTYy=NET_PRICE_TTC设置为(对geom_line调用也是geom_line )。

ggplot调用中翻转xy ggplot解决。 在这里,我将lm拟合线lm蓝色。

ggplot(sales, aes(y = QTY, x = NET_PRICE_TTC)) +
  geom_point() +
  geom_line(data = demand_curve, aes(y = quantity, x = price_point), col='blue', size=2) +
  geom_smooth(
    method = lm,
    color = "black",
    se = FALSE,
    fullrange = TRUE
  )

在此处输入图片说明

  ask by user2018454 translate from so

未解决问题?本站智能推荐:

1回复

geom_smooth和geom_line回归线创建

我在R中的以下步骤中得到两个输出: ggplot(mario_kart, aes(y = totalPr, x = duration, color=cond)) + geom_point() + geom_smooth(method = "lm", se = 0) ggplot(
1回复

如何使用 lm 模型结果的 p 值绘制 geom_smooth 的线?

我想像这样在 ggplot 中绘制我的日期: , 线型由平滑线的 p 值决定(即,如果回归不显着,则为虚线,当回归显着时为实线)。 在我发布这个问题之前,我在这个论坛上尝试过这个答案,但他们通常处理标签,而不是线路本身。 Belwo 是我的带有示例数据的失败代码。 在此先感谢您的帮助。
1回复

如何使用geom_smooth在geom_line上添加均值偏差?

是否可以在geom_line上添加一种距离均值的绝对值的平滑带? 我有一个像这样的矩阵: 在abs(mean-observed_value)列上,有很多时间序列,每个序列有54个观测值,并且Date和Mean类似于组,每54行重复一次。 我正在绘制所有时间序列(使用适当的valu
1回复

geom_smooth不会绘制最佳拟合线

我希望这个问题不会重复。 我试图在发布之前根据站点的要求找到答案,但是由于我太新了,所以帮助论坛对我来说太陌生了。 遵循Wickham的R用于数据可视化之后 ,我轻松地将geom_point用于集成数据集mpg: 简单的参考代码: 受到这个很酷的情节的刺激,我尝试对一些个
2回复

将直接标签添加到geom_smooth而不是geom_line

我认识到这个问题的亲密重复这一个 ,但解决方案也不再有效(使用method="last.qp" ),所以我再次要求它。 基本问题是,我想使用directlabels标签(或等效标签)为每个组(来自stat_smooth() )标记平滑后的均值,而不是实际数据。 下面的示例显示了与我所获得
1回复

将geom_line(stat ='count')与geom_smooth()与分组变量组合

我试图将黄土平滑添加到使用geom_line(stat ='count')创建的ggplot中的分组线图中。 这是一个类似的问题,但答案不适用于分组变量: 将stat_bin与stat_smooth组合 p = ggplot(mtcars, aes(x=cyl, colour=facto
1回复

如何为ggplot2添加手动颜色(geom_smooth / geom_line)

我想用ggplot2建立一个情节。 因此,我使用geom_line来显示线条和geom_smooth以显示特定索引的Min-Max-Range。 使用两个数据帧,第一行包括日期(例如:2013-02-04),下一个是测量值(例如2.532283)。 首先,我生成一个包含所有样式的空gg
4回复

如何在 geom_smooth 之后而不是在 geom_line 之后显示直接标签?

我正在使用直接标签来注释我的情节。 正如你在这张图片中看到的,标签在 geom_line 之后,但我想要在 geom_smooth 之后。 这是否受直接标签支持? 或任何其他想法如何实现这一目标? 提前致谢! 这是我的代码: