繁体   English   中英

geom_smooth lm和geom_line没有绘制相同的线

geom_smooth lm and geom_line not drawing the same line

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在根据拟合的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 个回复

您的代码中有错误。 在回归中,将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
  )

在此处输入图片说明

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( ...

2017-12-26 17:49:11 1 488   r/ ggplot2
2 将直接标签添加到geom_smooth而不是geom_line

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

5 来自 lm() 和 geom_smooth() 的相同参数?

我想知道 stats 包中的函数lm()是否与geom_smoot(method = lm)中geom_smoot(method = lm)中使用的函数相同。 如果是这样,对于相同的数据,它们每次计算的参数是否相同。 那么会... 计算与...相同的参数 ...

2020-06-15 19:45:46 2 69   r/ ggplot2
6 geom_line中的颜色平滑

使用ggplot2 ,我希望在只有几个数据点的图中“平滑地”设置色线。 scale_color_gradient2 ,我尝试过的比例尺(例如scale_color_gradient2 )似乎没有对颜色进行插值,而是对颜色段进行了单色处理。 代码示例: ...

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM