示例数据:
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个模型的列表。现在,我首先要选择mod1的第二和第四模型以及mod2的第三,第四,第五模型,然后分别在a和b的观测值上绘制这些选定的预测模型。其次要检查它们的残差图。
sel1 <- mod1[c(2,4)]
sel2 <- mod2[c(3,4,5)]
我正在尝试使用预测函数,但给我一个错误“没有适用于'预测'的适用方法应用于类”列表”的对象。 我的问题是如何在观测值上绘制预测线,并从列表中检查所选模型的残差图。
pred <- predict(sel1)
plot(resid(sel1))
谢谢!