R中LOESS对象的校准(逆预测)

时间:2014-05-30 14:52:33

标签: r calibration loess

我对一些数据进行了LOESS局部回归,我希望能够找到与给定Y值相关的X值。

plot(cars, main = "Stopping Distance versus Speed")
car_loess <- loess(cars$dist~cars$speed,span=.5)
lines(1:50, predict(car_loess,data.frame(speed=1:50)))

我希望我可以使用chemCal包中的反向.predict函数,但这对LOESS对象不起作用。

有没有人知道我怎么能以更好的方式做这个校准,而不是从X值的长矢量预测Y值,并查看得到的Y值为感兴趣的Y值并取相应的X值值?

实际上在上面的例子中,假设我想找到停止距离为15的速度。

谢谢!

1 个答案:

答案 0 :(得分:1)

您添加到图中的预测线不太正确。请改用这样的代码:

# plot the loess line
lines(cars$speed, car_loess$fitted, col="red")

您可以使用approx()函数从给定y值的黄土线获得线性近似值。它适用于您提供的示例:

# define a given y value at which you wish to approximate x from the loess line
givenY <- 15
estX <- approx(x=car_loess$fitted, y=car_loess$x, xout=givenY)$y
# add corresponding lines to the plot
abline(h=givenY, lty=2)
abline(v=estX, lty=2)

但是,如果黄土适合,给定y可能会有不止一个x。我建议的方法并没有为您提供给定y的所有x值。例如......

# example with non-monotonic x-y relation
y <- c(1:20, 19:1, 2:20)
x <- seq(y)
plot(x, y)
fit <- loess(y ~ x)
# plot the loess line
lines(x, fit$fitted, col="red")

# define a given y value at which you wish to approximate x from the loess line
givenY <- 15
estX <- approx(x=fit$fitted, y=fit$x, xout=givenY)$y
# add corresponding lines to the plot
abline(h=givenY, lty=2)
abline(v=estX, lty=2)