Библиотека шлицы имеет функции bs
и ns
которые будут создавать сплайн базиса для использования с lm
функцией, то вы можете разместить линейную модель и модель , включая шлицы и использовать anova
функцию , чтобы сделать полный и уменьшенный тест модели , чтобы увидеть , если сплайн модель подходит значительно лучше чем линейная модель.
Вот пример кода:
x <- rnorm(1000)
y <- sin(x) + rnorm(1000, 0, 0.5)
library(splines)
fit1 <- lm(y~x)
fit0 <- lm(y~1)
fit2 <- lm(y~bs(x,5))
anova(fit1,fit2)
anova(fit0,fit2)
plot(x,y, pch='.')
abline(fit1, col='red')
xx <- seq(min(x),max(x), length.out=250)
yy <- predict(fit2, data.frame(x=xx))
lines(xx,yy, col='blue')
Вы также можете использовать poly
функцию для подбора полинома и проверки нелинейных членов как критерий кривизны.
R2
Существуют методы для вычисления и построения доверительного интервала для подбора лесса (я думаю, что в пакете ggplot2 может быть встроенный способ), вы можете построить доверительный интервал и посмотреть, подойдет ли прямая линия в пределах диапазона (это не является р-значением, но все равно дает да / нет.
Вы можете подогнать линейную модель и взять остатки и подогнать модель лесса к остаткам в качестве ответа (и представляющей интерес переменной в качестве предиктора), если истинная модель является линейной, тогда это соответствие должно быть близко к плоской линии и переупорядочивать точки по отношению к предиктору не должно иметь никакого значения. Вы можете использовать это для создания теста перестановки. Подгоните лесс, найдите предсказанное значение, самое дальнее от 0, теперь случайным образом переставьте точки и установите новый лесс и найдите самую дальнюю предсказанную точку от 0, повторите несколько раз, значение p - это доля переставленных значений, которые далее от 0, чем первоначальное значение.
Вы также можете рассмотреть перекрестную проверку как метод выбора полосы пропускания лесса. Это не дает p-значения, но бесконечная полоса пропускания соответствует идеальной линейной модели, если перекрестная проверка предполагает очень большую полосу пропускания, то это предполагает, что линейная модель может быть разумной, если более высокие полосы пропускания явно уступают некоторым из чем меньше пропускная способность, то это означает, что определенной кривизны и линейного недостаточно.