Die Splines Bibliothek verfügt über Funktionen bs
und ns
das wird Spline - Basis auf der Verwendung mit der erstellen lm
Funktion, dann können Sie ein lineares Modell und ein Modell mit Splines passen und die Verwendung anova
Funktion den vollen und reduzierten Modell Test zu tun , wenn das Spline - Modell paßt wesentlich besser zu sehen als das lineare Modell.
Hier ist ein Beispielcode:
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')
Sie können die poly
Funktion auch verwenden , um eine Polynomanpassung durchzuführen und die nichtlinearen Terme als Krümmungstest zu testen.
Für die Löss-Passform ist es etwas komplizierter. Es gibt einige Schätzungen äquivalenter Freiheitsgrade für den Lössglättungsparameter, die zusammen mit den -Werten für die zu konstruierenden linearen und Lössmodelle und den F-Test verwendet werden könnten . Ich denke, dass Methoden, die auf Bootstrapping- und Permutationstests basieren, intuitiver sein können.R2
Es gibt Techniken zum Berechnen und Zeichnen eines Konfidenzintervalls für eine Lössanpassung (ich glaube, das ggplot2-Paket enthält möglicherweise eine integrierte Methode). Sie können das Konfidenzband zeichnen und prüfen, ob eine gerade Linie in das Band passt (dies) ist kein p-Wert, gibt aber trotzdem ein Ja / Nein.
Sie könnten ein lineares Modell anpassen und die Residuen nehmen und ein Lössmodell als Antwort (und die interessierende Variable als Prädiktor) an die Residuen anpassen. Wenn das wahre Modell linear ist, sollte diese Anpassung nahe an einer flachen Linie liegen und die Punkte neu anordnen relativ zum Prädiktor sollte keinen Unterschied machen. Damit können Sie einen Permutationstest erstellen. Passen Sie den Löss an, finden Sie den vorhergesagten Wert, der am weitesten von 0 entfernt ist, permutieren Sie nun zufällig die Punkte und passen Sie einen neuen Löss an und finden Sie den am weitesten vorhergesagten Punkt von 0, wiederholen Sie einige Male, der p-Wert ist der Anteil der permutierten Werte, die weiter entfernt sind von 0 als der ursprüngliche Wert.
Möglicherweise möchten Sie auch die Kreuzvalidierung als Methode zur Auswahl der Lössbandbreite betrachten. Dies ergibt keinen p-Wert, aber eine unendliche Bandbreite entspricht einem perfekten linearen Modell. Wenn die Kreuzvalidierung eine sehr große Bandbreite vorschlägt, kann ein lineares Modell sinnvoll sein, wenn die höheren Bandbreiten einigen deutlich unterlegen sind Je kleiner die Bandbreiten, desto deutlicher wird die Krümmung, und die Linearität reicht nicht aus.
anova
With Splines-Ansatz hinzugefügt . Für den F-Test von berücksichtigen, dass die SSR geteilt durch SST und SSE geteilt durch SST ist, so dass das Verhältnis gerecht ist die SSR geteilt durch SSE (die 2 Fälle von SST heben sich auf). Wenn Sie die Freiheitsgrade und ein wenig Algebra einbeziehen, haben Sie die F-Statistik für die allgemeine Regression. R 2 1 - R 2 R 2lm(y~bs(x,5))
tut und warum nichtlm(y~I(bs(x,5)))
? Ich bin ziemlich verwirrt von diesem Aufruf, weil das Ergebnis von bs (x, 5) keine Variable ist ... 2) Verstehe ich es richtig, dass der gesuchte p-Wert das Ergebnis von istanova(fit0,fit2)
?bs
lm