Biblioteka wypusty posiada funkcje bs
i ns
które będą tworzyć spline podstaw do stosowania z lm
funkcji, to można dopasować modelu liniowego oraz modelu tym splajnów i korzystać z anova
funkcji, aby wykonać pełną i zmniejszoną testu modelu, aby zobaczyć, czy model spline pasuje znacznie lepiej niż model liniowy.
Oto przykładowy kod:
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')
Możesz również użyć tej poly
funkcji, aby wykonać dopasowanie wielomianowe i przetestować warunki nieliniowe jako test krzywizny.
R2)
Istnieją techniki obliczania i wykreślania przedziału ufności dla dopasowania mniejszego (myślę, że może istnieć wbudowany sposób w pakiecie ggplot2), możesz wykreślić przedział ufności i sprawdzić, czy w pasmie mieści się linia prosta (to nie jest wartością p, ale nadal daje tak / nie.
Możesz dopasować model liniowy i wziąć resztki i dopasować model less do reszt jako odpowiedź (i zmienną zainteresowania jako predyktor), jeśli prawdziwy model jest liniowy, to dopasowanie powinno być bliskie płaskiej linii i zmienić kolejność punktów względem predyktora nie powinno robić żadnej różnicy. Możesz użyć tego do stworzenia testu permutacji. Dopasuj less, znajdź przewidywaną wartość najdalszą od 0, teraz losowo permutuj punkty i dopasuj nową less i znajdź najdalszy przewidywany punkt od 0, powtórz kilka razy, wartość p jest proporcją permutowanych wartości, które są dalej od 0 niż pierwotna wartość.
Możesz także spojrzeć na walidację krzyżową jako metodę wyboru mniejszej przepustowości. Nie daje to wartości p, ale nieskończona szerokość pasma odpowiada doskonałemu modelowi liniowemu, jeśli walidacja krzyżowa sugeruje bardzo dużą szerokość pasma, wówczas sugeruje to, że model liniowy może być rozsądny, jeśli wyższe szerokości pasma są wyraźnie gorsze od niektórych mniejsze szerokości pasma sugerują, że określona krzywizna i liniowość nie są wystarczające.
anova
lm(y~bs(x,5))
dzieje, a dlaczego tak nie jestlm(y~I(bs(x,5)))
? Jestem bardzo zdezorientowany tym wywołaniem, ponieważ wynik bs (x, 5) nie jest zmienną ... 2) Czy rozumiem poprawnie, że szukana wartość p jest wynikiemanova(fit0,fit2)
?bs
lm