请考虑这个随机森林回归估计的最小可重复性示例
library(randomForest)
# fix missing data
airquality <- na.roughfix(airquality)
set.seed(123)
#fit the random forest model
rf_fit <- randomForest(formula = Ozone ~ ., data = airquality)
#define new observation
new <- data.frame(Solar.R=250, Wind=8, Temp=70, Month=5, Day=5)
set.seed(123)
#use predict all on new observation
rf_predict<-predict(rf_fit, newdata=new, predict.all = TRUE)
rf_predict$aggregate
library(tidyverse)
predict_mean <- rf_predict$individual %>%
as_tibble() %>%
rowwise() %>%
transmute(avg = mean(V1:V500))
predict_mean
我希望rf_predict$aggregate
和predict_mean
得到相同的值
关于这个假设,我错在哪里,为什么错了?
我的最终目标是得到预测值的置信区间。
1条答案
按热度按时间zrfyljdw1#
我认为您的代码需要包含一个
c_across()
调用,以便正确执行计算:?c_across
文档告诉我们:c_across()被设计为与rowwise()一起使用,以便于执行按行聚合。
An answer to a previous question,指出
mean()
不能处理data.frame。在您的代码中,提供给mean()
的数据是**一个rowwise_df类的行 Dataframe 。c_across
允许行中的数据作为向量呈现给mean()
(我认为)。