>我有一个简单的线性模型:
mylm = lm(formula = prodRate~affinity, mydf)
其中 mydf 是一个数据帧,如下所示:
prodRate affinity
1 2643.5744 0.005164040
2 2347.6923 0.004439970
3 1783.6819 0.003322830
当我使用 predict.lm(( 时出现错误:
my_pred= predict(mylm,newdata=data.frame(affinity=seq(0,1,0.1)) )
错误:变量"亲和力"拟合了类型"nmatrix.1",但提供了类型"数字"。
这是为什么呢?如何解决?谢谢!
由于与user20650的讨论(见上文(,该错误被识别出来:
mylm = lm(formula = prodRate~affinity, mydf)
中的 mydf 是通过向现有数据帧 mydf 添加类似矩阵的列来创建的,如下所示:
mydf$affinity = matrix(somenumber)
即mydf中的"亲和力"列由矩阵组成,其结构保持为矩阵。这个矩阵结构与predict(mylm,newdata=...)
中newdata=data.frame(affinity=seq(0,1,0.1))
的"亲和力"列不一致,后者是一个数值向量。
解决方案1:按如下方式修复MyDF mydf <- data.frame(prodRate , affinity)
.即确保mydf的亲和力柱具有类似向量的结构
解决方案 2:保留原始 mydf,但强制 mydf$affinity 作为矢量: mylm <- lm(formula = prodRate ~ as.vector(affinity), mydf)
使线性模型"mylm"中的自变量"亲和力"具有类向量结构而不是矩阵状结构,这将与predict(mylm,newdata=...)
中的newdata=data.frame(affinity=seq(0,1,0.1))
一致,后者是一个数值向量。