[英]bagging logistic regression in r
R_blogger提供以下代码,其中我的添加内容被删除,因为它们不起作用; 我正在寻找一种方法来保存迭代Logistic回归中的系数向量和p值,这样我就可以修剪始终得分不高的变量。
predictions <- foreach(m=1:iterations,.combine=cbind) %do% {
training_positions <- sample(nrow(training2), size=floor((nrow(training2)/length_divisor)))
train_pos<-1:nrow(training2) %in% training_positions
glm_fit <- glm(default~. ,data=training2[train_pos,],family=binomial(logit),
type=response, control = list(maxit = 25))
predict(glm_fit,newdata=testing)
#pvalues <- summary(glm_fit)$coeff[-1,4] < 0.0001
#coeffs <- summary(glm_fit)$coeff[-1,3]
}
probs <- rowMeans(predictions)
我希望能够检索类似于预测的系数和p值的对象
注意:此回复已根据评论中的交流进行了重新处理。
因此,这里发生了几件事。
training
应该与代码中的training2
相同。 此数据集中的第一列是一个ID,您的代码会将其作为参数包含在内。 那是你想要的吗? nrow(training2)
之间的整数样本,并从中生成一个带有length=nrow(training2)
的逻辑向量。 您不需要这样做:只需使用整数向量来索引training2。 它的速度要快得多,尤其是对于如此大的数据集。 glm(...)
似乎需要对均值进行初始估计。 我没有花时间在上面,而是仅将模型限制为前9个参数(列2:10)。 glm(..)
的调用中使用type=predict
会影响权重的使用方式。 您没有使用权重,因此此参数不执行任何操作。 predict(...)
您确实需要指定type="predict"
。 maxit = 25
通常意味着拟合不收敛,因此您需要对此进行试验。 p<0.0001
,因此出于示例的考虑,我将临界值更改为0.1。 return(list(...))
, .combine=cbind
更改为.combine=rbind
将返回一个列表对象数组,其中每一行对应一个迭代,并且列1具有该迭代的预测向量,第2列具有该迭代的p值向量,第3列具有该迭代的系数向量。 这是代码:
library(foreach)
set.seed(1)
training2 <- training
length_divisor <- 1000
iterations <- 5
predictions <- foreach(m=1:iterations,.combine=rbind) %do% {
training_positions <- sample(nrow(training2),
size=floor((nrow(training2)/length_divisor)))
# train_pos<-1:nrow(training2) %in% training_positions
glm_fit <- glm(default~ . ,
data=training2[training_positions,c(2:10,ncol(training2))],
family=binomial(logit),
control = list(maxit = 25))
pr <- predict(glm_fit,
newdata=training2[sample(1:nrow(training2),10),],
type="response")
s <- summary(glm_fit)
p <- s$coeff[,4]
c <- s$coeff[,1]
pvalues <- p[p<0.1]
coeffs <- c[p<0.1]
return(list(pr,pvalues,coeffs))
}
predictions
# [,1] [,2] [,3]
# result.1 Numeric,10 Numeric,0 Numeric,0
# result.2 Numeric,10 Numeric,0 Numeric,0
# result.3 Numeric,10 Numeric,2 Numeric,2
# result.4 Numeric,10 Numeric,0 Numeric,0
# result.5 Numeric,10 Numeric,0 Numeric,0
因此,在这种布置中, predictions[,1]
是所有的预测矢量的列表, prediction[,2]
是所有p值的列表<0.1对于每次迭代,和prediction[,3]
是所有的列表每次迭代的p值<0.1的系数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.