WageA3 <- Wage %>% select(-c(logwage,region))
Я создал эту функцию для сравнения моделей прогнозирования
y_name <- c("wage")
X_names <- c("age","health")
subset_error_rates<-function(X_names,y_name,data=WageA3, train_pop){
reg_form <-as.formula(paste(y_name,"~",
paste(X_names, collapse = " + ")))
traincut<-round(train_pop*nrow(data))
train_data<-data[1:traincut,]
test_data<-data[(traincut+1):nrow(data),]
model1<-lm(reg_form, data = train_data)
train_data<- train_data %>%
mutate(pred_traindat=predict(model1))
test_data<- test_data %>%
mutate(pred_testdat=predict(model1,newdata=test_data))
train_data<- train_data%>%
mutate(err_pred_train=((pred_traindat-train_data[[y_name]])^2))
Training_err<-mean(train_data$err_pred_train)
test_data<-test_data %>%
mutate(err_pred_test=((pred_testdat-test_data[[y_name]])^2))
Test_err<-mean(test_data$err_pred_test)
Names_of_x<-list(X_names)
Length<-length(X_names)
return(tibble(Training_err,Test_err,Length,Names_of_x))
}
WageA3
subset_error_rates(X_names, y_name, WageA3, .75)
Затем я использую этот код для создания списка всех возможных моделей:
regMat <- expand.grid(c(TRUE,FALSE), c(TRUE,FALSE),
c(TRUE,FALSE), c(TRUE,FALSE), c(TRUE,FALSE),c(TRUE,FALSE),c(TRUE,FALSE),c(TRUE,FALSE))
regMat <- regMat[-(dim(regMat)[1]),]
names(regMat) <- c("year","age","maritl","race","education","jobclass","health","health_ins")
regressors <- c("year","age","maritl","race","education","jobclass","health","health_ins")
allModelsList <- apply(regMat, 1, function(x) as.formula(
paste(c("wage ~ 1", regressors[x]),
collapse=" + ")) )
data=Wage
allModelsResults <- lapply(allModelsList,
function(x) lm(x, data=data))
Наконец, я хочу использовать функцию map_df
вместе с функцией subset_error_rates
, которую я только что создал, чтобы составить таблицу с одной строкой для каждой комбинации фоновых переменных, и вот что я пытаюсь:
allModelsList %>% map_df(subset_error_rates(y_name="wage",data=Wage,train_pop=.80))
Однако я не знаю, как сказать R использовать в качестве аргумента для X_names
, то есть в качестве вектора регрессоров переменные, перечисленные в каждой строке `` `` allModelsResults `` `список.
Заранее благодарим за помощь.