Как указать узлы в R
ns
Функция генерирует естественный регрессионный сплайн базис заданной входной вектор. Узлы могут быть определены либо с помощью аргумента степени свободы, df
который принимает целое число, либо с помощью аргумента узла, knots
который принимает вектор, дающий желаемое расположение узлов. Обратите внимание, что в коде вы написали
library(splines)
lda.pred <- lda(y ~ ns(x, knots=5))
Вы не запросили пять узлов, а запросили один (внутренний) узел в точке 5.
Если вы используете df
аргумент, то внутренние узлы будут выбираться на основе квантилей вектора x
. Например, если вы делаете звонок
ns(x, df=5)
Тогда основа будет включать два граничных узла и 4 внутренних узла, размещенных в 20-м, 40-м, 60-м и 80-м квантилях x
соответственно. Граничные узлы, по умолчанию, размещаются в мин. И макс x
.
Вот пример, чтобы указать расположение узлов
x <- 0:100
ns(x, knots=c(20,35,50))
Если бы вы вместо этого позвонили ns(x, df=4)
, вы бы получили 3 внутренних узла в точках 25, 50 и 75 соответственно.
Вы также можете указать, хотите ли вы перехватить термин. Обычно это не указывается, так ns
как чаще всего используется в сочетании с lm
, который включает в себя перехват неявно (если не принужден к этому). Если вы используете intercept=TRUE
в своем вызове ns
, убедитесь, что знаете, почему вы это делаете, поскольку, если вы сделаете это, а затем lm
наивно позвоните , матрица дизайна в итоге окажется с недостатком ранга.
Стратегии размещения узлов
Узлы чаще всего размещаются в квантилях, как и поведение по умолчанию ns
. Интуиция заключается в том, что если у вас много данных, сгруппированных близко друг к другу, то вам может понадобиться больше узлов для моделирования любых потенциальных нелинейностей в этом регионе. Но это не означает, что это либо (а) единственный выбор, либо (б) лучший выбор.
Другие варианты, очевидно, могут быть сделаны и зависят от конкретной области. Просмотр гистограмм и оценок плотности ваших предикторов может дать подсказки относительно того, где нужны узлы, если только не существует какого-то «канонического» выбора с учетом ваших данных.
С точки зрения интерпретации регрессий, я хотел бы отметить, что, хотя вы, безусловно, можете «поиграть» с размещением узлов, вы должны понимать, что за это вы понесете штраф за выбор модели, что вы должны быть осторожны в оценке и должны корректировать любые выводы как результат.