r-在RStudio中的glm()中获得两个不同模型的相同结果



我是R工具的新手,在glm()函数方面遇到了一些问题。我在下面展示了一些数据。当线性预测器仅为x时,glm()函数工作良好,但一旦我将线性预测器更改为x+x^2,它就开始给我提供与第一个模型相同的结果。代码如下:

model1 <- glm(y ~ x, data=data1, family=poisson (link="log"))

系数(模型1((截距(x0.3396339 0.2565236

model2 <- glm(y ~ x + x^2, data=data1, family=poisson (link="log"))

系数(模型2((截距(x0.3396339 0.2565236

正如你所看到的,x^2没有系数,就好像它甚至不在模型中一样。

lmglm函数对公式有一个特殊的解释(请参阅?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 

最新更新