2017-09-01 37 views
0

我有一个包含2列,我用作为参数以产生一系列线性模型的如下一个数据帧dfab如何使用R中列表中存储的模型进行预测?

models = list() 
for (i in 1:10){ 
    models[[i]] = lm(fc_ab10 ~ (poly(nUs_ab, i)), data = dfab) 
} 

dfab有32个观察结果,我想预测fc_ab10只有1值。

我想这样做的:

newdf = data.frame(newdf = nUs_ab) 
newdf[] = 0 
newdf[1,1] = 56 
prediction = predict(models[[1]], newdata = newdf) 

首先,我试着写newdf作为一个数据帧只有一个位置,但由于在该模型建立的数据集是32,我想我不得不至少提供32分。尽管如此,我不认为这是必要的。

我每次运行这段代码,我给出以下错误:

Error: variable 'poly(nUs_ab, i) was fitted with type “nmatrix.1” but type “numeric” was supplied. In addition: Warning message: In Z/rep(sqrt(norm2[-1L]), each = length(x)) : longer object length is not a multiple of shorter object length

我想我需要使用预测是在栏柱赋予了LM模型,预测(数量56)命名数据框。很明显,我错了。

我该如何解决这个问题?

谢谢。

+2

这将是更容易帮助你,如果你提供的[重复的例子(https://stackoverflow.com/questions/5963269/how-to-make-a-great- r-reproducible-example)与样本输入数据,因此我们可以运行并验证问题并测试可能的解决方案。 – MrFlick

回答

2

newdf应与列名nUs_ab一个data.frame,否则R将不能够知道在(即,产生预测设计矩阵)来操作的列。所以下面的代码应该工作

newdf = data.frame(nUs_ab = 56) 
prediction = predict(models[[1]], newdata = newdf) 
+0

谢谢,playtpus。我一直面临与你提出的解决方案相同的错误。我会仔细研究一下,如果我能达成解决方案,我会选择接受的答案。 –

相关问题