使用lm()和predict()以及交互和as.factor变量指定要预测的R点

使用lm()和predict()以及交互和as.factor变量指定要预测的R点,r,lm,interaction,predict,R,Lm,Interaction,Predict,我想根据使用lm()在R中拟合的回归模型计算一些预测值 要预测的点不包括在用于回归的数据集中-- 虽然我想他们可能是因为NA代表因变量。这在SAS中有效,但我不希望在这种情况下 下面的简单方法最初对我的简单目的很有效 myLm1 = lm(log(p) ~ u + v + w, data=myDat) DatToPred1 = data.frame(u=72, v=20, w=85)

我想根据使用lm()在R中拟合的回归模型计算一些预测值

要预测的点不包括在用于回归的数据集中-- 虽然我想他们可能是因为NA代表因变量。这在SAS中有效,但我不希望在这种情况下

下面的简单方法最初对我的简单目的很有效

myLm1 = lm(log(p) ~ u + v + w, data=myDat)                                          

DatToPred1 = data.frame(u=72, v=20, w=85)                                                     

predict(myLm1, DatToPred1)            
但是现在假设模型规范包含一个交互x*y。台词 下面抛出一个错误

myLm2 = lm(log(p) ~ u + v + w + x*y, data=myDat)

DatToPred2 = data.frame(u=72, v=20, w=85, x=1, y=45)                                                     

predict(myLm2, DatToPred2)

Error in data.frame(u=72, v=20, w=85, x=1, y=45,  : 
  argument is missing, with no default
这似乎很奇怪,因为lm()可以找到x和y来形成x*y,就像 predict()可能也可以这样做

顺便说一句,将x*y包括在如下DatToPred2的定义中也失败了

DatToPred2 = data.frame(u=72, v=20, w=85, x*y=45)
最后,假设该模型已进一步扩展,以包含分类变量z的全套假人

myLm3 = lm(log(p) ~ u + v + w + x*y + as.factor(z), data=myDat)
我不知道如何指定要估计的点的值。 此外,z可以接受大量的n个值,并且列出其假人对应于要预测的特定点的所有值将是乏味的:

   d_z1=0, d_z2=0, ... , d_zi=1, d_z(i+1)=0, ... , d_zn=0
在任何情况下,我都不知道R将如何期望看到这些在data.frame()定义中命名的假人来预测该点

当有大量的点需要预测和预测时,时间就会到来 它们的值将一起存储在数据帧中。但在这一点上,找到一种方法来预测模型中具有交互作用和as.factor的单个点将是一个巨大的进步

有很多在线示例涉及lm()和predict(),但我已经 “发现”往往不涉及此处提出的调整


提前谢谢

您没有提供一个可复制的示例(即,允许其他人复制您的错误的数据和代码),但当我尝试使用内置数据框进行类似操作时,我没有遇到任何问题:

m1 = lm(mpg ~ wt + carb + qsec*hp, data=mtcars)

pred.dat=data.frame(carb=2, hp=120, qsec=10, wt=2.5)

predict(m1, newdata=pred.dat)

1 
21.46763 
要使用分类变量进行预测,只需提供要预测的类别:

m2 = lm(Sepal.Length ~ Petal.Length + Species, data=iris)

pred.dat = data.frame(Petal.Length=1.2, Species="setosa")
predict(m2, newdata=pred.dat)
如果要预测一组变量(包括分类/伪变量)的所有组合,请使用
expand.grid
生成所有组合:

pred.dat = expand.grid(Petal.Length=1:5, Species=unique(iris$Species))
predict(m2, newdata=pred.dat)

我不能重现你的错误。Predict应该可以很好地处理交互项。您应该在此处定义
mydat
,以便我们可以运行与您相同的代码。再见,谢谢你,eipi10。交互变量的问题是语法错误;我的错。在我的数据集中,相当于您的建议Species=“setosa”对问题的as.factor部分起到了作用。再次感谢。