scipy.stats.contingency.

odds_ratio#

scipy.stats.contingency.odds_ratio(table, *, kind='conditional')[原始碼]#

計算 2x2 列聯表的勝算比。

參數:
tablearray_like of ints

一個 2x2 列聯表。元素必須是非負整數。

kindstr, optional

要計算哪種勝算比,可以是樣本勝算比(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. (See section 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)。

如需更詳細的範例,請參閱 列聯表的勝算比