我有一个简单的线性模型:
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)) )错误:变量'affinity‘与类型"nmatrix.1“一起安装,但提供了类型"numeric”。
为什么会这样呢?如何修复它?谢谢!
发布于 2014-03-12 22:55:44
多亏了与user20650的讨论(见上),这个bug被识别出来了:
mylm = lm(formula = prodRate~affinity, mydf)中的mydf是通过在现有的dataframe mydf中添加一个类似矩阵的列来创建的,如下所示:
mydf$affinity = matrix(somenumber)
即mydf中的“亲和力”列由矩阵构成,并且其结构保持为矩阵。此矩阵结构与predict(mylm,newdata=...)的newdata=data.frame(affinity=seq(0,1,0.1))中的“亲和力”列不一致,该列是一个数值向量。
solution1:将mydf修复为以下mydf <- data.frame(prodRate , affinity)。即,确保mydf的亲和力列具有类似向量的结构
solution2:保留原始的mydf,但强制将mydf$ newdata=data.frame(affinity=seq(0,1,0.1))作为形式:mylm中的向量,以便线性模型"mylm“中的自变量”solution2“具有类似向量的结构,而不是类似矩阵的结构,这将与predict(mylm,newdata=...)中的向量一致,后者是一个数值向量。
https://stackoverflow.com/questions/22337495
复制相似问题