首页 > 解决方案 > 线性回归 - 为每次运行移动独立列和相关列

问题描述

我正在努力解决这个问题:

假设我有data("mtcars")数据框。我想对此数据帧的两列执行回归(例如mtcars$mpgvs mtcars$wt),将每个回归的 R 平方和每个回归的残差存储到两个不同的数据帧中,然后将独立变量和因变量的列向右移动(例如mtcars$cylvs mtcars$qsec)。我将需要重复此操作,直到到达最后一个自变量列(在此mtcars数据库中它将是drat列)。

任何帮助,将不胜感激!

标签: rfor-loopregressionsapply

解决方案


在列索引上使用 rollapply。List(c(-5, 0)) 表示在每次迭代中使用偏移量 -5 和 0。

library(zoo)

resids <- t(rollapply(1:ncol(mtcars), list(c(-5, 0)), 
  function(ix) resid(lm(mtcars[, ix]))))

rsquareds <- rollapply(1:ncol(mtcars), list(c(-5, 0)), 
  function(ix) summary(lm(mtcars[, ix]))$r.squared)

如果您打算反转哪些是因变量和自变量,请list(c(0, -5))改用。


推荐阅读