亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

計算蟒蛇的比值比

計算蟒蛇的比值比

侃侃無極 2022-09-27 16:04:50
在這里和這里在線檢查,我看到有兩種方法可以估計Python中的比值比,但結果是不同的。第一種方式:import scipy.stats as statsimport pandas as pddf=pd.DataFrame({'c':['m','m','m','m','f','f','f','f'],'l':[1,1,1,0,0,0,0,1]})ct=pd.crosstab(df.c,df.l)oddsratio, pvalue = stats.fisher_exact(ct)第二種方式:from sklearn.linear_model import LogisticRegressiondf=pd.get_dummies(df,drop_first=True)clf = LogisticRegression()clf.fit(df[['c_m']],df[['l']].values)odds_ratio=np.exp(clf.coef_)第一種方法返回優勢比=9,第二種方法返回優勢比=1.9。我對優勢比的概念相對較新,我不確定如何使用fisher檢驗和邏輯回歸來獲得相同的值,在這種情況下,差異是什么以及哪種方法是正確的方法來獲得優勢比。我將不勝感激任何提示。謝謝。
查看完整描述

1 回答

?
慕尼黑5688855

TA貢獻1848條經驗 獲得超2個贊

簡短的回答:


在這兩種情況下,您應該得到相同的賠率9。


默認情況下,懲罰在 sklearn 邏輯回歸模型中為“L2”,這會扭曲系數值(正則化),因此,如果使用懲罰 ='none,您將獲得相同的匹配優勢比。


所以改為


clf = LogisticRegression(penalty='none')

并計算odds_ratio


長答案:


在第一種情況下,奇數比是先前的比值比,由偶然性/交叉制表制成,計算如下圖所示


df 的列聯表將是


    l   0   1

c       

f       3   1

m       1   3

比值比 = f 的幾率為 0 / m 的幾率為 0


f 的幾率為 0 = P(f=0)/P(f=1) = (3/4) / (1/4)


m 的幾率為 0 = P(m=0)/P(m=1) = (1/4) / (3/4)


比值比 = ((3/4)/(1/4)) / (1/4)/(3/4)) = 9


在第二種情況下,您通過擬合邏輯回歸模型獲得優勢比的估計值。如果您使用懲罰=“無”,您將獲得賠率比= 9。默認情況下,邏輯遞歸估計器中的懲罰為“L2”。


from sklearn.linear_model import LogisticRegression

df=pd.get_dummies(df,drop_first=True)

clf = LogisticRegression(penalty='none')

clf.fit(df[['c_m']],df[['l']].values)

odds_ratio=np.exp(clf.coef_)


print(odd_ratio)


array([[9.0004094]])

您還可以通過另一種方法獲得優勢比,這也會產生相同的優勢比。看


#Method 2: 

odds_of_yis_1_for_female = np.exp(clf.intercept_+clf.coef_*1) #logit for female

odds_of_yis_1_for_male = np.exp(clf.intercept_+clf.coef_*0) # logit for male

odds_ratio_2 = odds_of_yis_1_for_female/odds_of_yis_1_for_male

print(odds_ratio_2)


[[9.0004094]]

要了解為什么這兩種方法相同,請參閱此處


查看完整回答
反對 回復 2022-09-27
  • 1 回答
  • 0 關注
  • 99 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號