在R中:如何在线性模型中插入自变量的值?

时间:2012-12-04 04:14:23

标签: r parameter-passing linear-regression

我正在使用具有3个变量和交互的线性模型。而不是手动输入公式并输入每个变量的值,比如X Y和Z,我怎么能告诉R给出给定X Y和Z的预测值?

即。 如果

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

'[output with beta coefficients]'

如何将G P和Z的值传递给线性模型而无需手动输入每个项的单个β系数?

2 个答案:

答案 0 :(得分: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参数以及我如何传递要预测的新值。

答案 1 :(得分: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) )