^R lm()中的符号
在R中运行回归:^R lm()中的符号,r,lm,R,Lm,在R中运行回归: fit = lm(y ~ x + log(x) + z + log(z) + (z-1)^2, data=data) 我得到了高得离谱的R^2值。我用一个变量替换了(z-1)^2,我称之为q,它被定义为(z-1)^2,我得到了一个更低的R^2值 现在我很清楚,^在lm()中不作为指数,但它做什么呢?我看了看这里,但我没有真正理解。术语(z-1)^2与交互作用(z-1)*(z-1)相同,而不是(z-1)的平方幂。 如果您希望公式按字面意思理解,则应使用I()。 您可以查看?I和
fit = lm(y ~ x + log(x) + z + log(z) + (z-1)^2, data=data)
我得到了高得离谱的R^2值。我用一个变量替换了(z-1)^2,我称之为q,它被定义为(z-1)^2,我得到了一个更低的R^2值
现在我很清楚,^在lm()中不作为指数,但它做什么呢?我看了看这里,但我没有真正理解。术语(z-1)^2
与交互作用(z-1)*(z-1)
相同,而不是(z-1)的平方幂。
如果您希望公式按字面意思理解,则应使用I()
。
您可以查看
?I
和?公式
以供进一步参考,建立在上一个答案的基础上,没有I()
运算符,lm()
不允许数学运算符进行数学运算。因此,如果没有I()
,“-1
”对lm()
的影响与使用“+0
”类似,即不使用“(截取)
”术语。因此,R平方
值更高(),因为R平方
计算中的分母变为(yi^2)
,而不是(yi-y\u bar)^2
。下面的代码显示了如何lm()
compute的异同
# Create sample dataframe
x <- 10 + rnorm(100)
y <- 11 + rnorm(100)
z <- 12 + rnorm(100)
df <- data.frame(x,y,z)
#(2)使用术语“(z-1)^2”
注意:在这里,如果没有“I”((z-1)^2)
”中的“I
”,lm()
函数不会将“-
,^
”视为arthmetic运算符
lm.fit <- lm(y ~ x + log(x) + z + log(z) + (z-1)^2, data=df)
summary(lm.fit)
(4a)不使用I()
(3)交互项可以分解如下:
lm.fit <- lm(y ~ x + log(x) + z + log(z) + (z-1) + (z-1) + (z-1):(z-1), data=df)
summary(lm.fit)
(4d)的工作原理与(4c)相同
(7)在lm()
函数中使用I()
:
它允许它解释数学运算符来进行数学运算。这里,interecept包含在lm()
中
lm.fit是的,那么这到底是做什么的呢?我不完全理解交互部分,以及为什么它会使r^2膨胀。谢谢。这对于堆栈交换来说是一个很好的问题:交互在回归中意味着什么。不过,恐怕我不是最有资格回答这个问题的人。很抱歉
lm.fit <- lm(y ~ x + log(x) + z + log(z) + (z-1)*(z-1), data=df)
summary(lm.fit)
lm.fit <- lm(y ~ x + log(x) + z + log(z) + (z-1) + (z-1) + (z-1):(z-1), data=df)
summary(lm.fit)
lm.fit <- lm(y ~ x + log(x) + z + log(z) + z-1 + z-1 + (z-1):(z-1), data=df)
summary(lm.fit)
lm.fit <- lm(y ~ x + log(x) + z + log(z) + z:-1, data=df)
summary(lm.fit)
lm.fit <- lm(y ~ x + log(x) + z + log(z) + z-1, data=df)
summary(lm.fit)
lm.fit <- lm(y ~ x + log(x) + z + log(z) + z + z + z:z, data=df)
summary(lm.fit)
var_z <- (z-1)^2
lm.fit <- lm(y ~ x + log(x) + z + log(z) + var_z, data=df)
summary(lm.fit)
lm.fit <- lm(y ~ x + log(x) + z + log(z) + I((z-1)^2), data=df)
summary(lm.fit)