【问题标题】:regarding the I( ) term in linear regression modeling in R using lm关于使用 lm 在 R 中的线性回归建模中的 I(·) 项
【发布时间】:2015-01-14 22:21:22
【问题描述】:

我曾经看到一个线性模型拟合写成这样:

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

【问题讨论】:

  • 我的理解是“先做这个计算”。
  • Wind^2 表示二阶交互,而I(Wind^2) 表示 Wind 的平方。
  • 我必须把 I() 放在 Wind^2 之前吗?
  • FWIW 可能值得研究 poly() 函数:poly(Wind,Temp,degree=3) 构造一个 3d 阶多项式,包括 3 阶以下的所有项(WindTempWind^2、@ 987654332@, Wind*Temp, Wind^3, Wind*Temp^2, Wind^2*Temp, Temp^3)

标签: r statistics regression lm


【解决方案1】:

R 中公式语法中的I() 表示法表示'as is',即I(a+b) 仅表示在 lm 模型中添加变量 a+b 作为预测变量。在您的情况下,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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-03
    • 2015-06-21
    • 2018-04-28
    • 1970-01-01
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    相关资源
    最近更新 更多