Я часто использую B-сплайны для регрессии. До сих пор мне никогда не приходилось разбираться в производительности bs
: я бы просто выбрал интересующую меня модель и поместил ее с lm
. Однако теперь мне нужно воспроизвести b-сплайн-модель во внешнем (не-R) коде. Итак, в чем смысл матрицы, созданной bs
? Пример:интерпретация выхода функции R bs() (базовая матрица B-сплайна)
x <- c(0.0, 11.0, 17.9, 49.3, 77.4)
bs(x, df = 3, degree = 1) # generate degree 1 (linear) B-splines with 2 internal knots
# 1 2 3
# [1,] 0.0000000 0.0000000 0.0000000
# [2,] 0.8270677 0.0000000 0.0000000
# [3,] 0.8198433 0.1801567 0.0000000
# [4,] 0.0000000 0.7286085 0.2713915
# [5,] 0.0000000 0.0000000 1.0000000
# attr(,"degree")
# [1] 1
# attr(,"knots")
# 33.33333% 66.66667%
# 13.30000 38.83333
# attr(,"Boundary.knots")
# [1] 0.0 77.4
# attr(,"intercept")
# [1] FALSE
# attr(,"class")
# [1] "bs" "basis" "matrix"
Итак, degree
1, как я указано на входе. knots
говорит мне, что два внутренних узла находятся в x = 13.3000 и x = 38.8333 соответственно. Был немного удивлен, увидев, что узлы находятся в фиксированных квантилях, я надеялся, что R найдет лучшие квантиля для моих данных, но, конечно, это сделает модель не линейной, а также не удастся, не зная данных ответа. intercept = FALSE
означает, что в базу не было перехвата (это хорошая вещь? Меня всегда учат не подстраивать линейные модели без перехвата ... ну, думаю, lm
просто добавляет одно в любом случае).
Однако, что относительно матрицы? Я не понимаю, как это интерпретировать. С тремя столбцами я бы подумал, что это означает, что базовые функции три. Это имеет смысл: если у меня есть два внутренних узлы K1
и K2
, у меня будет сплайн между левой границей узлом B1
и K1
, другой сплайном между K1
и K2
, и окончательным один между K2
и B2
, так что ... тремя базисными функциями , ОК. Но каковы основные функции? Например, что означает этот столбец?
# 1
# [1,] 0.0000000
# [2,] 0.8270677
# [3,] 0.8198433
# [4,] 0.0000000
# [5,] 0.0000000
EDIT: это похоже, но не точно такой же, как this question. Этот вопрос задает вопрос о интерпретации коэффициентов регрессии, но я на шаг впереди: я хотел бы понять значение коэффициентов матрицы модели. Если я пытаюсь сделать те же участки, как это было предложено в the first answer, я перепутались сюжет:
b <- bs(x, df = 3, degree = 1)
b1 <- b[, 1] ## basis 1
b2 <- b[, 2] ## basis 2
b3 <- b[,3]
par(mfrow = c(1, 3))
plot(x, b1, type = "l", main = "basis 1: b1")
plot(x, b2, type = "l", main = "basis 2: b2")
plot(x, b3, type = "l", main = "basis 3: b3")
Они не могут быть базисные функции B-сплайн, потому что у них слишком много узлов (каждая функция должна иметь только одну).
The second answer фактически позволил бы мне восстановить мою модель за пределами R, поэтому, я думаю, я мог бы пойти с этим. Однако также этот ответ не совсем объясняет, каковы элементы матрицы b
: он имеет дело с коэффициентами линейной регрессии, которые я еще не представил здесь. Это правда, что это моя конечная цель, но я хотел понять и этот промежуточный шаг.
@ ZheyuanLi, ну, нет. Речь идет о коэффициенте 'lm', я спрашиваю о базовой функции. [Этот ответ] (http://stackoverflow.com/a/37364459/1711271) не объясняет, что представляют собой одиночные коэффициенты матрицы. Если я сделаю один и тот же сюжет, предложенный в первом ответе, я получаю мусор (определенно не функции B-сплайна, так как их max должно быть 1). [Другой ответ] (http://stackoverflow.com/a/37363943/1711271) лучше, но все же не совсем то, что я просил. Я отредактировал вопрос, чтобы показать, почему. – DeltaIV
Ух, подождите! Я понял! Я собираюсь ответить на свой вопрос, теперь я понял, что это за матрица :) – DeltaIV
Прежде всего, извинения, я не заметил, что вы были автором ответа, иначе я бы обратился к вам как таковой. Возможно, у нас есть другая терминология для базисных функций. Для меня основными функциями являются бесконечномерные объекты (функции), и ваш ответ показывает их. Но столбцы матрицы 'b' являются, IMO, а не базовыми функциями, а значениями, полученными с помощью базисных функций в точках выборки' x <- c (0.0, 11.0, 17.9, 49.3, 77.4) '. ctd .. – DeltaIV