Монотонный сплайн в R
Я пытаюсь использовать пакет spline2 в R для создания монотонного сплайна.
У меня проблемы с оценкой модели для новых значений независимой переменной. В общем, я испытываю затруднения с пониманием обработки R слова "предикат" и его связи со сплайном 2, а также с тем, как использовать полученный объект bs.
Я пытался следовать этому примеру, который использует spline1. Мои данные находятся в кадре данных с именем BRIyII, с независимой переменной t и зависимой переменной P, поэтому:
plot(BRIyII$t,BRIyII$P)
Итак, я делаю:
knots=c(9)
myMat=mSpline(BRIyII$t, knots = knots, degree = 3, intercept = TRUE)
mylm=lm(BRIyII$P~myMat)
Теперь, если мы:
pr = predict(mylm,data.frame(BRIyII$t))
points(BRIyII$t,pr,col = "red")
Итак, мои вопросы:
1- Так как самое правое прогнозируемое значение (красная точка) ниже, чем левое, я неправильно понимаю "монотонную" природу m сплайнов?
2- Как я могу оценить сплайн в значениях, отличных от определенных в BRIyII$t? Я пробовал несколько комбинаций, но мне не хватает знания синтаксиса R. Я бы идеально хотел сделать что-то вроде:
newdata=seq.int(0,41.5,0.1)
1 ответ
Я отвечу на Вопрос № 1, потому что Вопрос № 2 рассматривается в комментариях.
Документация splines2 относится к основанию M-сплайна как к основанию "монотонной регрессии сплайна", но я думаю, что это вводит в заблуждение. Способ оценки сплайна монотонной регрессии заключается в использовании основы I-сплайна с ограничением на то, чтобы коэффициенты регрессии были неотрицательными. I-сплайны являются интегралами от M-сплайнов и, таким образом, не убывают. Поэтому любая неотрицательная линейная комбинация их также будет неубывающей. Таким образом, вы можете использовать splines2::iSpline вместе с неотрицательным методом регрессии, таким как nnls::nnls, чтобы оценить функцию монотонной регрессии.
Для объяснения M-сплайнов, I-сплайнов и монотонной регрессии, проверьте:
Ramsay, JO (1988) Сплайны монотонной регрессии в действии. Статистическая наука 3 (4), 425-461.