我需要使用拟合模型预测新x
值的相应y
值。
通过使用y
函数,通过新x
值预测predict
值的常见情况很简单,但我无法弄清楚如何进行反向。
对于具有多个x
解决方案的案例,我希望获得x
值范围内的所有解决方案,即1-10
。新的y
将始终位于用于拟合模型的y
值范围内。
请参阅下面的示例代码,我需要找到新的x值(new_x
)。
x = seq(1:10)
y = c(60,30,40,45,35,20,10,15,25,10)
fit = lm(y ~ poly(x, 3, raw=T))
plot(x, y)
lines(sort(x), predict(fit)[order(x)], col='red')
new_y = 30
new_x = predict(fit, data.frame(y=new_y)) #This line does not work as intended.
编辑1:反向拟合
使用相反的关系不会给出相同的模型,因为我们得到了不同的模型/拟合线。
rev_fit = lm(x ~ poly(y, 3, raw=T))
plot(x, y)
lines(sort(x), predict(fit)[order(x)], col='red')
lines(predict(rev_fit)[order(y)], sort(y), col='blue', lty=2)
答案 0 :(得分:4)
正如this answer中暗示的那样,您应该可以使用approx()
来完成任务。例如。像这样:
xval <- approx(x = fit$fitted.values, y = x, xout = 30)$y
points(xval, 30, col = "blue", lwd = 5)
给你: