预测新数据警告
Predict Warning on newdata
我已经查看了以下类似的问题和答案,但相信我的情况不同,足以保证另一个问题。
Getting Warning: " 'newdata' had 1 row but variables found have 32 rows" on predict.lm in R
warning when calculating predicted values
Trouble using predict with linear model in R
Predict.lm in R fails to recognize newdata
列出的最后一个问题有 Joran 的一个很好的回答,它触及了建模内容和评分内容之间命名约定的核心。
我拟合的模型是一个多项式,会产生一些命名问题。
mdl <- lm(val ~ poly(grp,2), data = mRetCurv)
model.frame(mdl)
生成以下输出:
val poly(grp, 2).1 poly(grp, 2).2
1 39.54227 -0.290170670 0.374017601
2 48.68225 -0.272368788 0.308602552
记下我的预测变量的名称。如果我打电话
predict.lm(mdl, newdata = apl$grp)
就 predict.lm 而言,我收到标准警告作为变量 grp != poly(grp, 2).1 或 poly(grp, 2).2。我尝试制作一个重复的 grp 列并将两者重命名以匹配 model.frame 但 R 不喜欢 "poly(grp, 2).1" 作为列名。当我将列应用于多行时,这也不是一个复制列的数据高效解决方案。
感谢任何帮助。
谢谢
apl$grp
是一个向量,但是predict
要求newdata
参数是一个数据框。*这个数据框必须包含与用于拟合模型的预测变量同名的列(尽管它也可以包含其他列)。所以,下面的代码应该可以工作:
predict(mdl, newdata = apl)
您可以使用 predict
而不是 predict.lm
。 mdl
是 class lm
的对象,它导致 predict
到 "dispatch" 自动 predict.lm
方法。
* 严格来说,由于这是一个 lm
模型,因此调度的 predict
"method" 是 predict.lm
并且该方法需要 newdata
是一个数据框。 predict.glm
还需要一个数据框。但是,有些 predict
方法可以采用其他类型的参数。例如:
randomForest
包有一个用于 randomForest
模型的预测方法,可以将数据框或矩阵作为 newdata
参数。
glmnet
包有一个 predict
方法用于需要矩阵的 glmnet
模型,尽管参数被称为 newx
而不是 newdata
那种情况。
我已经查看了以下类似的问题和答案,但相信我的情况不同,足以保证另一个问题。
Getting Warning: " 'newdata' had 1 row but variables found have 32 rows" on predict.lm in R
warning when calculating predicted values
Trouble using predict with linear model in R
Predict.lm in R fails to recognize newdata
列出的最后一个问题有 Joran 的一个很好的回答,它触及了建模内容和评分内容之间命名约定的核心。
我拟合的模型是一个多项式,会产生一些命名问题。
mdl <- lm(val ~ poly(grp,2), data = mRetCurv)
model.frame(mdl)
生成以下输出:
val poly(grp, 2).1 poly(grp, 2).2
1 39.54227 -0.290170670 0.374017601
2 48.68225 -0.272368788 0.308602552
记下我的预测变量的名称。如果我打电话
predict.lm(mdl, newdata = apl$grp)
就 predict.lm 而言,我收到标准警告作为变量 grp != poly(grp, 2).1 或 poly(grp, 2).2。我尝试制作一个重复的 grp 列并将两者重命名以匹配 model.frame 但 R 不喜欢 "poly(grp, 2).1" 作为列名。当我将列应用于多行时,这也不是一个复制列的数据高效解决方案。
感谢任何帮助。
谢谢
apl$grp
是一个向量,但是predict
要求newdata
参数是一个数据框。*这个数据框必须包含与用于拟合模型的预测变量同名的列(尽管它也可以包含其他列)。所以,下面的代码应该可以工作:
predict(mdl, newdata = apl)
您可以使用 predict
而不是 predict.lm
。 mdl
是 class lm
的对象,它导致 predict
到 "dispatch" 自动 predict.lm
方法。
* 严格来说,由于这是一个 lm
模型,因此调度的 predict
"method" 是 predict.lm
并且该方法需要 newdata
是一个数据框。 predict.glm
还需要一个数据框。但是,有些 predict
方法可以采用其他类型的参数。例如:
randomForest
包有一个用于randomForest
模型的预测方法,可以将数据框或矩阵作为newdata
参数。glmnet
包有一个predict
方法用于需要矩阵的glmnet
模型,尽管参数被称为newx
而不是newdata
那种情况。