首页 > 解决方案 > 如何将我在 R 中的逐步回归转换为许多因变量的 FOR 循环

问题描述

我目前有对许多 x 和 1 y 使用三阶多项式回归的工作代码。然后,它使用逐步回归来找出 x 的哪个选择使该 y 的 AIC 最小化。

但是,我想添加更多 y 并使用 for 循环来找到每个 y 的最小 AIC,然后让它告诉我哪个 y 具有最小 AIC。

我当前的工作代码:

SPdata <- read.csv(file.choose(), header=T,sep=",")

REG1 <- lm(Y1~poly(X1, 3)+poly(X2, 3)+poly(X3, 3), SPdata)

summary(REG1)

n <- length(resid(REG1))

REG2 = step(REG1, direction = "backward", k = log(n))

summary(REG2)

coefficients(REG2)

我还制作了这个 for 循环,它输出 3 年的多元回归,但我不知道如何包含逐步回归部分:

SPdata <- read.csv(file.choose(), header=T,sep=",")

varnames <- names(SPdata)[1:3]

REG3 <- lapply(varnames,

FUN=function(x) lm(formula(paste(x, "~poly(X1, 3)+poly(X2, 3)")), SPdata))

names (REG3) <- varnames

谢谢您的帮助!

标签: rfor-loopregression

解决方案


您可以创建并命名您的函数,然后在apply.

myRegression <- function(y){

  myReg1 <- lm(formula(paste(y, "~poly(X1, 3)+poly(X2, 3)")), SPdata))
  n      <- length(resid(myReg1))
  myReg2 <- step(MyReg1, direction = "backward", k = log(n))
  ...
}

myReg3 <- lapply(varnames, FUN = function(x) myRegression(x))

推荐阅读