我已经建立了从我随机森林的预测偏依赖情节。我想,以提取用于构建情节和在ggplot重建它的数据(特别是置信区间和预测值)。如何访问用于制作的情节和置信区间的数据?
下面有类似一些代码与一个包提供的数据集挖掘。
library(randomForest)
library(rfUtilities)
data(airquality)
airquality <- na.omit(airquality)
rf.ozone <- randomForest(y=airquality[,"Ozone"],
airquality[,2:ncol(airquality)])
rf.partial.ci(m=rf.ozone, x=airquality, yname="Ozone", xname="Temp", lci =
.025, uci=.975)
partial_P_data =rf.partial.ci(m=rf.ozone, x=airquality, yname="Ozone",
xname="Temp", lci = .025, uci=.975) # original attempt to locate data
这是我在看包的源代码后,找到了解决办法。它是用来制造阴谋的功能的修改。
rf.data.ci <- function(m, x, yname, xname, lci=0.25, uci=0.75, delta=FALSE) {
if(!any(class(m) %in% c("randomForest","list"))) stop("m is not a
randomForest object")
if(m$type != "regression") stop("classification is not supported")
conf.int <-(uci-lci)*100
temp <- sort(x[, xname])
y.hat.mean <- vector()
y.hat.lb <- vector()
y.hat.ub <- vector()
y <- stats::predict(m, x)
for (i in 1:length(temp)){
x[, xname] <- temp[i]
y.hat <- stats::predict(m, x)
if (delta == TRUE){ y.hat <- y.hat - y }
y.hat.mean[i] <- stats::weighted.mean(y.hat)
y.hat.lb[i] <- stats::quantile(y.hat, lci)
y.hat.ub[i] <- stats::quantile(y.hat, uci)
}
m.ci <- as.data.frame(cbind(temp, y.hat.mean, y.hat.lb, y.hat.ub))
}# creates data_set CI and predictions for partial dependcy plots, based on
rfutilities
有可能在这个功能还是留下了一些不必要的垃圾,但它会重现用于制作图中的数据。