关于使用lm的R中的线性回归建模中的I()项

use*_*609 1 statistics regression r lm

我曾经看到一个线性模型拟合如下:

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)
Run Code Online (Sandbox Code Playgroud)

我不确定I( )这里的意思是什么?或者,例如,I(Wind * Temp^2)这里有什么.我可以把它写成Wind:Temp^2

Lyz*_*deR 6

I()R中的公式语法中的符号表示"原样",I(a+b)仅意味着将变量a + b添加为lm模型中的预测变量.在你的情况下,I(Wind * Temp^2)意味着包括Wind和Temp平方的乘积作为预测变量.使用该I()函数,以便不会与公式语法的运算符混淆.

欲了解更多信息2页这里解释了它的全部细节.

希望这很清楚!

更新 我只想添加Hong Ooi对此的非常好的评论:

I(Wind * Temp^2) Wind:Temp ^ 2不同

^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
Run Code Online (Sandbox Code Playgroud)