负二项回归中标度连续变量的非标度系数

Unscale coefficient of scaled continuous variable in negative binomial regression

我正在拟合负二项式回归。在拟合模型之前,我缩放了所有连续预测变量。我需要转换比例预测变量的系数,以便能够在其原始比例上解释它们。示例:

# example dataset
set.seed(1)
dep <- dnbinom(seq(1:150), size = 150, prob = 0.75)
ind.1 <- ifelse(sign(rnorm(150))==-1,0,1)
ind.2 <- rnorm(150, 10, 1.7)
df <- data.frame(dep, ind.1, ind.2)

# scale continuous independent variable
df$ind.2 <- scale(df$ind.2) 

# fit model
m1 <- MASS::glm.nb(dep ~ ind.1 + ind.2, data = df)
summz <- summary(m1)

要获得 ind.1 的结果,我采用 exponential of the coefficient:

# result for ind.1
exp(summz$coefficients["ind.1","Estimate"])
> [1] 1.276929 

这表明 ind.1 每增加 1 个单位,您预计 dep 会增加 1.276929。但是 ind.2 呢?我收集到,随着预测变量的缩放,系数可以解释为 ind.2 的 1 标准差 增加对 dep 的影响。如何将其转换回原始单位? This answer 说要将系数乘以预测变量的 sd,但是在 logit link 的情况下如何做到这一点? exp(summz$coefficients["ind.2","Estimate"] * sc) 好像说不通。

设置数据:

set.seed(1)
dep <- dnbinom(seq(1:150), size = 150, prob = 0.75)
ind.1 <- ifelse(sign(rnorm(150))==-1,0,1)
ind.2 <- rnorm(150, 10, 1.7)
df <- data.frame(dep, ind.1, ind.2)
sc <- sd(df$ind.2)

拟合未缩放和缩​​放模型:

m_unsc <- MASS::glm.nb(dep ~ ind.1 + ind.2, data = df)
m_sc <- update(m_unsc, data = transform(df, ind.2 = drop(scale(df$ind.2))))

比较系数:

 cbind(coef(m_unsc), coef(m_sc))
                   [,1]        [,2]
(Intercept) -5.50449624 -5.13543854
ind.1        0.24445805  0.24445805
ind.2        0.03662308  0.06366992

检查等价性(我们缩放系数除以缩放因子(sc=sd(ind.2))得到未缩放系数):

all.equal(coef(m_sc)["ind.2"]/sc, coef(m_unsc)["ind.2"])

负二项式模型使用对数 link,而不是对数 link,因此如果您想对系数进行反变换以获得每单位 [= 的比例或“折叠”变化17=]:

exp(coef(m_sc)["ind.2"]/sc)

这给出 1.0373,ind.2 中每单位变化的响应变化 4%(您可以确认它与对未缩放系数取幂相同)。

注意 linked question 中 2/3 的答案,包括当前接受的答案,是错误的:你应该将缩放系数除以缩放因子,不相乘...