我有一个数据框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)在列命名的数据帧中给出。显然,我错了。
如何解决此问题?
感谢。
答案 0 :(得分:2)
newdf
应该是具有列名nUs_ab
的data.frame,否则R将无法知道要操作哪个列(即,生成预测设计矩阵)。所以下面的代码应该可以工作
newdf = data.frame(nUs_ab = 56)
prediction = predict(models[[1]], newdata = newdf)