我曾经看到一个线性模型拟合如下:
lm(formula = Ozone ~ Solar.R + Wind + Temp + I(Wind^2) + I(Temp^2) +
I(Wind * Temp) + I(Wind * Temp^2) + I(Temp * Wind^2) + I(Temp^2 *
Wind^2), data = airquality)
我不确定I( )
在这里是什么意思?或者,例如,I(Wind * Temp^2)
在这里做什么。我可以把它写成Wind:Temp^2
吗?
答案 0 :(得分:6)
R中公式语法中的I()
符号表示'按',即I(a+b)
仅表示将变量a + b添加为lm模型中的预测变量。在您的情况下,I(Wind * Temp^2)
表示将Wind和Temp平方的乘积作为预测变量。使用I()
函数,以便不会与公式语法的运算符混淆。
有关详细信息,请参阅第2页here详细说明。
希望这很清楚!
<强>更新强> 我只是想加上Hong Ooi对此的非常好的评论:
I(Wind * Temp^2)
与 Wind:Temp ^ 2
公式语法中的^n
运算符意味着'包含这些变量以及所有直到'n'的交互。例如,Y ~ (X + Z + W)^2
相当于Y ~ X + Z + W + X:Z + X:W + Z:W
因此,在我们的案例中,Wind:Temp^2
仅表示Wind:Temp
小插图:
Y <- runif(100)
X1 <- runif(100)
X2 <- runif(100)
df <- data.frame(Y,X1,X2)
> b <- lm( Y ~ X1:X2^2,data=df)
> summary(b)
Call:
lm(formula = Y ~ X1:X2^2, data = df)
Residuals:
Min 1Q Median 3Q Max
-0.4802 -0.2490 -0.0173 0.2345 0.5066
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.45126 0.04794 9.413 2.28e-15 ***
X1:X2 0.08991 0.13414 0.670 0.504
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.2965 on 98 degrees of freedom
Multiple R-squared: 0.004563, Adjusted R-squared: -0.005594
F-statistic: 0.4493 on 1 and 98 DF, p-value: 0.5043