【发布时间】:2016-09-30 06:53:20
【问题描述】:
编辑:
x = c(324, 219, 406, 273, 406, 406, 406, 406, 406, 168, 406, 273, 168, 406, 273, 168, 219, 324, 324, 406, 406, 406, 273, 273, 324, 324, 219, 273, 219, 273, 273, 324, 273, 324, 324, 406, 219, 406, 273, 273, 406, 219, 324, 273, 324, 406, 219, 324, 219, 324, 324, 406, 406, 406, 324, 273, 273, 219, 219, 324, 273, 324, 324, 219, 324, 219, 324, 219, 219, 324, 273, 406, 406, 273, 324, 273, 273, 219, 406, 273, 273, 324, 324, 324, 324, 324, 406, 324, 273, 406, 406, 219, 219, 324, 273, 406, 324, 324, 324, 324)
y = c(68,121,NA,87,NA,17,20,15,17,146,25,91,141,24,88,143,120,63,62,16,21,20,83,88,65,63,124,88,120,91,85,65,91,63,69,23,115,23,87,90,20,120,65,90,65,20,120,60,110,60,17,20,20,20,68,80,87,124,121,65,85,67,60,115,60,120,66,121,117,68,90,17,23,90,61,80,88,121,NA,91,88,62,60,70,60,60,27,76,96,23,20,113,118,60,91,23,60,60,65,70)
data = data.frame(x,y)
我使用ggplot2 和函数geom_smooth() 创建以下图形。我使用了代码:
g = ggplot(data, aes(x,y)) +
geom_point() +
geom_smooth(method="loess") +
geom_smooth(method="lm", col="red")
我的数据包含变量 x(只有 9 个值)和 y(公制)。现在我想添加使用代码计算的loess方法的投影点:
loes = loess(data$y ~ data$x)
RR = sort(unique(predict(loes)), decreasing=TRUE) # y coordinates
LL = unique(x, fromLast=TRUE) # x coordinates
现在我将这些投影点添加到我的绘图中。
g + geom_point(aes(y=RR[1], x=LL[1]), col="blue", size=2, shape=18) +
geom_point(aes(y=RR[2], x=LL[2]), col="blue", size=2, shape=18) +
geom_point(aes(y=RR[3], x=LL[3]), col="blue", size=2, shape=18) +
geom_point(aes(y=RR[4], x=LL[4]), col="blue", size=2, shape=18) +
geom_point(aes(y=RR[5], x=LL[5]), col="blue", size=2, shape=18)
为什么ggplot中的蓝点不在蓝色黄土线上? loess-method 使用的代码是否与 R 中的标准 loess-function 不同?
信息:对于我的超过 8000 次观察的原始数据,没有伪逆警告,但问题是一样的。
【问题讨论】:
-
@Axeman:我的数据集有大约 8.000 个观察值,我不允许发布数据。如果我只添加几个蓝点似乎就行了。如果您有更清晰的建议,请告诉我。
-
您阅读了链接吗?它讨论了一大堆策略,以在不共享(所有)我们的数据的情况下给出一个可重复的示例。如果您使用
?geom_smooth中的示例之一,是否会发生这种情况? -
-1 @Axeman:您不必立即降级,但可以。现在它应该是可重现的,即使有奇点问题,这不应该是这里的问题。
-
geom_smooth的帮助说它使用loess的默认设置,所以点应该在蓝线上。