Quale modello è il "miglior modello di adattamento" dipende da cosa intendi per "migliore". R ha strumenti per aiutare, ma è necessario fornire la definizione di "migliore" tra cui scegliere. Considera il seguente esempio di dati e codice:
x <- 1:10
y <- x + c(-0.5,0.5)
plot(x,y, xlim=c(0,11), ylim=c(-1,12))
fit1 <- lm(y~offset(x) -1)
fit2 <- lm(y~x)
fit3 <- lm(y~poly(x,3))
fit4 <- lm(y~poly(x,9))
library(splines)
fit5 <- lm(y~ns(x, 3))
fit6 <- lm(y~ns(x, 9))
fit7 <- lm(y ~ x + cos(x*pi))
xx <- seq(0,11, length.out=250)
lines(xx, predict(fit1, data.frame(x=xx)), col='blue')
lines(xx, predict(fit2, data.frame(x=xx)), col='green')
lines(xx, predict(fit3, data.frame(x=xx)), col='red')
lines(xx, predict(fit4, data.frame(x=xx)), col='purple')
lines(xx, predict(fit5, data.frame(x=xx)), col='orange')
lines(xx, predict(fit6, data.frame(x=xx)), col='grey')
lines(xx, predict(fit7, data.frame(x=xx)), col='black')
Quale di questi modelli è il migliore?argomenti potrebbero essere fatti per nessuno di essi (ma io per primo non vorrei usare quello viola per l'interpolazione).
fonte
2010-09-29 17:25:52
è a posto nel chiedere "si dovrebbe". I dati di esempio hanno solo 8 punti. I gradi di libertà sono piuttosto bassi qui. I dati della vita reale possono avere molto di più, ovviamente. –
Grazie per la risposta. Che ne dici di ottenere R per trovare il modello più adatto? Ci sono delle funzioni per questo? –
Dipende dalla definizione del "miglior modello". Il modello che ti dà il massimo R^2 (che sarebbe un polinomio del decimo ordine) non è necessariamente il modello "migliore". I termini nel tuo modello devono essere ragionevolmente scelti. È possibile ottenere una vestibilità quasi perfetta con molti parametri, ma il modello non avrà potenza predittiva e sarà inutile per qualsiasi altra cosa che non disegnare una linea di massima aderenza attraverso i punti. – Greg