【发布时间】:2017-09-05 11:05:05
【问题描述】:
我需要使用拟合模型预测新的y 值对应的x 值。
使用predict 函数从新的x 值预测y 值的通常情况很简单,但我不知道如何进行相反的操作。
对于有多个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)
【问题讨论】:
-
关于您对缺乏对称性的评论,您来使用 pca 创建一条存在对称性的线(即您没有一维的值,您知道另一个)。您还可以创建两个单独的回归(缺乏对称性的原因是由于回归均值)。很好奇这里是否还有其他想法/方法。
-
见这里:stats.stackexchange.com/questions/13152/… 也可以在 wiki 上阅读回归稀释:en.wikipedia.org/wiki/Regression_dilution