在 Poisson GLM R 中更改 Y 截距

Change Y intercept in Poisson GLM R

背景:我有以下数据运行一个glm函数:

location = c("DH", "Bos", "Beth")
count = c(166, 57, 38)

#make into df
df = data.frame(location, count) 

#poisson
summary(glm(count ~ location, family=poisson))

输出:

Coefficients:

            Estimate Std. Error z value Pr(>|z|)    
(Intercept)   3.6376     0.1622  22.424  < 2e-16 ***
locationBos   0.4055     0.2094   1.936   0.0529 .  
locationDH    1.4744     0.1798   8.199 2.43e-16 ***

问题: 我想更改 (Intercept) 以便我可以获得相对于 Bos

的所有值

我看了Change reference group using glm with binomial family and How to force R to use a specified factor level as reference in a regression?。我尝试了那里的方法,但它没有用,我不确定为什么。

尝试过:

df1 <- within(df, location <- relevel(location, ref = 1))

#poisson
summary(glm(count ~ location, family=poisson, data = df1))

期望输出:

Coefficients:

            Estimate Std. Error z value Pr(>|z|)    
(Intercept)    ...
locationBeth   ...
locationDH     ...

问题:如何解决这个问题?

我认为你的问题是你正在修改数据框,但在你的模型中你没有使用数据框。在模型中使用 data 参数来使用数据框中的数据。

location = c("DH", "Bos", "Beth")
count = c(166, 57, 38)
# make into df
df = data.frame(location, count) 

请注意 location 本身就是一个 character 向量。 data.frame() 默认情况下在数据框中将其强制为 factor 。这样转换之后,我们就可以用relevel来指定参考水平了。

df$location = relevel(df$location, ref = "Bos") # set Bos as reference
summary(glm(count ~ location, family=poisson, data = df))

    # Call:
    # glm(formula = count ~ location, family = poisson, data = df)
    # ...
    # Coefficients:
    #              Estimate Std. Error z value Pr(>|z|)    
    # (Intercept)    4.0431     0.1325  30.524  < 2e-16 ***
    # locationBeth  -0.4055     0.2094  -1.936   0.0529 .  
    # locationDH     1.0689     0.1535   6.963 3.33e-12 ***
    # ...