我曾经看到线性模型拟合写成如下:

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吗?

最佳答案

R中的公式语法中的I()表示'as is',即I(a+b)仅表示在lm模型中添加变量a + b作为预测变量。在您的情况下,I(Wind * Temp^2)表示将风和温度平方的乘积作为预测变量。使用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

关于r - 关于使用lm在R中进行线性回归建模的I()项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26982289/

10-12 23:06