reg2logit:用OLS估計Logit模型參數

2021-02-14 Stata連享會

🍎 連享會主頁:lianxh.cn

New! lianxh 命令發布了:   GIF 動圖介紹
隨時搜索 Stata 推文、教程、手冊、論壇,安裝命令如下:
  . ssc install lianxh

連享會 · 最受歡迎的課


🍓 2021 Stata 寒假班
⌚ 2021 年 1.25-2.4

🌲 主講:連玉君 (中山大學);江艇 (中國人民大學)

👉 課程主頁:https://gitee.com/arlionn/PX

作者: 彭莘昱 (中山大學)
E-Mail: <sonya_p$foxmail.com>

目錄

1. 應用背景

2. 理論推導

3.  reg2logit 命令介紹

3.1 步驟

3.2 語法結構

3.3 模擬實例

3.4 應用實例:mroz 數據集

4. 總結

5. 參考文獻

6. 相關推文

溫馨提示: 文中連結在微信中無法生效。請點擊底部「閱讀原文」。

編者按:
本文部分內容翻譯自 PAUL ALLISON, Better Predicted Probabilities from Linear Probability Models,特此致謝!

1. 應用背景

reg2logit 是 2020 年由 Paul T. von Hippel 等人提出的由線性回歸的 OLS 估計 logistic 模型參數的新命令,其估計的理論基礎是 Haggstrom (1983) 提出的變換公式。該公式後來被 Allison (2020) 應用為「線性判別模型」(LDM) 方法。

LDM 模型來源於 LPM 和 logit 模型的轉換。首先,LDM 可以轉換為一個 logit 模型,其次,線性概率模型 (LPM) 的參數估計能夠轉換為「第一步轉換後的 Logit 模型」參數的極大似然估計。故而只需將轉換後的參數插入到 logit 模型中即可得到 LDM 模型,並且預測概率

LDM 模型的前提假設是解釋變量

1.1 LPM 與 logit 之辯

線性概率模型 (LPM) 即被解釋變量

在滿足經典線性假定 (CLM) 的情境下,

以上就是線性概率模型 (下簡稱 LPM),在估計參數時使用的是 OLS 線性回歸。

LPM 和 logit 模型均可以作為預測事件概率值

論點 1: LPM 優於 Logit

reg2logit 命令的作者 Paul von Hippel 曾認為 LPM 優於 Logit。他在 2017 年發布的 一篇文章 闡述了他的理由。

第一,OLS 回歸速度要比 logistic 回歸更快,這對於數據量大、模型複雜、模型頻繁更新迭代的情況更為便捷。第二,概率的變化要比勝算比 第三,Paul von Hippel 證明了在預測概率區間 第四,由於 Logit 模型使用的極大似然估計 (下簡稱 MLE) 的準完全分離 (quansi-complete separation),Logit 模型可能會崩潰,但是 LPM 沒有這方面的問題。

論點 2: Logit 優於 LPM

reg2logit命令的另一作者 Paul Allison 更加偏好使用 Logit 模型,他有以下幾個觀點。

第一,LPM 可能會產生無效的概率預測值,而 Logit 不會。由於 LPM 的被解釋變量是 1 和 0,在進行線性回歸時,最終得到的概率預測值可能大於 1 或小於 0,然而這是無效的概率預測值。第二,對於二分類的情況,Logit 的係數及估計值將比 LPM 更穩定。Allison 認為 LPM 不是真實的產生二分結果的機制。第三,Logit 模型受解釋變量間相互作用影響小,參數更加穩定。在 一篇文章 裡,Allison 具體地闡釋了這一觀點。

Logit 模型和 LPM 之間的優劣難以比較,是否有另一種方法能夠結合兩者的優勢,估計二元變量的概率值呢?

答案是肯定的,就是開篇所介紹的 LDM 模型。下面將從判別分析說起,推導 LDM 的具體轉換方式,模擬 reg2logit 命令的應用,並對本文內容做一個小結,總結 LDM 的優勢和應用場景。

1.2 判別分析 (DA) 與線性判別模型 (LDM)

判別分析是根據個體的特徵將個體分為若干類別中的一類。其基本原理如下:按照一定的判別準則,建立一個或多個判別函數,用研究對象的大量信息確定判別函數中的待定係數,並計算判別指標。例如,對於一個兩類問題的判別,就是將模式

判別分析和 Logistic 回歸有著密不可分的聯繫。兩者都可以達到對樣本進行分類的目的。在 Logistic 回歸中,變量

判別分析和 Logistic 回歸也有區別。logit 模型主要是探究解釋變量對離散的被解釋變量的影響,而判別分析需要用已有的訓練集進行訓練,得到判別準則係數,從而實現對目標樣品的歸類,從這個維度看,判別分析是一種機器學習的方法。

然而部分用於進行判別分析的電腦程式不提供 Logit 模型係數的估計值、標準誤、T 值。Haggstrom (1983) 指出對於大型數據集,在判別分析中使用 OLS 可以實現。這就是這位大牛推導由 OLS 轉換 Logit 模型參數方法的初衷,其推導出發點是線性判別模型 (LDM)。

2. 理論推導2.2 由 LDM 推導 logit 模型

LDM 方法是一種根據解釋變量的線性函數將被解釋變量分為兩類 (0\1) 的方法,線性判別模型在給定

假設數據集服從同方差假設,

根據貝葉斯公式,由先驗概率

將分母由全概率公式展開,可以得到:

分子分母同時除以

為了將上式寫為 logistic 分布概率

將 (1) 式中正態分布密度函數代入下式:

最終

此時就得到了服從線性的 logistic 回歸模型了。

從以上推導過程中可以看出,在二元情況下,假設

上式可以泛化為一般情況,即在多元條件下,Y=1、2……k,共有k組,且 (1) 式仍然成立。

將上式寫為 logistic 回歸形式:

其中:

由 (1) 可得,當

2.2 "推導後 Logit" 參數的 MLE

對由 LDM 推導後的 Logit 模型進行參數估計時,假定存在一個

似然函數如下:

其中當

2.3 由 OLS 計算 "推導後 Logit" 參數的 MLE

在二元情況下,即

此時該回歸的殘差平方和為:

根據 Haggstorm (1983) 的推導,推導後 Logit 係數的MLE與 OLS 估計中參數

從上式可以看出,在

在多元情況下,以最後一組

以上就是二元和多元情況下用 OLS 估計 logit 模型參數的表達式。

方法: 固定效應模型、FM 估計、動態面板、穩健性檢驗、衡量偏誤問題
直接聽課 | 課件展示:https://gitee.com/arlionn/paper101

3.  reg2logit 命令介紹3.1 步驟

根據第二部分的理論推導,可以看出,通過 OLS 獲取 logit 模型的參數只需要兩步。

Step1: 通過 OLS 估算 LPM 的參數

即上文 1.4 中 (7) 式

Step2: 變換參數為

按照 (8)、(10) 兩式變換參數,可以得到 (4) 式的估計值

以上就是命令 reg2logit 的具體運行步驟。進一步地,我們還可以繼續得到在

3.2 語法結構

安裝命令:

. ssc install reg2logit, replace

reg2logit 的語法結構如下:

reg2logit yvar [xvars] [if] [in], iterate(#)

iterate(#): 轉換 OLS 估計參數後要迭代的次數。默認值為 0。如果將 iter()選項設置為大於零的值,轉換後的 OLS 估計值為迭代極大似然估計值提供了起點。3.3 模擬實例
*-生成數據
set obs 1000
gen id = _n

set seed 123
gen y = (id <= 750) //將前750個數的y設置為1

gen x1 = rnormal(3, 1) if id <= 750 //當y=1時,X1|Y~N(3,0.5)
replace x1 = rnormal(6, 1) if id > 750 //當y=0時,X1|Y~N(6, 0.5)

gen x2 = rnormal(10, 1) if id <= 750 //當y=1時,X2|Y~N(10,1)
replace x2 = rnormal(8, 1) if id > 750 //當y=0時,X2|Y~N(8,1)


*-參數比較
qui logit y x1 x2
est store m1
qui reg2logit y x1 x2
est store m2
qui reg2logit y x1 x2, iter(1)
est store m3
qui reg2logit y x1 x2, iter(3)
est store m4

上面生成了 1000 個觀察值,其中

. esttab m1 m2 m3 m4, s(r2_p) b(%6.4f) star(* 0.1 ** 0.05 *** 0.01)

---
(1) (2) (3) (4)
y y y y
---
y
x1 -3.0198*** -3.1425*** -2.9943*** -3.0198***
(-9.58) (-9.24) (-9.63) (-9.58)

x2 1.8406*** 1.9772*** 1.8190*** 1.8406***
(7.28) (7.20) (7.30) (7.28)

_cons -2.0693 -2.5695 -2.0062 -2.0693
(-0.95) (-1.13) (-0.93) (-0.95)
---
r2_p 0.8534 0.8526 0.8534 0.8534
---
t statistics in parentheses
* p<0.1,** p<0.05,*** p<0.01

在本次模擬中,logit 模型 (1) 需要迭代 6 次才能獲得最終結果,而使用 reg2logit 命令,即 LDM (2) 模型則無需迭代,這解釋了使用 reg2logit 的速度快於 logit 的原因。在解釋變量滿足多元正態性的條件下,LDM 模型近似 logit 模型的效果非常好,係數和擬合優度均十分接近。且 LDM (4) 模型只需迭代三次,就可以得到和使用 logit 命令幾乎一樣的係數估計。

*-預測概率pi
qui logit y x1 x2
predict pr1
sum pr1

qui reg2logit y x1 x2
predict pr2
sum pr2

ttest pr1==pr2

使用 ttest 命令比較 LDM 方法和典型 logit 方法預測出的概率 P (Y=1|x) 是否存在顯著差異。

. ttest pr1==pr2

Paired t test
---
Variable | Obs Mean Std. Err. Std. Dev. [95% Conf. Interval]
----+---
pr1 | 1,000 .75 .0128063 .4049695 .7248697 .7751303
pr2 | 1,000 .7535263 .0128085 .4050392 .7283918 .7786609
----+---
diff | 1,000 -.0035263 .0002747 .0086865 -.0040654 -.0029873
---
mean(diff) = mean(pr1 - pr2) t = -12.8375
Ho: mean(diff) = 0 degrees of freedom = 999

Ha: mean(diff) < 0 Ha: mean(diff) != 0 Ha: mean(diff) > 0
Pr(T < t) = 0.0000 Pr(|T| > |t|) = 0.0000 Pr(T > t) = 1.0000

可以看出在此例中兩者預測的概率均值仍然存在顯著差異,然而大部分差異僅在 -0.004~0.003 之間,難以對預測

*-預測準確率
gen y1 = (pr1 >= 0.5)
gen y2 = (pr2 >= 0.5)

count if y1 == y // accuracy = 969/1000 = 96.9%
count if y2 == y // accuracy = 969/1000 = 96.9%
count if y1 != y2 & y1 ==y // logit win while LDM lose : 2
count if y1 != y2 & y2 ==y // LDM win while logit lose : 2

3.4 應用實例:mroz 數據集

這裡使用了 753 名已婚婦女的勞動力參與情況的數據集(Mroz 1987)來比較 LPM \ Logit \ LDM 模型的概率預測情況。被解釋變量 inlf 表示,處於勞動力中的婦女為 1,否則為 0。解釋變量 kidslt6 是該婦女撫養的六歲以下兒童的人數,age 是婦女年齡,educ 是受教育程度(年),exper 勞動經驗 (年),以及 expersq 經驗的平方。

*-導入數據
ssc install bcuse, replace // 安裝 bcuse 命令

bcuse mroz, clear

*-LPM Logit LDM
qui reg inlf kidslt6 age educ exper expersq //LPM
predict yhat_lpm, xb

qui logit inlf kidslt6 age educ exper expersq //Logit
predict yhat_logit

reg2logit inlf kidslt6 age educ exper expersq //LDM
predict yhat_ldm

從下表中可以看出,雖然 LPM 的均值合 Logit 模型最為接近,然而 LPM 預測值的最大值 1.12 超過了 1,最小值為 -0.28 小於 0,對於概率預測值來說,這是不合常理的。此外,LDM 和 logit 的預測值都在 (0, 1) 之間,極值也較為相近。

. sum yhat*

Variable | Obs Mean Std. Dev. Min Max
-+----
yhat_lpm | 753 .5683931 .2517531 -.2782369 1.118993
yhat_ldm | 753 .5745898 .2605278 .0136687 .9676127
yhat_logit | 753 .5683931 .2548012 .0145444 .9651493

從三類模型預測概率的相關係數來看,logit 模型與 LDM 的概率預測值相關性最高。

. pwcorr yhat*
| yhat_lpm yhat_l~t yhat_ldm
---+--
yhat_lpm | 1.0000
yhat_logit | 0.9880 1.0000
yhat_ldm | 0.9870 0.9994 1.0000

下圖繪製了 LDM\LPM 同 Logit 模型概率預測值的散點圖。可以看到,當 Logit 模型預測概率值接近於 1 和 0 時,LPM 概率預測值出現了較大的偏差,而 LDM 模型概率預測值與 Logit 概率預測值的關係較為穩定。整體而言,LDM 在一定程度上要優於 LPM。

set scheme s2color
label var yhat_lpm "LPM"
label var yhat_logit "Logit"
label var yhat_ldm "LDM"

twoway ///
(scatter yhat_lpm yhat_logit, m(Oh) msize(*0.6)) ///
(scatter yhat_ldm yhat_logit, m(+) msize(*0.6) mc(red%70)) ///
, legend(ring(0) position(5))

graph export "lianxh-Logit-LPM-LDM.png", replace

4. 總結

本文簡要地介紹了以 OLS 估計轉換為 Logit 模型參數的方法,以及應用此方法預測二元概率值的線性判別模型 (LDM)。值得注意的是,該轉換方法和 LDM 均需滿足被解釋變量的條件多元正態性假設,且 LDM 僅是應用該轉換方法的一種實踐。對於

總之,LDM 方法是一種有效的方法,reg2logit 命令是一種實現 LDM 的有效方式,本文結論如下。

第一,LDM 方法運算速度更快且估計值有效。 對於大數據或數量多、相關係數大的被解釋變量,logit 這樣的迭代命令可能很慢,致使其無法產生 MLE (minka 2003 ; ji&telgarsky 2018)。Reg2logit 無需迭代,只需進行 OLS 估計並進行轉換,故而可以快速估計參數。LDM 估計的參數值通常是有效的。

第二,LDM 能夠替代 LPM。 LDM 推導的基礎是 LPM 的 OLS 估計,LDM 吸收了 LPM 模型的大部分優勢,且能夠獲得更有效的預測概率 。

第三,reg2logit 還具有其他應用場景。 Paul T. von Hippel 提到該命令還可以在擬合一個多元正態插補模型時插補虛擬變量。

雖然 LPM 和 Logit 之辯暫時還沒有結論,然而可以確定的是,LDM 在一定程度上 (多元正態性限制) 要優於 LPM,故而 LPM 和 Logit 之辯的命題似乎能夠轉換為 LDM 和 Logit 之辯了。

5. 參考文獻

溫馨提示: 文中連結在微信中無法生效。請點擊底部「閱讀原文」。

Haggstrom G W. Logistic regression and discriminant analysis by ordinary least squares[J]. Journal of Business & Economic Statistics, 1983, 1(3): 229-238.-PDF-Mroz T A. The sensitivity of an empirical model of married women's hours of work to economic and statistical assumptions[J]. Econometrica: Journal of the econometric society, 1987: 765-799.-PDF-Minka T P. A comparison of numerical optimizers for logistic regression[J]. Unpublished draft, 2003: 1-18.-PDF-Ji Z, Telgarsky M. Risk and parameter convergence of logistic regression[J]. arXiv preprint arXiv:1803.07300, 2018.-PDF-PAUL ALLISON, Statistical Horizons 博客, Better Predicted Probabilities from Linear Probability Models維剛, csdn 博客, 第3章-線性概率模型(1)-logistics/probit模型tang_1994, csdn博客, 從線性判別分析(LDA)來理解線性分類(linear classifiers)和概率模型 (probabilistic modeling)

6. 相關推文

Note:產生如下推文列表的命令為:
  lianxh logit 二元, m
安裝最新版 lianxh 命令:
  ssc install lianxh, replace

Stata新命令:面板-LogitFE-ProbitFEStata:多元 Logit 模型詳解 (mlogit)詳解 Logit/Probit 模型中的 completely determined 問題Stata:嵌套 Logit 模型 (Nested Logit)

溫馨提示: 文中連結在微信中無法生效。請點擊底部「閱讀原文」。

連享會 · 最受歡迎的課


🍓 2021 Stata 寒假班
⌚ 2021 年 1.25-2.4

🌲 主講:連玉君 (中山大學);江艇 (中國人民大學)

👉 課程主頁:https://gitee.com/arlionn/PX

關於我們

🍎 連享會 ( 主頁:lianxh.cn ) 由中山大學連玉君老師團隊創辦,定期分享實證分析經驗。👉 直達連享會:百度一下:連享會】即可直達連享會主頁。亦可進一步添加 主頁,知乎,面板數據,研究設計 等關鍵詞細化搜索。

New! lianxh 命令發布了:    GIF 動圖介紹
隨時搜索連享會推文、Stata 資源,安裝命令如下:
  . ssc install lianxh
使用詳情參見幫助文件 (有驚喜):
  . help lianxh

相關焦點

  • 二元Logit模型的理解推導(一)
    二元logit離散選擇是出行行為研究中非常重要的一種。
  • 隨機係數Logit模型及Stata實現
    其中Berry,Levinsohn&Pakes(1995)建立的隨機係數離散選擇模型(現通常稱為BLP模型)結合了隨機係數和Logit模型,允許價格的內生性,所以是當前需求估計建模理論和應用的熱點。
  • Stata:多元 Logit 模型詳解 (mlogit)
    首先,Logit 模型估計的關鍵在於選定基準組 ( base group ),所有係數均是相對於基準組進行估計;其次,我們通常從概率的角度出發對 Logit 模型進行解讀。與二元 Logit 模型相似,基於勝算比 (odds) 對模型參數進行解釋能夠使模型更加簡明易懂。
  • 拉什(RASCH)測量怎麼返回logit
    一些測量研究的文章裡也提到,有的兒童教育或者語言訓練等進入中國市場的教育機構使用的觀察學員學習發展的測量模型,多數地,也是RASCH測量。但在高中裡使用RASCH的人或學校,確實不多見。這可能是RASCH較之經典測量CTT太深奧、太麻煩。由於巧合的原因,接觸了一點兒RASCH,於是看了一點點RASCH的文獻,包括Winsteps的手冊manual和教程tutorial,譯了其中的3篇。
  • suest:跨模型比較與廣義豪斯曼檢驗
    我們考慮這樣一個簡單的情形:數據集中前一半的觀測值用 logit 模型,後一半用 OLS 模型,並且前一半和後一半之間存在一對一的聚類。 2. suest 實例2.1 係數差異檢驗 (不同模型)logit 模型和 probit 模型的係數有可比性嗎?我們用 suest 命令來一探究竟。
  • Stata: 為何使用 Logit 模型?Logit 模型評價
    正如 von Hippel 提醒我們的,當你用  1-0  結果估計線性回歸時,預測值可能大於1或小於0,這顯然意味著它們不能被解釋為概率。即使絕大多數例子中模型給出的預測概率都在他建議的0.20到0.80的範圍內,但這種超出 1-0 邊界的情況經常也發生。
  • 基礎方法 | Logit回歸和Probit回歸有區別嗎?
    因變量的類型決定了回歸模型的使用! 所以,有辨析價值的是Logit回歸和Probit回歸,可能大家看文章時候看的最多的是使用Logit回歸,較少有文章使用Probit回歸,但是Probit總會縈繞在我們的數據分析之中,例如做傾向值匹配,如果你不要求用Logit模型就會自動使用Probit,那麼Probit和Logit回歸之間又有什麼區別和聯繫呢?
  • 互助問答第366期:logit模型在stata操作中出現的問題
    logit模型在stata操作中出現的問題在進行logit模型回歸,在stata中輸入的命令是logit y x i.year i.industry, cluster(id),然而發現控制行業後出現下圖的情況,回歸時部分樣本被刪除
  • Maxdiff系列(六)MaxDiff的數據分析(用Excel進行logit分析)
    為什麼要使用logit model,這是因為Maxdiff記錄的是消費者在面對不同對象集合時的選擇(Choice)。從模型的角度看,消費者的選擇是因變量Y,他所面對的對象集合是自變量X。而消費者的選擇(Y)是一個離散型變量(要麼選中,要麼不選中),而非連續型數據(偏好打分)。
  • 看不懂Logistic模型?別慌,先來了解它和線性回歸模型的區別!
    作為回歸模型的一種,其實它和簡單線性回歸模型分析有著非常相似的地方,它們的模型方程形式是一致的,右邊都可以寫成b1x+c的方程形式,並且b1和c都是未知的係數參數。但是和多元線性回歸模型的不同之處在於,Logistic回歸模型的因變量不同,這是因為我們將因變量的值做了logit處理變換,而不是直接將該方程的值作為因變量的結果。
  • Stata:因變量是類別變量時採用什麼方法估計?
    sysuse auto, clearlogit foreign price weight mpg // Logit 估計probit foreign price weight mpg // Probit 估計更為詳細的介紹,請參閱:特別說明:文中包含的連結在微信中無法生效,請點擊本文底部左下角的【閱讀原文
  • 零基礎的同學如何用Stata做廣義估計模型(GEE)?
    如何得出一個正確的估計值?什麼是廣義估計模型?廣義估計方程的打開方式又是怎樣的?在Stata中如何選取合適的變量、合適的代碼進而做出廣義估計模型(GEE)?今天,我們將學習如何在stata軟體中進行廣義估計模型(GEE)的操作,希望大家都能有所收穫。
  • 在TensorFlow中對比兩大生成模型:VAE與GAN
    本文中,作者在 MNIST 上對這兩類生成模型的性能進行了對比測試。項目連結:https://github.com/kvmanohar22/Generative-Models本項目總結了使用變分自編碼器(Variational Autoencode,VAE)和生成對抗網絡(GAN)對給定數據分布進行建模,並且對比了這些模型的性能。
  • 線性模型(三)邏輯回歸
    至此,經過連結函數轉化後的原值域為正、負無窮該變換稱為logit變換,經過logit變換後可以順利地使用線性回歸模型擬合觀察值的對數機率。此時,我們稱該模型為logit regression或logistic regression,即中文翻譯的邏輯回歸,適用於分類問題。
  • 工具&方法 | 6行代碼教你用python做OLS回歸(內附CFPS實例)
    Statsmodels 是一個Python的第三方模塊,他封裝了許多計量模型,方便學者直接調用。所謂封裝,就相當於 Stata 中一個 reg 命令,代表了最基礎的 OLS 回歸命令,在Statsmodels 中也有類似 reg 的語句,提供給 OLS 估計。