Min*_*now 3 regression r curve-fitting
给定一组数据,我如何确定新数据点是高于还是低于连接点的线.
例如,如何确定显示的红点是否在线的上方或下方(没有目视检查)?
我想在这些点上找到一条确切的线.基本上连接点,并需要适合能够使用线上的任何点作为比较器.
到目前为止,我已经尝试将各种样条拟合到数据中,但它仍然有点过于平滑.我真的在寻找一个完全适合数据,尖角和所有.
我已经尝试了一个自然样条曲线(以及smooth.splines),但是不能完全得到精确/足够的拟合:
plot(df$lowerx, df$lowery, type='b', xlab='x', ylab='y', pch=21, bg='steel blue')
myspline <- splinefun(df$lowerx, df$lowery, method='natural')
curve(myspline, add=T, from = 0, to=140, n = 100, col='green')
Run Code Online (Sandbox Code Playgroud)
我认为一旦我得到合适的权利,它将直接用它来确定点是在线之上还是之下(例如使用预测或函数),但我需要帮助.
也完全欢迎另一种方法.
数据:
df <- structure(list(lowerx = c(11.791, 18.073, 23.833, 35.875, 39.638, 44.153, 59.206, 71.498, 83.289, 95.091, 119.676, 131.467, 143.76), lowery = c(5.205, 5.89, 6.233, 9.041, 10, 10.342, 12.603, 13.493, 14.658, 15.274, 15.89, 15.616, 15.342)), .Names = c("lowerx", "lowery"), class = "data.frame", row.names = c(NA, -13L))
Run Code Online (Sandbox Code Playgroud)
42-*_*42- 10
R函数approxfun将创建一个执行线性插值的函数.
> F <- approxfun(x=df$lowerx, y=df$lowery)
> F(80) > 13
[1] TRUE
Run Code Online (Sandbox Code Playgroud)
我使用你提供的数据并在"红点"的坐标处测试我的最佳猜测为(80,13),因此它表示13小于插值且(80,15)高于:
> F(80) > 15
[1] FALSE
Run Code Online (Sandbox Code Playgroud)