Встановлення вузлів у натуральних кубічних сплайнах у R


23

У мене є дані з багатьма співвіднесеними функціями, і я хочу розпочати, зменшуючи функції з плавною базовою функцією, перш ніж запускати LDA. Я намагаюся використовувати в splinesупаковці з nsфункцією природні кубічні сплайни . Як мені займатися призначенням вузлів?

Ось основний код R:

library(splines)
lda.pred <- lda(y ~ ns(x, knots=5))

Але я не маю уявлення про те, як вибрати вузли ns.


3
Ви запитуєте про те, як вказати вузли в (тобто, через аргументи до ns ) чи запитуєте про стратегії вирішення питання, де розмістити вузли? R
кардинал

1
Дивіться Harrell, Regression Strategies 2015, щоб добре обговорити, де розмістити вузли (неважливо, тому квантили настільки ж хороші, як будь-що - винятки, якщо у вас є вагомі причини вважати, що поведінка змінюється в якийсь момент) та кількість вузлів (3, 4 або 5 залежно від N)
statsguy

Відповіді:


40

Як вказати вузли в 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відповідно. Прикордонні вузли за замовчуванням розміщуються на min та max 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. Інтуїція полягає в тому, що якщо у вас багато даних, згрупованих поблизу, вам може знадобитися більше вузлів для моделювання будь-яких потенційних нелінійностей у цьому регіоні. Але це не означає, що це або (а) єдиний вибір, або (б) найкращий вибір.

Очевидно, що інші варіанти можуть бути зроблені та залежать від домену. Переглядаючи гістограми та оцінки щільності ваших прогнозів, можна дати підказки щодо того, де потрібні вузли, якщо не буде певного "канонічного" вибору з урахуванням ваших даних.

З точки зору інтерпретації регресій, я зазначу, що, хоча ви, звичайно, можете "пограти" з розміщенням вузлів, ви повинні усвідомити, що ви несете за це вибір штрафу за вибір, який ви повинні бути обережними для оцінки та повинні коригувати будь-які умовиводи як результат.


З огляду на те x <- 0:100, що належить зробити "правильний" спосіб визначення точок розриву knots_x <- quantile(x, probs=c(.2, .35, .5)), який потім буде використаний ns(x, knots=knots_x)для визначення 3 внутрішніх вузлів у місцях 25, 50 та 75 відповідно. У відповіді мене збентежило те, що я очікував, що в knotsаргументі потрібно вказати бажані кванти , тоді як мені потрібно ввести фактичні значення з xвектора ...
landroni

Аналіз обстежень здоров’я, Едвард Л. Корн, Баррі І. Граубард, стор.98 стверджують, що Дурлман та Саймон (1989) рекомендують (0,05,0.50,0,95) для природних сплайнів
Кріс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.