Какая модель является «подходящей моделью», зависит от того, что вы подразумеваете под «лучшим». У R есть инструменты, которые помогут вам, но вам нужно предоставить определение «наилучшего» для выбора между ними. Рассмотрим следующие примеры данных и код:
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')
Какая из этих моделей самая лучшая?аргументы могут быть сделаны для любого из них (но я бы не хотел использовать фиолетовый для интерполяции).
пятно на спрашивать «вы должны». В данных выборки всего 8 баллов. Степени свободы здесь довольно низкие. Разумеется, данные реальной жизни могут быть намного больше. –
Спасибо за ваш ответ. Как насчет получения R, чтобы найти подходящую модель? Существуют ли какие-либо функции для этого? –
Это зависит от вашего определения «лучшей модели». Модель, которая дает вам наибольший R^2 (который полином 10-го порядка), не обязательно является «лучшей» моделью. Условия в вашей модели должны быть разумно выбраны. Вы можете получить почти идеальную форму с множеством параметров, но модель не будет иметь прогностической способности и будет бесполезной для чего угодно, кроме как рисовать линию наилучшего соответствия через точки. – Greg