用 R 进行插值和曲线拟合

Interpolation and Curve fitting with R

我是一名化学工程师,对 R 还很陌生。我正在尝试在 R 中构建一个工具(最终是一个闪亮的应用程序)来分析相界。使用模拟,我得到的输出显示两条曲线,可以用四阶多项式很好地表示。数据如下:

https://i.stack.imgur.com/8Oa0C.jpg

我必须遵循的程序使用两条曲线之间的差异来产生一秒。为了比较曲线,数据必须作为压力的函数以设定的增量增加,例如 0.2 可以看出,来自模拟的数据不是增量的,并且无法比较基于输出。

为了解决这个问题,在 excel 中,我对每条曲线执行了以下步骤:

据此,我能够在数学上比较曲线并生成所需的输出。

有没有人对如何在 R 中执行此操作有任何建议,或者是否有我错过的更多统计或简化方法(提取贝塞尔曲线点等)?

作为进一步的细节,我获取了数据并使用 tidyr 将其合并,以便图表(总共 4 个)仅显示在三列中,即图表标题、温度和压力。我在 Datacamp 上学习了 ggplot2 课程之后做了这个,但不确定这种格式是否适合进行回归等?我的数据集的头部可以在这里看到:

https://i.stack.imgur.com/WeaPz.jpg

我是 R 的新手,如果这是一个愚蠢的问题并且我使用了错误的术语,我深表歉意。

虽然我同意@Jaap 的评论,但多项式回归在 R 中非常容易。我会给你第一行:

x <- c(0.26,3.33,5.25,6.54,7.38,8.1,8.73,9.3,9.81,10.28,10.69,11.08,11.43,11.75,12.05,12.33)
y <- c(16.33,24.6,31.98,38.38,43.3,48.18,53.08,57.99,62.92,67.86,72.81,77.77,82.75,87.75,92.77,97.81)
lm <- lm(y ~ x + I(x^2) + I(x^3) + I(x^4))

现在您的多项式系数在 lm$coef 中,您可以提取它们并轻松绘制拟合线,例如:

coefs <- lm$coef
plot(x, y)
lines(x, coefs[1] + coefs[2] * x + coefs[3] * x^2 + coefs[4] * x^3 + coefs[5] * x^4)

拟合值也仅使用 lm$fit 给出。为第二条曲线构建相同的多项式并比较系数,而不仅仅是 "lines".