使用拟合模型从Y值预测X值

时间:2017-04-10 11:58:48

标签: r lm

我需要使用拟合模型预测新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') 

example plot

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) 

example plot 2

1 个答案:

答案 0 :(得分:4)

正如this answer中暗示的那样,您应该可以使用approx()来完成任务。例如。像这样:

xval <- approx(x = fit$fitted.values, y = x, xout = 30)$y

points(xval, 30, col = "blue", lwd = 5)

给你:

enter image description here