当模型包含因子或多项式时,使用predict.lm为模型项生成拟合值

当模型包含因子或多项式时,使用predict.lm为模型项生成拟合值,r,R,我想使用predict.lm为模型中的预测值生成拟合值。换句话说,我想将lm对象中的系数估计值乘以具有n行的新数据帧中的值。结果是一个有n行的矩阵,其中每个值都乘以相应的系数 当新数据框中的lm对象中的每个系数估计值都有一列时,这很容易做到。例如: y <- rnorm(6) x1 <- rnorm(6) x2 <- rnorm(6) modEasy <- lm(y ~ x1 + x2) dfEasy <- data.frame

我想使用
predict.lm
为模型中的预测值生成拟合值。换句话说,我想将
lm
对象中的系数估计值乘以具有n行的新数据帧中的值。结果是一个有n行的矩阵,其中每个值都乘以相应的系数

当新数据框中的
lm
对象中的每个系数估计值都有一列时,这很容易做到。例如:

y       <- rnorm(6) 
x1      <- rnorm(6)
x2      <- rnorm(6) 
modEasy <- lm(y ~ x1 + x2)
dfEasy  <- data.frame(x1 = rnorm(6), x2 = rnorm(6))
predict(modEasy, newdata = dfEasy, type = "terms")
y       <- rnorm(6) 
x1      <- rnorm(6)
x2      <- factor(rep(letters[1:3], 2))
modHard <- lm(y ~ x1 + x2)
dfHard  <- data.frame(x1 = rnorm(6), x2 = factor(rep(letters[1:3], each=2)))
predict(modHard, newdata = dfHard, type = "terms")
但是有没有更简单的方法?

应该是这样的:predict(modHard,data=dfHard,type=“terms”)?@Stat——是的,谢谢。我修改了例子。
mf <- model.frame(formula(modHard), dfHard)
mm <- model.matrix(formula(modHard), mf)
t(modHard$coefficients * t(mm))