Оценить smooth.spline в определенной точке R

В 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)
}

Я понимаю теорию, лежащую в основе сплайнов, и я прочитал много документов о математике, стоящей за этим.

Может ли кто-нибудь помочь мне оценить значение подобранной сплайн-функции в любой произвольной точке xv?

Я не полностью понимаю формат данных, количество и порядок параметров, выдаваемых smooth.spline, поэтому я могу реконструировать результаты функции predict.

Спасибо


person Herzog    schedule 05.01.2015    source источник
comment
Так в чем тут вопрос? Почему ты не доверяешь predict.smooth.spline ? Он делает именно то, за что вы, кажется, цепляетесь. Если вам нужна помощь в отладке вашей домашней функции прогнозирования, пожалуйста, опубликуйте, каким, по вашему мнению, должен быть результат и почему.   -  person Carl Witthoft    schedule 05.01.2015
comment
Моя конечная цель - иметь возможность экспортировать функцию, которую я подгоняю со сплайном, из R в Excel или императивный язык программирования. Я хочу иметь возможность оценивать, скажем, java любую точку x на сплайне. В java у меня нет predict, но я могу использовать математику, стоящую за ним. Итак, как мне это сделать?   -  person Herzog    schedule 05.01.2015
comment
Вычисления выполняются predict.smooth.spline.fit, который фактически использует процедуру Фортрана, bvalus, которая, в свою очередь, вызывает bvalue. Вы можете увидеть код с комментариями здесь: svn.r-project.org/R/trunk/src/library/stats/src/bvalue.f   -  person James    schedule 05.01.2015