我是R的新手,并且一直试图将非线性模型拟合到某些数据中,但未成功 . 最后我在Excel中添加了一个多项式趋势线,并尝试绘制我得到的函数 - 由于某种原因,该函数不适合我在R中的数据 . 我尝试了简单的geom_smooth,但实现了一个“笨重”的行,我想要一个顺利一个 . 我在一个图中有6个样本,这里是其中一个的数据,包括Excel获得的函数以及我尝试绘制的函数 . 我确信有更好的方法 - 我还需要在输出中获得拟合的功能 .
datax <- c(0, 21.3, 30, 46.3, 72)
datay <- c(0, 0.008723333, 0.016253333, 0.039896667, 0.079893333)
data <- data.frame(datax, datay)
x <- seq(0, 0.01, length.out = 72)
poly.fit <- function(x) 1E-5*x^2+0.0002*x
ggplot(data, aes(x=datax, y=datay)) +
geom_point() +
stat_function(fun=poly.fit)
1 回答
那么,该功能并不完全适合数据 . 运行代码后
poly.fit(46.3)
它返回0.0306969
,这不是.03989
问题在于等式本身 . 如果你确实想要在R中创建一个完全匹配数据的函数,那么有一个名为polynomial interpolation的原则,它几乎表明如果你想完美地拟合它,你需要与模型中的项一样多的点 . 所以,如果你想匹配积分,你可以使用:
获得系数后,您可以像以前一样重新创建函数,并且应该适合该线以完美匹配您的点(只要您符合足够的多项式项!) .
编辑:这是一个显示您想要的可重现代码的示例