如何在观测值上绘制预测线并如何从列表中检查所选模型的残差图

时间:2019-06-01 16:34:16

标签: r regression

示例数据:

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))

谢谢!

0 个答案:

没有答案