Подгонка различных сплайнов в R (кубический, натуральный, сглаживание) - PullRequest
0 голосов
/ 11 ноября 2018

Итак, я пытаюсь вписать кубический, естественный и сглаживающий сплайн в набор данных Auto из пакета ISLR. У меня возникли некоторые проблемы, и я получаю некоторые предупреждения / сообщения об ошибках, которые заставляют меня думать, что что-то не так с моими данными или созданной мной матрицей.

Что действительно сбивает с толку, так это то, как эта базовая команда выдает ошибку.

natural.splines.fit <- lm(horsepower ~ ns(mpg, knots = c(25, 50, 75)), data = Auto)

Ошибка в qr.default (t (const)): NA / NaN / Inf при вызове сторонней функции (аргумент 1)

В моем коде есть дополнительные ошибки / предупреждения, но дело в том, что я по сути скопировал код откуда-то и запустил его, который работал для набора данных Carseats и изменил его, чтобы изменить переменные в соответствии с набором данных Auto , Вот почему это меня смущает. Я не понимаю, почему я получаю ошибки для набора данных Auto, но не для набора данных Carseats. У кого-нибудь есть понимание?

1 Ответ

0 голосов
/ 11 ноября 2018

Проблема в том, что вы определяете узлы вне диапазона переменной-предиктора. Вот базовый код, который будет работать (я только что определил узлы, которые находятся в диапазоне переменной mpg).

x <- ISLR::Auto

natural.splines.fit <- lm(horsepower ~ ns(mpg, knots = c(10,20,30,40)), data = x)
summary(natural.splines.fit)

Я считаю, что вы пытаетесь разместить узлы для 25-го, 50-го и 75-го процентиля, поэтому я рекомендую сначала получить значения, соответствующие этим местоположениям, а затем подгонять модель. Вот как я это сделал

target_quantiles <- unname(quantile(x$mpg, probs = c(0.25,0.5,0.75)))

natural.splines.fit2 <- lm(horsepower ~ ns(mpg, knots = target_quantiles), data = x)
summary(natural.splines.fit2)
...