使用 Python statsmodels 的优势比

问题描述

我正在使用 statsmodels logit 运行逻辑回归,并在下游计算每个自变量(即 exp(B))的优势比。

我知道,按照惯例,变量值每增加一个“单位”就会解释一个优势比。我想我的最终问题是我如何知道这里真正的“一个单位”是什么,以及它是否取决于相关列数据的精度。

一个参数,respiratory_rate,有整数值(22、26、30、12 等)。所以我可以假设呼吸频率增加一个单位就是一个整数。

但是,第二个参数温度的值带有小数点到十分位(97.8、98.4、99.5、100.3 等)。这里,对于温度的优势比,“增加一个单位”是十分之一的增加,即增加0.1吗?

(我认为这可能特定于回归引擎,即 statsmodels,因此为什么我在这里发布与 stats.stackexchange)

解决方法

简单的答案是 1 个单位对应 1 度的温度变化。整数单位更改仍然适用,就像它们在呼吸频率中一样,您只是碰巧对温度变量具有更高的精度。 OR = 2.75 意味着温度每升高 1 个单位(1 度),结果的几率就会增加 2.75 倍。

现在,让您的观众真正了解温度变化的十分之一可能很重要(即从 100.1 增加 0.1 到 100.2)。他们可能需要这种水平的精度,因为即使温度的轻微变化也特别有意义,我不知道。

但是为了适应新的上下文,您需要直接转换对数赔率。对数优势只是优势比的对数。

要做到这一点,请确保您已将 numpy 作为 np.import 导入。现在假设我们的 OR = 2.75。 np.log(2.75) = 1.014。为了解释正常单位的十分之一(即 0.1 的度数变化),我们将取 1.014 * 0.1 = 0.1014(您的新对数赔率)。然后将其转换回您的优势比:np.exp(0.1014) = new OR = 1.1067。

所以你可以在这里说两件事中的一件:

  • 温度每升高 1 个单位(1 度),结果的几率就会增加 2.75 倍。
  • 温度每升高 0.1 个单位(0.1 度),结果的几率就会增加 1.11 倍。

查看这篇大约一半的文章了解更多信息:https://online.stat.psu.edu/stat462/node/207/