我正在使用具有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的值传递给线性模型而无需手动输入每个项的单个β系数?
答案 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) )