Home Articles

在回归中循环列名称

Asked
Viewed 269 times
0

我想对数据框中的每个变量运行一整套回归,然后在循环过程中将每个回归的残差偏差值存储在新的向量中 .

该帧称为“cw” . 前几个变量只是元数据,所以忽略它们 . 我尝试以下方法:

deviances<-c()
for (x in colnames(cw)[1:8]){deviances[x]<-NA}
for (x in colnames(cw)[8:27]){
  model<-glm(cwonset ~ x, fmaily = binomial, data = cw)
  append(deviances, model$deviance)
}

但是,它给出了错误:

Error in model.frame.default(formula = cwonset ~ x, data = cw, drop.unused.levels = TRUE) : 
  variable lengths differ (found for 'x')

知道为什么吗?

1 Answer

  • 2

    没有数据,我不得不依靠 mtcars 来帮助你,也不需要 for 循环 . 我假设 mpg 为因变量

    逻辑: sapply 帮助我循环遍历每个colname,然后我只是回归 . 它内部是一个 for 循环

    sapply(colnames(mtcars[-1]), function(x) {
                                            form <- as.formula(paste0("mpg~", x))
                                            model <- glm(form, data = mtcars)
                                            model$deviance})
    #      cyl     disp       hp     drat       wt     qsec       vs       am     gear     carb 
    # 308.3342 317.1587 447.6743 603.5667 278.3219 928.6553 629.5193 720.8966 866.2980 784.2711
    

Related