在预测选择一组二元互斥结果的概率的模型上使用 predict 时,出现以下错误。使用 nnet 包的 multinom 函数。
predict.multinom(model_name, df.predict, "probs") 中的错误:下标分配中不允许使用 NA 另外:警告消息:'newdata' 有 5 行,但找到的变量有 100 行
这是一个可重现的示例:
require(nnet)
response1 <- sample(runif(100))
response2 <- 1-response1
responses <- as.matrix(data.frame(response1 = response1, response2 = response2))
train <- data.matrix(data.frame(var1 = runif(100), var2 = runif(100)))
multinom.mod <- multinom(responses ~ train)
test.df <- data.frame(var1 = runif(5), var2 = runif(5))
predict.vec <- predict(multinom.mod, test.df)
如您所见,问题在于我的响应包含 2 个变量。看起来,当我预测的行数少于训练集中的行数时,该函数试图将训练集中的响应变量与测试集连接起来。
更新:
以下适用于新的预测集。但是,响应变量被视为分类变量,因此预测不正确:
require(nnet)
train <- data.frame(response1 = sample(runif(100)), response2 = 1-response1, var1 = runif(100), var2 = runif(100))
multinom.mod <- multinom(response1 + response2 ~ ., train, type = "probs")
test.df <- data.frame(var1 = runif(5), var2 = runif(5))
predict.vec <- predict(multinom.mod, test.df)