0

我正在寻找一种在数据集上绘制非线性回归线的方法,其中我的向量 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 值。

4

2 回答 2

1

在这些情况下,最好predict从协变量范围内的模型中提取。您对 50 或 100 个等距分布在x. 根据需要增加或减少要预测的位置数量 - 更复杂的响应将需要更多位置等。这样做也解决了意大利面条情节问题,因为newdata提供的顺序为x

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)

在此处输入图像描述

于 2013-03-31T17:01:25.710 回答
0

问题不在于数据中的联系:对于给定的 值y,只有一个预测。问题是这些点没有排序,所以当你加入它们时,你最终会得到一堆线。您可以使用order重新排序点。

plot(
  x ~ y, 
  xlab = "y", ylab = "x"  # Confusing...
)
i <- order(y)
lines( y[i], predict(reg4)[i] )
于 2013-03-31T16:51:51.823 回答