在 R 中,我使用 smooth.spline {stats} 函数来通过某些函数值拟合样条曲线。
x=seq(0, 1,0.01)
y=sin(x*23) - 0.6*cos(x*7)
plot(x,y)
ss= smooth.spline(x=x, y=y, df=35)
plot(ss)
现在 ss 对象包含在任何给定点绘制和评估样条曲线所需的拟合样条曲线的所有值。
ss$fit
$knot
[1] 0.0000000 0.0000000 0.0000000 0.0000000 0.3333333 0.6666667 1.0000000 1.0000000 1.0000000 1.0000000
$nk
[1] 6
$min
[1] 1
$range
[1] 3
$coef
[1] 0.5549946 0.4366268 0.1988102 1.1388495 0.7444880 0.5479000
attr(,"class")
[1] "smooth.spline.fit"
如何使用 ss $ fit 对象中的系数和节点来计算xa点处样条函数的值。 我知道我可以使用预测,但我想实际手动计算该值。
我的尝试在以下函数中描述,该函数未产生预期结果:
estimateSpline <- function(xv, fit){
knots = unique(fit$knot)
knots = knots[ 2 : (length(knots)-1) ]
len = length(knots)
xv = (xv - fit$min) / fit$range
Gbase = rep(xv, len )
Gbase = Gbase - knots
Gbase[Gbase < 0] = 0
Gbase = c(rep(xv,4), Gbase)
Gpow = c(seq(0, 3, 1), rep (3, len))
Gvec = Gbase ^ Gpow
res = fit$coef %*% Gvec
return (res)
}
我理解splines背后的理论,并且我阅读了很多关于它背后的数学的文档。
任何人都可以帮我评估任何点 xv 的拟合样条函数的值吗?
我不完全理解smooth.spline输出的参数的数据格式,数量和顺序,这样我就可以重建 predict 函数的结果。
由于