Как указать аргумент степени в ns () в R, для построения естественного сплайна степени 5? - PullRequest
0 голосов
/ 16 ноября 2018
 library(ISLR) 
 fit=lm(wage~bs(age ,knots =c(25 ,40 ,60),degree = 5,),data=Wage)
 fit=lm(wage~ns(age ,knots =c(25 ,40 ,60),degree = 5,),data=Wage)

Я могу построить сплайн регрессии полинома степени 5, но как мне построить естественный сплайн степени 5, так как функция ns() не имеет аргумента степени.

Я могу произвести только кубический естественный сплайн, используя ns(). Есть ли другие функции, которые можно использовать, например, для получения квадратичных естественных сплайнов и т. Д.?

1 Ответ

0 голосов
/ 23 апреля 2019

ns явно строит естественный кубический сплайн.Вы не можете настроить степень полинома.Чтобы понять почему, вам нужны базовые знания по сплайнам.


Обычно для сплайна степени d с k узлами (включая k - 2 внутренние узлы и 2 граничные узлы, там

  • (d + 1)(k - 1) кусочно-полиномиальные коэффициенты
  • d(k - 2) ограничения непрерывности для этих коэффициентов

, следовательно, будет (d + 1)(k - 1) - d(k - 2) = k + d - 1 неограниченные коэффициенты.означает, что

  • для линейного сплайна с d = 1, k узлами дают ровно k свободных коэффициентов;
  • для квадратичного сплайна с d = 2, kузлы дают ровно k + 1 свободных коэффициентов;
  • для кубического сплайна с d = 3, k узлами дают ровно k + 2 свободных коэффициентов.

Это стандартные сплайны, которыеВы можете получить из конструктора bs.


«Естественный» означает дополнительные граничные условия, так что k узлы дают k свободных коэффициентов. Очевидно, что линейный сплайн легко «естественен»;квадратичный сплайн nимеет еще одно ограничение;для кубического сплайна требуется еще два ограничения.

Имеет смысл задать естественные условия для кубического сплайна: вторая производная на каждом из 2 граничных узлов равна 0. Однако не очевидно, какое условие (условия)вам нужно для другой степени сплайнов.Следовательно, ns позволяет вам построить кубический сплайн.


Обратите внимание, что bs и ns ожидают, что вы предоставите внутренние узлы только через аргумент knots.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...