所以我正在研究逻辑回归模型,并做了一些手工装袋以确定汇总模型。
我检索了每个系数的平均值,但是现在我不知道如何将它们替换为原始的,无袋装的模型。
## Bagging
length_divisor<-4
iterations<-100
predictions<-foreach(m=1:iterations,.combine=cbind) %do% {
training_positions <- sample(nrow(train), size=floor((nrow(train)/length_divisor)))
train_pos<-1:nrow(train) %in% training_positions
glm_fit <- glm(y~.,family=binomial(link='logit'),data=train[train_pos,])
predict(glm_fit,newdata = remove_missing_levels(fit = glm_fit, test_data = subset(test,select=seq(1,16))), type="response")
merger <- as.data.frame(glm_fit$coefficients)
if(m == 1) { coefs <- merger } else {
coefs <- bind_rows(coefs %>% rownames_to_column(), merger %>% rownames_to_column()) %>% group_by(rowname) %>% summarise_all(sum)
}
}
coefs$`glm_fit$coefficients` <- coefs$`glm_fit$coefficients` / iterations
这是套袋部分。我得到这样的东西:
**print(coefs)**
# A tibble: 39 x 2
rowname `glm_fit$coefficients`
<chr> <dbl>
1 (Intercept) -3.158792e+01
2 age_1 1.519103e-02
3 ENCOURS_CONSO -1.761395e-05
4 ENCOURS_HABITAT 1.789009e-06
5 flag_univers_detenus1 2.366870e+01
6 flag_univers_detenus2 2.309662e+01
7 flag_univers_detenus3 2.294252e+01
8 flag_univers_detenus4 2.334582e+01
9 mt_flux_cred_12M 6.602257e-06
10 mt_op_credit_depot_12M -2.581061e-06
# ... with 29 more rows
我想将coefs $ glm_fit$coefficients
的结果包括在以前的logit模型中,如下所示:
old_logit_model$coefficients <- coefs$`glm_fit$coefficients`
我对r中的类和语法不太熟悉,所以我不知道该怎么做。顺便说一句,我知道存在logit套袋功能,但是由于我在封闭环境中工作,所以它们不能包含在无法导入的软件包中。