出现此错误是因为因变量 y 在新数据中具有新的水平数,而模型在训练时未考虑到这些水平数。可以使用以下代码来解决此问题:
# 将新数据 y 所有的新水平数合并到旧水平数里
train_y_levels <- levels(train_y)
test_y_levels <- levels(test_y)
new_levels <- setdiff(test_y_levels, train_y_levels)
if (length(new_levels) > 0) {
train_y <- factor(train_y, levels = c(train_y_levels, new_levels))
}
# 运行 AMMI 模型
library(AMMI)
model <- ammi(train_data, y = train_y, gen = train_gen,
k = k, $facpar, $plot)
此代码会将新数据 y 中所有的新水平数合并到旧水平数里,然后再运行 AMMI 模型。