Пример данных:
x <- 1:10
y <- x + c(-0.5,0.5)
a <- rnorm(10)
b <- rnorm(10)
c <- rnorm(10)
data <- data.frame(x,y,a, b,c)
Здесь я написал функцию для расчета различных моделей одновременно по одной переменной ind (z), как показано ниже.
func <-function(z){
fit1 <- lm( y~ x + z )
fit2 <- lm( y~x + I(z^2))
fit3 <- lm( y~poly(x,3) + z)
library(splines)
fit4 <- lm( y~ns(x, 3) + z)
fit5 <- lm( y~ns(x, 9) + z)
return(list(fit1, fit2, fit3, fit4, fit5))
}
mod1 <- func(data$a)
mod2 <- func(data$b)
mod1 и mod2 содержат список из 5 моделей каждая. Теперь сначала я хочу выбрать 2-ю и 4-ю модели mod1 и 3-ю, 4-ю, 5-ю модели mod2, а затем нанести на график эти выбранные предсказанные модели по наблюдаемым значениям a и b соответственно. Во вторых хочу проверить остаточный участок из них.
sel1 <- mod1[c(2,4)]
sel2 <- mod2[c(3,4,5)]
Я пытаюсь использовать функцию предикторов, но выдает ошибку «нет применимого метода для предиката, примененного к объекту класса« список ».
Мой вопрос заключается в том, как нанести прогнозируемые линии на наблюдаемые значения и проверить остаточные графики для выбранных моделей из списка.
pred <- predict(sel1)
plot(resid(sel1))
Заранее спасибо!