scipy.stats.contingency.

odds_ratio#

scipy.stats.contingency.odds_ratio(table, *, kind='conditional')[源代码]#

计算 2x2 列联表的比值比。

参数:
table整数的类数组

一个 2x2 列联表。元素必须是非负整数。

kindstr,可选

要计算哪种比值比,可以是样本比值比 (kind='sample') 或条件比值比 (kind='conditional')。默认为 'conditional'

返回:
resultOddsRatioResult 实例

返回的对象有两个计算属性

statisticfloat
  • 如果 kind'sample',这是样本(或无条件)估计,由 table[0, 0]*table[1, 1]/(table[0, 1]*table[1, 0]) 给出。

  • 如果 kind'conditional',这是比值比的条件最大似然估计。它是 Fisher 非中心超几何分布的非中心参数,该分布与 table 具有相同的超几何参数,并且其均值为 table[0, 0]

该对象具有方法 confidence_interval,用于计算比值比的置信区间。

注释

Fisher 讨论了条件比值比(参见 [1] 的“示例 1”)。涉及比值比的文本包括 [2][3]

在 1.10.0 版本中添加。

参考文献

[1]

R. A. Fisher (1935), The logic of inductive inference, Journal of the Royal Statistical Society, Vol. 98, No. 1, pp. 39-82.

[2]

Breslow NE, Day NE (1980). Statistical methods in cancer research. Volume I - The analysis of case-control studies. IARC Sci Publ. (32):5-338. PMID: 7216345. (请参阅第 4.2 节。)

[3]

H. Sahai and A. Khurshid (1996), Statistics in Epidemiology: Methods, Techniques, and Applications, CRC Press LLC, Boca Raton, Florida.

示例

在流行病学中,个体被分类为“暴露”或“未暴露”于某些因素或治疗。如果正在研究某种疾病的发生,那么患有该疾病的人通常被分类为“病例”,而没有该疾病的人则被分类为“非病例”。这些类别的发生计数给出了一个列联表

            exposed    unexposed
cases          a           b
noncases       c           d

样本比值比可以写成 (a/c) / (b/d)a/c 可以解释为暴露组中发生病例的几率,而 b/d 可以解释为未暴露组中发生病例的几率。样本比值比是这些几率的比率。如果比值比大于 1,则表明暴露与成为病例之间存在正相关关系。

交换列联表的行或列会反转比值比,因此在解释比值比时,了解赋予表格行和列的标签的含义非常重要。

考虑一个假设的例子,其中假设暴露于某种化学物质与某种疾病的发生率增加有关。假设我们有一个包含 410 人的集合的下表

        exposed unexposed
cases        7       15
noncases    58      472

我们要问的问题是“接触化学物质是否与疾病风险增加有关?”

计算比值比

>>> from scipy.stats.contingency import odds_ratio
>>> res = odds_ratio([[7, 15], [58, 472]])
>>> res.statistic
3.7836687705553493

对于此样本,接触过该化学物质的人患病的几率几乎是没有接触过该化学物质的人的 3.8 倍。

我们可以计算比值比的 95% 置信区间

>>> res.confidence_interval(confidence_level=0.95)
ConfidenceInterval(low=1.2514829132266785, high=10.363493716701269)

条件比值比的 95% 置信区间约为 (1.25, 10.4)。

有关更详细的示例,请参见列联表的比值比