我已经使用glmnet R中训练有素的弹性网模型,并想用它来作出预测掀起了新的数据集。
但是我在生产中的预测()方法的参数使用,因为在新的数据只设置我的一些因素的变量(表示合并症的存在虚拟变量)一个级别(从未被观察到的合并症矩阵麻烦),这意味着我不能使用
model.matrix(RESPONSE〜。,NEW_DATA)
因为它给我的(预期)
误差在
contrasts<-
*tmp*
,值= contr.funs [1 + ISOF [NN]]):对比度可以仅用于有2级或更多的水平的因素
我在为如何解决这个问题的损失。 是否有R A方式,我可以构建一个合适的基质在使用预测()在这种情况下,还是需要准备的R外基质? 在任何情况下,我怎么可能去这样做呢?
这里是再现我有问题的玩具例子:
x1 <- rnorm(100)
x2 <- as.factor(rbinom(100, 1, 0.6))
x3 <- as.factor(rbinom(100, 1, 0.4))
y <- rbinom(100, 1, 0.2)
toy_data <- data.frame(x1, x2, x3, y)
colnames(toy_data) = c("Continuous", "FactorA", "FactorB", "Outcome")
mat1 <- model.matrix(Outcome ~ ., toy_data)[,-1]
y1 <- toy_data$Outcome
new_data <- toy_data
new_data$FactorB <- as.factor(0)
#summary(new_data) # Just to verify that FactorB now only contains one level
mat2 <- model.matrix(Outcome ~ ., new_data)[,-1]