在R中使用predict()函数时出错(“使用不同类型的变量”)

时间:2017-01-03 15:52:13

标签: r predict

我使用R中的lm()和step()函数拟合了多元多项式。我的数据具有因变量Y和一些自变量X1直到Xn。我将公式格式化为如下:Y~I(X1 ^ 1)+ I(X1 ^ 2)+ I(X2 ^ 1)+ ...等当我在原始数据上使用predict()函数时即使在未用于拟合的验证点上也能工作。但是,我必须对我生成的一些模拟数据使用predict()函数。我确保模拟数据在data.frame中,所有元素都是double类型的原始数据。我将列名从原始数据(X1,...,Xn)复制到模拟数据。现在,当我使用predict()函数时,我收到以下错误:

  

错误:变量'I(X1 ^ 1)','I(X1 ^ 2)','I(X2 ^ 1)'用不同的类型指定

我真的不明白。列名相同,类型相同,原始数据和模拟数据都在data.frame中。这里发生了什么?

提前致谢!!

1 个答案:

答案 0 :(得分:0)

很抱歉没有提供可重复的示例。但我找到了解决方案。它不是很优雅,但在这里。当我将data.frame与原始数据强制转换为矩阵然后再直接返回数据帧时,一些属性和其他内容将被切断原始数据。如果我现在将此data.frame用于拟合过程,则predict()函数也可用于模拟数据。模拟数据首先采用矩阵格式,并转换为data.frame。如果没有更优雅的方法来摆脱原始数据的data.frame中的attr,维度和其他内容,我仍然不清楚。我已经尝试过unname()但是没有做到这一点。