R 中的逻辑回归 - 解释分类变量的交互作用
Logistic Regression in R - Interpreting interaction effects for categorical variables
我有一个看起来像这样的数据集。
注意变量A和B是Low/High
的二进制变量
以下代码已经运行在R
logit = glm(y ~ A*B , family = binomial(link='logit') , data=df)
summary(logit)
这是输出
包括 A 和 B 之间的交互作用的原因是我的假设与 A 和 B 的作用不一致,所以我想我应该包括 A 和 B 之间的交互作用,结果毫不奇怪相当重要。
但是我该如何解释这些系数呢?
我知道如何解释 A 或 B 是否是数字,但处理 2 个分类变量很难理解。
期待专家的advices/comments。
非常感谢!
非常感谢。
一般背景:解释逻辑回归系数
首先,要了解更多关于一般解释逻辑回归系数的信息,请查看 this guide for beginners。逻辑回归系数是与预测变量增加 1 个单位相关的结果对数几率的变化。因此,如果您有一个系数 \beta
,您可以对它取幂,exp(beta)
以获得比值比。如果 beta = 0
、exp(beta) = 1
,则 OR 为 1,预测变量对响应的几率没有影响。如果 beta > 0
,OR 为正,预测变量增加响应的几率。
解释 R 逻辑回归中分类变量的交互系数
现在我们已经了解了背景,我们可以在此处继续对问题进行更具体的回答。
在 R 中,像 glm()
这样带有分类预测变量的线性模型对这些变量使用 factor
数据类型。如果将它们传递给 glm()
时它们是字符格式,它会将它们强制转换为因子。然后在强制转换之后,模型将每个因子转换为一组 n-1
虚拟变量,其中 n
是因子中唯一水平的数量。默认顺序是按字母顺序排列的,因此字母表中排在第一位的因子水平将被视为参考或截距水平。
因此,由于 A
和 B
每个只有两个唯一级别,并且 High
在字母表中排在 Low
之前,所以 A
和 B
本质上将转换为 0
和 1
的单个向量,其中 High 是 0
,Low 是 1
。您可以通过手动设置因子水平排序来更改此行为:df$A <- factor(df$A, levels = c('Low', 'High'))
.
在您的模型中,A
和 B
之间相互作用的系数表示 A
对 y
是否为 Terminated
取决于 B
(或者等价地,B
对 y
的影响取决于 A
)。请注意,这还假设二进制的 y
结果变量具有 Active = 0
和 Terminated = 1
。这也是因为默认的字母顺序。
模型是
因为 A 为 0 或 1,B 为 0 或 1,除非 A=1 且 B=1,否则上述等式的最后一项将为 0。这对应于两个变量都是 Low
假设您使用的是默认因子编码。我们可以将 1.41 的系数解释为正,表示如果 A
是 Low
,则 B
对 y
的影响更正,或导致更大的影响y
成为 Terminated
的概率增加。具体来说,如果两者都是 Low
,则 Terminated
的几率比其中至少一个不是 Low
的几率高 exp(1.41) = 4.1
倍。
你可以说“如果 A 低,则 B 低对终止概率有积极影响,但如果 A 高,则 B 低对终止概率有负面影响。”那是因为B的主效应<0而交互系数>0.
我有一个看起来像这样的数据集。
注意变量A和B是Low/High
的二进制变量
以下代码已经运行在R
logit = glm(y ~ A*B , family = binomial(link='logit') , data=df)
summary(logit)
这是输出
包括 A 和 B 之间的交互作用的原因是我的假设与 A 和 B 的作用不一致,所以我想我应该包括 A 和 B 之间的交互作用,结果毫不奇怪相当重要。
但是我该如何解释这些系数呢?
我知道如何解释 A 或 B 是否是数字,但处理 2 个分类变量很难理解。
期待专家的advices/comments。
非常感谢!
非常感谢。
一般背景:解释逻辑回归系数
首先,要了解更多关于一般解释逻辑回归系数的信息,请查看 this guide for beginners。逻辑回归系数是与预测变量增加 1 个单位相关的结果对数几率的变化。因此,如果您有一个系数 \beta
,您可以对它取幂,exp(beta)
以获得比值比。如果 beta = 0
、exp(beta) = 1
,则 OR 为 1,预测变量对响应的几率没有影响。如果 beta > 0
,OR 为正,预测变量增加响应的几率。
解释 R 逻辑回归中分类变量的交互系数
现在我们已经了解了背景,我们可以在此处继续对问题进行更具体的回答。
在 R 中,像 glm()
这样带有分类预测变量的线性模型对这些变量使用 factor
数据类型。如果将它们传递给 glm()
时它们是字符格式,它会将它们强制转换为因子。然后在强制转换之后,模型将每个因子转换为一组 n-1
虚拟变量,其中 n
是因子中唯一水平的数量。默认顺序是按字母顺序排列的,因此字母表中排在第一位的因子水平将被视为参考或截距水平。
因此,由于 A
和 B
每个只有两个唯一级别,并且 High
在字母表中排在 Low
之前,所以 A
和 B
本质上将转换为 0
和 1
的单个向量,其中 High 是 0
,Low 是 1
。您可以通过手动设置因子水平排序来更改此行为:df$A <- factor(df$A, levels = c('Low', 'High'))
.
在您的模型中,A
和 B
之间相互作用的系数表示 A
对 y
是否为 Terminated
取决于 B
(或者等价地,B
对 y
的影响取决于 A
)。请注意,这还假设二进制的 y
结果变量具有 Active = 0
和 Terminated = 1
。这也是因为默认的字母顺序。
模型是
因为 A 为 0 或 1,B 为 0 或 1,除非 A=1 且 B=1,否则上述等式的最后一项将为 0。这对应于两个变量都是 Low
假设您使用的是默认因子编码。我们可以将 1.41 的系数解释为正,表示如果 A
是 Low
,则 B
对 y
的影响更正,或导致更大的影响y
成为 Terminated
的概率增加。具体来说,如果两者都是 Low
,则 Terminated
的几率比其中至少一个不是 Low
的几率高 exp(1.41) = 4.1
倍。
你可以说“如果 A 低,则 B 低对终止概率有积极影响,但如果 A 高,则 B 低对终止概率有负面影响。”那是因为B的主效应<0而交互系数>0.