Я пытаюсь исключить коррелированные переменные из GLModel. Во-первых, я вычисляю матрицу корреляции. Впоследствии я хотел бы каким-то образом реализовать его в функции combn, чтобы исключить коррелирующие переменные (заголовки столбцов). На данный момент я терплю неудачу - я не могу включить его в функцию combn, чтобы она работала и коррелированные переменные были исключены.
Вот ссылка на данные, которые я использую: https://drive.google.com/open?id=0B5IgiR_svnKcZkxHeTJXTm9jUjQ
Вот код, который я пытаюсь заставить его работать:
## rm(list = ls()) ## Edited out to prevent accidents
mod_data <- read.csv("mod_data.csv", header = T)
mod_headers <- names(mod_data[3:ncol(mod_data)-1])
CM = which(abs(cor(mod_data[,1:ncol(mod_data)-1])-diag(1,ncol(mod_data)-1)) > 0.5, arr.ind = T)
f <- function(){
null_model <- glm(newcol ~ 1, data=mod_data, family = binomial(link = "logit"), control = list(maxit = 50))
best_model <- null_model
best_aic <- AIC(null_model)
for(i in 1:length(mod_headers)){
tab <- combn(mod_headers,i)
for(j in 1:ncol(tab)){
tab_new <- c(tab[,j])
mod_tab_new <- c(tab_new, "newcol")
model <- glm(newcol ~., data=mod_data[c(mod_tab_new)], family = binomial(link = "logit"), control = list(maxit = 50000))
if(AIC(model) < best_aic){
best_model <- model
best_aic <- AIC(model)
}
}
}
return(best_model)
}
f()
Спасибо за ваши советы!
rm(list = ls())
, если только это не имеет решающего значения для вашего примера. Никто не хочет случайно скопировать/вставить ваш пример и запустить эту строку. - person Gregor Thomas   schedule 02.08.2017findCorrelation
в пакетеcaret
. Документация для справки: topepo.github.io/caret/pre-processing.html# корр - person jmuhlenkamp   schedule 09.12.2017