Który model jest "najlepiej dopasowanym modelem", zależy od tego, co rozumie się przez "najlepszy". R ma narzędzia, które Ci pomogą, ale musisz podać definicję "najlepszego", aby wybrać między nimi. Rozważ następujące dane i kod przykładowy:
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')
Który z tych modeli jest najlepszy?można argumentować za którąkolwiek z nich (ale ja nie chciałbym użyć purpurowego do interpolacji).
jest na miejscu w pytając „należy”. Przykładowe dane mają tylko 8 punktów. Stopnie wolności są tutaj dość niskie. Oczywiście rzeczywiste dane mogą mieć znacznie więcej. –
Dzięki za odpowiedź. A co z otrzymaniem R, aby znaleźć najlepszy model dopasowania? Czy są w tym jakieś funkcje? –
To zależy od twojej definicji "najlepszego modelu". Model, który daje największy R^2 (który byłby wielomianem rzędu 10) niekoniecznie jest "najlepszym" modelem. Warunki w twoim modelu muszą być rozsądnie wybrane. Możesz uzyskać niemal idealne dopasowanie z wieloma parametrami, ale model nie będzie miał mocy predykcyjnej i będzie bezużyteczny do niczego innego niż rysowanie linii najlepszego dopasowania przez punkty. – Greg