我正在寻找一种在数据集上绘制非线性回归线的方法,其中我的向量y中的每个值都被存储了多次,所以我尝试使用类似的东西:
x <- c(1,2,3,4,5,6,7,8,9,10)
y <- c(1,4,9,15,25,9,36,25,36,25)
reg4 <- lm( x ~ y + I(y^2) )
plot(x ~ y)
lines(y, predict(reg4), type="l", col="red", lwd=1)
这给了http://i.imgur.com/qSEVNdT.png
所以我的问题是,有没有办法,让我们说,为每个y条目使用某种平均值?或者只是让它成为一个“连续”的。在有多个条目的点处,行而不是分支成多行的东西/返回到较低的y值。
答案 0 :(得分:1)
在这些情况下,最好是在协变量范围内从模型中predict
。对于在x
范围内等间隔的50或100个位置,您可以这样做。根据需要增加或减少要预测的位置数量 - 更复杂的响应将需要更多位置等。这也解决了意大利面条问题,因为提供的newdata
将按x
<的顺序排列/ p>
x <- c(1,2,3,4,5,6,7,8,9,10)
y <- c(1,4,9,15,25,9,36,25,36,25)
reg4 <- lm( x ~ y + I(y^2) )
## predictions
pred <- data.frame(y = seq(min(y), max(y), length = 100))
pred <- transform(pred, x = predict(reg4, newdata = pred))
## plot
plot(x ~ y)
lines(x ~ y, data = pred, type = "l", col = "red", lwd = 1)
答案 1 :(得分:0)
问题不是来自数据中的联系:
对于给定的y
值,只有一个预测值。
问题是这些点没有排序,
这样,当你加入它们时,你最终会出现纠结的线条。
您可以使用order
对点进行重新排序。
plot(
x ~ y,
xlab = "y", ylab = "x" # Confusing...
)
i <- order(y)
lines( y[i], predict(reg4)[i] )