簡體   English   中英

statsmodels.api Logit 給出 LinAlgError

[英]statsmodels.api Logit giving LinAlgError

我正在嘗試對我的數據進行 Logit 回歸,但是我遇到了一個問題,每當我嘗試擬合它時,我都會收到錯誤消息:

LinAlgError: Singular matrix

我不明白為什么會這樣。 我的 dataframe 沒有全是 0/1,但它只包含一小部分 1。 這是示例:

formula = 'wage ~ I( (33 > age) & (age >= 65) ) + I( (50 > age) & (age >= 33) ) + I( (65 > age) & (age >= 50) )' 
test = [0 for i in range(3000)]
test[256] = 1
df['wage'] = test
ft = smf.logit(formula=formula, data=df).fit(disp=0)

我該如何擺脫這個? 沒有辦法讓 model 中只有一小部分 1。

您指定交互變量結果的方式真的很奇怪:

  1. I( (33 > age) & (age >= 65) ) :這將全為零,你不能讓年齡 < 33 和年齡 > 65 所以你不適合這個。

  2. 如果您將上面的設置為I( (33 > age) | (age >= 65) )您的 model 矩陣仍將排名不足(即過度確定),因為您的所有三個預測變量將是您的截距的線性組合。

  3. 如果您沒有截距就適合,它可能會起作用,具體取決於您有多少正類。

不平衡數據的邏輯回歸存在已知問題 在您的情況下,截距或全為零的 class 作為響應將是有問題的。

如果您的目標是找出哪個 class 與年齡組有正相關關系,請考慮使用 fisher.test

如果目的是預測……我認為不平衡數據沒有辦法解決這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM