在 RStudio 的 glm() 中为两个不同的模型获得相同的结果
Getting the same results for two different models in glm() in RStudio
我是 R 工具的新手,在使用 glm()
函数时遇到了一些问题。
我有一些数据显示在下面。当线性预测变量只是 x 时,glm()
函数工作正常,但只要我将线性预测变量更改为 x + x^2,它就会开始给我与第一个模型相同的结果。
代码如下:
model1 <- glm(y ~ x, data=data1, family=poisson (link="log"))
coef(model1)
(Intercept) x
0.3396339 0.2565236
model2 <- glm(y ~ x + x^2, data=data1, family=poisson (link="log"))
coef(model2)
(Intercept) x
0.3396339 0.2565236
如您所见,x^2 没有系数,就好像它甚至不在模型中一样。
lm
和 glm
函数对公式有特殊的解释(请参阅 ?formula
),如果您不期望它,可能会造成混淆。该接口的预期用途是 (w + x)^2
表示 a*w + b*x + c*w*x + d
!如果你想抑制它,你需要使用文字函数,I
.
model2 <- glm(gear ~ disp + I(disp^2),
data = mtcars, family = poisson (link = "log"))
coef(model2)
# (Intercept) disp I(disp^2)
# 1.542059e+00 -1.248689e-03 6.578518e-07
换句话说,I
允许您在对 glm
的调用中执行转换。下面是等价的
mtcars1 <- mtcars
mtcars1$disp_sq <- mtcars1$disp^2
model2a <- glm(gear ~ disp + disp_sq,
data = mtcars1, family = poisson (link = "log"))
coef(model2a)
# (Intercept) disp disp_sq
# 1.542059e+00 -1.248689e-03 6.578518e-07
我是 R 工具的新手,在使用 glm()
函数时遇到了一些问题。
我有一些数据显示在下面。当线性预测变量只是 x 时,glm()
函数工作正常,但只要我将线性预测变量更改为 x + x^2,它就会开始给我与第一个模型相同的结果。
代码如下:
model1 <- glm(y ~ x, data=data1, family=poisson (link="log"))
coef(model1) (Intercept) x 0.3396339 0.2565236
model2 <- glm(y ~ x + x^2, data=data1, family=poisson (link="log"))
coef(model2) (Intercept) x 0.3396339 0.2565236
如您所见,x^2 没有系数,就好像它甚至不在模型中一样。
lm
和 glm
函数对公式有特殊的解释(请参阅 ?formula
),如果您不期望它,可能会造成混淆。该接口的预期用途是 (w + x)^2
表示 a*w + b*x + c*w*x + d
!如果你想抑制它,你需要使用文字函数,I
.
model2 <- glm(gear ~ disp + I(disp^2),
data = mtcars, family = poisson (link = "log"))
coef(model2)
# (Intercept) disp I(disp^2)
# 1.542059e+00 -1.248689e-03 6.578518e-07
换句话说,I
允许您在对 glm
的调用中执行转换。下面是等价的
mtcars1 <- mtcars
mtcars1$disp_sq <- mtcars1$disp^2
model2a <- glm(gear ~ disp + disp_sq,
data = mtcars1, family = poisson (link = "log"))
coef(model2a)
# (Intercept) disp disp_sq
# 1.542059e+00 -1.248689e-03 6.578518e-07