我正在尝试创建平滑样条线(可能是自然样条线),以在 7 个数据点之间获得更平滑的曲线。我觉得解决方案很简单,但仍然无法理解它。
这是我的数据:`
structure(list(time = c(7269, 21935, 43200, 86400, 172800, 259200,
518400), speed = c(5.804787454, 4.558924, 3.88888889, 3.21296296,
2.44675926, 1.9437728, 1.88)), row.names = c(NA, -7L), class = c("tbl_df",
"tbl", "data.frame"))
这就是点之间有直线的样子。如何将数据拟合到仍然穿过所有数据点的更平滑的曲线?
实际上,我可以用
xspline
创建更平滑的曲线。但是,这并不像使用 predict
来获取给定 x 的 y 值那么容易。但也许这仍然是要走的路?
library(splines)
s <- interpSpline(speed ~ time, dd)
predict(s, x = seq(min(dd$time), max(dd$time), length.out = 101)