function (random.forest, rf.data, pred.data = rf.data, CI = FALSE,
tree.type = "rf", prog.bar = FALSE)
{
if (is.null(random.forest$inbag)) {
stop("Random forest must be trained with keep.inbag = TRUE")
}
if (length(unique(colSums(random.forest$inbag))) > 1) {
stop("The keep.inbag field must store the number of times each observation was used\n \nMake sure the latest version of the randomForest package is installed from CRAN")
}
N.weights <- random.forest$inbag
B <- ncol(N.weights)
n <- nrow(N.weights)
s <- sum(N.weights[, 1])
N <- Matrix::Matrix(N.weights, sparse = TRUE)
N.avg <- Matrix::Matrix(Matrix::rowMeans(N), nrow(N), 1)
if (tree.type == "rf")
pred <- predict(random.forest, newdata = pred.data, predict.all = TRUE)$individual
if (tree.type == "ci")
pred <- CB_cforest(rf = random.forest, pb = prog.bar,
rf.d = rf.data, p.d = pred.data)$preds
agg.preds <- rowMeans(pred)
pred.centered <- pred - agg.preds
pred.centered.sums <- Matrix::Matrix(rowSums(pred.centered),
1, nrow(pred.centered))
C = N %*% t(pred.centered) - N.avg %*% pred.centered.sums
raw.IJ <- Matrix::colSums(C^2)/B^2
N.var <- mean(Matrix::rowMeans(N^2) - Matrix::rowMeans(N)^2)
boot.var <- rowSums(pred.centered^2)/B
bias.correction <- n * N.var * boot.var/B
pred.ij.var <- raw.IJ - bias.correction
out <- data.frame(pred = agg.preds, pred.ij.var)
if (CI) {
out <- data.frame(out, l.ci = out$pred - (out$pred.ij.var *
qnorm(0.975, lower.tail = T)), u.ci = out$pred +
(out$pred.ij.var * qnorm(0.975, lower.tail = T)))
}
return(out)
}
<bytecode: 0x000001e458e749a8>
<environment: namespace:RFinfer>
以上代码是R中用来计算随机森林模型预测值的置信区间的函数,我想要一个按照这种计算方式计算gbm模型的函数,有没有专家帮助改一个的,谢谢了