1

我正在使用具有 3 个变量和交互作用的线性模型。与其手动输入公式并输入每个变量的值,比如 XY 和 Z,我如何告诉 R 给我给定 XY 和 Z 的预测值?

即如果

model=lm(VP~G+P+Z+G:Z+P:Z+G:P+P:G:Z,data=xyz)

'[output with beta coefficients]'

如何在不手动输入每个术语的单独 beta 系数的情况下将 GP 和 Z 的值传递给线性模型?

4

2 回答 2

1

使用predict(). 阅读帮助页面上的所有详细信息,可以通过?predict. 这是一个使用示例的示例?lm

ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
group <- gl(2,10,20, labels=c("Ctl","Trt"))
weight <- c(ctl, trt)
lm.D9 <- lm(weight ~ group)

并预测:

> predict(lm.D9, newdata=data.frame(group = c("Ctl", "Trt")))
    1     2 
5.032 4.661 

请注意newdata参数的使用以及我如何传递要预测的新值。

于 2012-12-04T04:18:41.587 回答
1

如果您想从具有所有二(和三)向交互的模型中进行预测,您的模型可以简化为

 model=lm(VP ~ (G+P+Z)^3, data=xyz)   # see ?formula

当您从“模型”对象进行预测时,您需要提供一个数据框,其中包含名为 G、P 和 Z 的值

pred123 <- predict(model, newdata=data.frame(G=1, P=2, Z=3) )

如果您想为单个值的特定选择构建所有可能的值组合,expand.grid 函数将非常有用:

 pred.all <- predict(modlel, newdat=expand.grid(G;1:3, P=2:5, Z=6:8) )
于 2012-12-04T05:30:41.117 回答