收到警告:«'newdata' 有 150 行,但找到的变量有 350 行»在 R 中的 LDA 预测上

Getting Warning: «'newdata' had 150 rows but variables found have 350 rows» on LDA Predict in R

我正在尝试 运行 LDA 模型的 predict 函数。我有两个预测变量 x1x2 以及一个值为 -1 和 1 的分类响应 y。所有参数都包含 500 个数据点。我按如下方式拆分数据集:

xx = data.frame(cbind(x1,x2))
x = cbind(x1,x2)
x_train = x[1:350,]
x_test = x[351:N,]
y_train = y[1:350]
y_test = y[351:N]

一些输出:

          x1        x2  y
1 -1.1843924  1.920765 -1
2  3.3167508  2.321631  1
3 -3.0301378  5.973256 -1
4 -1.3262624 -2.320463 -1
5 -0.6534166 -3.050822 -1
6 -2.0051728 -4.118190 -1

然后我拟合LDA模型并尝试predict函数:

modelo.lda = lda(y_train~xx[1:350,1]+xx[1:350,2])
predict.lda = predict(modelo.lda, newdata=xx[351:N,])

注意: xx 值在this answer 之后以相同的方式表示相同的问题。

但是我得到了:

Warning message: 'newdata' had 150 rows but variables found have 350 rows

我认为保持相同的 xx[init:end,] 表格可以解决 answer of this question 所述的问题,但似乎没有。

会是什么?

提前致谢。

作为建议,如果你有训练集和测试集,最好按这种方式使用它们,这样你就可以避免潜在的陷阱。试试这个:

library(MASS)
#Data
N <- 500
x1 <- rnorm(N,0,1)
x2 <- rnorm(N,1,5)
y <- round(runif(N,0,1),0)
xx = data.frame(x1,x2,y)
x_train = xx[1:350,]
x_test = xx[351:N,]
#Models
modelo.lda = lda(y_train~x1+x2,data = x_train)
predict.lda = predict(modelo.lda, newdata=x_test)

我们不会产生任何警告。