我有一个线性模型,其中一个自变量是一个因子,我试图对包含新因子水平(在模型估计的数据集中不存在的因子水平)的数据集进行预测。我希望能够通过手动指定将应用于该因子的系数来对具有新因子水平的观察结果进行预测。例如,假设我为三种类型的商店估计每日销售额,并将第四种商店引入数据集。我没有它的历史数据,但我可能会假设它的行为类似于其他商店的加权组合,这些商店我有模型系数。
如果我尝试将
如果我尝试将
predict.lm()
应用于新数据,我将收到一个错误,告诉我该因子具有新级别(这是有道理的)。df <- data.frame(y=rnorm(100), x1=factor(rep(1:4,25)))
lm1 <- lm(y ~ x1, data=df)
newdata <- data.frame(y=rnorm(100), x1=factor(rep(1:5,20)))
predict(lm1, newdata)
Error in model.frame.default(Terms, newdata, na.action = na.action, xlev = object$xlevels) :
factor x2 has new levels 5
我可以通过简单地将系数乘以数据框中的各列来手动进行预测。 然而,由于我使用的实际模型具有许多变量和交互项,我希望能够通过更改模型公式轻松地循环遍历各种模型规格,这样做非常繁琐。 是否有一种方法可以将新系数添加到模型对象中,然后使用它进行预测? 如果没有,是否有比手动设置整个预测步骤更不繁琐的其他方法?