Как преобразовать мою ступенчатую регрессию в R в цикл FOR для многих зависимых переменных - PullRequest
3 голосов
/ 09 июня 2019

В настоящее время у меня есть рабочий код, который использует полиномиальную регрессию 3-го порядка для многих x и 1 y. Затем он использует ступенчатую регрессию, чтобы найти, какой выбор x минимизирует AIC для этого y.

Тем не менее, я хотел бы добавить больше y и использовать цикл for, чтобы найти минимальный AIC для каждого y, а затем попросить его указать, у какого 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

Спасибо за вашу помощь!

1 Ответ

2 голосов
/ 09 июня 2019

Вы можете создать и назвать свою функцию, а затем использовать ее в 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))
...