这个问题对于所需的具体模型模棱两可,但这是一种可能的模型,我们在每个自变量中独立地取二次方。
fo <- reformulate(sprintf("poly(%s, 2)", names(airquality)[-1]), "Ozone")
fo
## Ozone ~ poly(Solar.R, 2) + poly(Wind, 2) + poly(Temp, 2) + poly(Month,
## 2) + poly(Day, 2)
lm(fo, na.omit(airquality))
给予:
Call:
lm(formula = fo, data = na.omit(airquality))
Coefficients:
(Intercept) poly(Solar.R, 2)1 poly(Solar.R, 2)2 poly(Wind, 2)1
42.10 64.80 -24.13 -124.10
poly(Wind, 2)2 poly(Temp, 2)1 poly(Temp, 2)2 poly(Month, 2)1
89.41 128.16 55.40 -18.45
poly(Month, 2)2 poly(Day, 2)1 poly(Day, 2)2
-32.10 27.20 11.87
如果希望看到在输出的 Call: 行上写出的公式,也可以这样写。
do.call("lm", list(fo, quote(na.omit(airquality))))
给予:
Call:
lm(formula = Ozone ~ poly(Solar.R, 2) + poly(Wind, 2) + poly(Temp,
2) + poly(Month, 2) + poly(Day, 2), data = na.omit(airquality))
Coefficients:
(Intercept) poly(Solar.R, 2)1 poly(Solar.R, 2)2 poly(Wind, 2)1
42.10 64.80 -24.13 -124.10
poly(Wind, 2)2 poly(Temp, 2)1 poly(Temp, 2)2 poly(Month, 2)1
89.41 128.16 55.40 -18.45
poly(Month, 2)2 poly(Day, 2)1 poly(Day, 2)2
-32.10 27.20 11.87