我想用grf包估计一个regression_forest,并出于数据保护的原因删除存储在regression_forest输出中的原始数据。
问题是,当我删除数据时,R不再将对象识别为regression_forest,因此抛出错误。
有人知道如何解决这个问题吗?
下面是一个可复制的例子:
library(grf)
# Train a standard regression forest.
n <- 50
p <- 10
X <- matrix(rnorm(n * p), n, p)
Y <- X[, 1] * rnorm(n)
r.forest <- regression_forest(X, Y)
# Remove the original data
r.forest <- r.forest[-c(18,19)]
# Predict using the forest.
X.test <- matrix(0, 101, p)
X.test[, 1] <- seq(-2, 2, length.out = 101)
r.pred <- predict(r.forest, X.test)
最后一行以下错误原因:
UseMethod("predict")错误:'predict'没有适用的方法应用于类"list">
的对象
predict
函数似乎需要知道原始数据的维度,但据我所知,它不需要数据本身。
如果将存储在模型对象中的原始数据转换为NA,则预测似乎不受影响。
# Get original predictions
r.pred.original <- predict(r.forest, X.test)
# Convert stored data to NA
r.forest$X.orig[!is.na(r.forest$X.orig)] <- NA
# Get new predictions
r.pred.new <- predict(r.forest, X.test)
# r.pred.original and r.pred.new are the same