如何使用从存储在R列表中的模型进行预测?

时间:2017-09-01 19:10:27

标签: r dataframe predict

我有一个数据框dfab,其中包含2个列,我用它们作为参数来生成一系列线性模型,如下所示:

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个点。我不认为这是必要的。

每次运行该代码时,都会出现以下错误:

  

错误:变量'poly(nUs_ab,i)符合“nmatrix.1”类型,但提供了“numeric”类型。   另外:警告信息:   在Z / rep(sqrt(norm2 [-1L])中,每个= length(x)):     较长的物体长度不是较短物体长度的倍数

我认为我需要使用的预测是一个LM模型,预测器(数字56)在列命名的数据帧中给出。显然,我错了。

如何解决此问题?

感谢。

1 个答案:

答案 0 :(得分:2)

newdf应该是具有列名nUs_ab的data.frame,否则R将无法知道要操作哪个列(即,生成预测设计矩阵)。所以下面的代码应该可以工作

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