目錄
1. 應用背景
2. 多元 Logit 模型
3. 應用實例
3.1 數據結構描述
3.2 模型估計
3.3 假設檢驗
3.4 預測概率值與概率值的圖形顯示
3.5 擬合優度
3.6 其他思考
參考文獻
1. 應用背景
在實證研究中,我們會遇到被解釋變量為類別變量的情形。在部分情境下,被解釋變量為非此即彼的二元選擇變量 (如是否考取大學、是否結婚等),即我們熟知的0-1變量,此時應採用二元 Logit 模型進行估計;但在很多情形中,被解釋變量涉及 3 種以上的類別變量。
例如:
人們的職業選擇可能受到父母職業及其受教育水平的影響。我們可以探究一個個體的職業選擇與父親職業選擇的相關關係,其中被解釋變量職業選擇包括了多種職業類別。進入高中後學生可以自由選擇綜合課程、職業課程和學術課程。他們的選擇可能受其寫作成績和社會經濟地位的影響。在這些情境下,我們需要採用多元 Logit 模型進行估計。
2. 多元 Logit 模型多元 Logit 模型實質上可視為二元 Logit 模型的拓展,具體二元 Logit 模型的使用可參考閱讀 Stata 連享會 推文 : Logit 模型簡介。兩者的差異在於,二元 Logit 模型的被解釋變量只有 0 和 1 兩個取值,而多元 Logit 模型涉及了被解釋變量有多個取值的情形。
2.1 模型設定多元 Logit 模型可視為對被解釋變量中各類選擇行為兩兩配對後構成的多個二元 Logit 模型實施聯合估計 ( simultaneously estimation )。模型設定具體如下:
其中,
通過求解這
在因變量含有
我們假設選定的基準組 ( base group ) 為第 1 組,那麼第
那麼第
其中,
我們可以進一步將等式一般化得到第
第
以上衡量的是第
以上主要從勝算比 (odds) 的角度對 Logit 模型進行解讀。勝算比 (odds) 反映了不同組別發生概率的比值,但我們更為關注各組別發生概率本身的變化,而非其相對水平的變化。
當第
我們不難看出,
需要注意的是,所有組別發生概率之和為 1,因此各組別發生概率的變化呈現出此消彼長的規律,而某一組別的概率變化也可以由其他
對於連續型解釋變量而言,我們可以直接通過求導得到該變量變化對某一組別發生概率產生的邊際效應:
由以上兩個表達式可以看出第
在實證研究中,我們常用最大似然法對多元 Logit 模型進行估計。在模型解讀中,我們通常採用平均邊際效應 ( average marginal probability effects ) 來衡量解釋變量對各組別發生概率產生的影響:
一方面,我們通過計算平均預測概率及其標準差、或最大預測概率和最小預測概率對模型進行解讀。另一方面,我們也可以通過繪製某一解釋變量在不同取值下對應的預測概率的線形圖 (其他解釋變量取均值) 以描述該變量對發生概率的影響。
3. 應用實例我們通過高中生進行課程選擇的案例介紹多元 Logit 模型的應用。
3.1 數據結構描述在本案例中,被解釋變量prog是高中生樣本個體選擇參加的課程項目:「prog:1 綜合項目 (general);2 學術項目 (academic);3 職業項目 (vocation)」;解釋變量包括被觀測樣本的社會經濟地位 ses (類別變量:1 低等;2 中等;3 高等) 以及寫作成績 write (連續變量)。
我們分別通過tab命令和table命令對變量進行描述性統計,對解釋變量與被解釋變量之間的相關關係進行初步判斷。卡方檢驗表明 prog 和 ses 兩個變量存在相關關係;此外,選擇參加學術課程項目的高中生平均寫作成績最高,而選擇參加職業課程項目的高中生平均寫作成績最低。
use https://stats.idre.ucla.edu/stat/data/hsbdemo, clear
tab prog ses, chi2
type of | ses
program | low middle high | Total
-+---+
general | 16 20 9 | 45
academic | 19 44 42 | 105
vocation | 12 31 7 | 50
-+---+
Total | 47 95 58 | 200
Pearson chi2(4) = 16.6044 Pr = 0.002
table prog, con(mean write sd write)
-
type of |
program | mean(write) sd(write)
+
general | 51.33333 9.397776
academic | 56.25714 7.943343
vocation | 46.76 9.318754
-
3.2 模型估計我們採用mlogit命令估計多元回歸模型。ses 變量前的i.標識表明該變量為類別變量,base選項幫助我們選定模型估計的基準組,此處我們將「學術課程項目」( ses=2 ) 作為基準組。
mlogit prog i.ses write, base(2)
Iteration 0: log likelihood = -204.09667
Iteration 1: log likelihood = -180.80105
Iteration 2: log likelihood = -179.98724
Iteration 3: log likelihood = -179.98173
Iteration 4: log likelihood = -179.98173
Multinomial logistic regression Number of obs = 200
LR chi2(6) = 48.23
Prob > chi2 = 0.0000
Log likelihood = -179.98173 Pseudo R2 = 0.1182
---
prog | Coef. Std. Err. z P>|z| [95% Conf. Interval]
---+----
general |
ses |
middle | -.533291 .4437321 -1.20 0.229 -1.40299 .336408
high | -1.162832 .5142195 -2.26 0.024 -2.170684 -.1549804
|
write | -.0579284 .0214109 -2.71 0.007 -.0998931 -.0159637
_cons | 2.852186 1.166439 2.45 0.014 .5660075 5.138365
---+----
academic | (base outcome)
---+----
vocation |
ses |
middle | .2913931 .4763737 0.61 0.541 -.6422822 1.225068
high | -.9826703 .5955669 -1.65 0.099 -2.14996 .1846195
|
write | -.1136026 .0222199 -5.11 0.000 -.1571528 -.0700524
_cons | 5.2182 1.163549 4.48 0.000 2.937686 7.498714
---
在輸出結果中,iteration log顯示了多元 logit 模型的收斂速度,經過4次迭代後我們得到 MLE 估計量。輸出結果中的對數似然值 (Log likelihood = -179.98173) 可用於嵌套模型的比較。這裡計算出的似然比統計量 LR chi2(6) = 48.23是評估模型擬合程度的指標,檢驗了除常數項外所有變量的聯合顯著性,Prob > chi2 = 0.0000 表明與僅包含常數項的模型相比,該模型從整體而言具有更好的擬合優度。模型估計的輸出結果主要包括 general 和 vocation 兩部分 ( academic 是基準組) 。實質上,多元 logit 模型可視為 prog 變量中的 3 種選擇行為兩兩配對後構成的 2 個二元 logit 模型實施聯合估計 ( simultaneously estimation ),它們分別對應以下兩個方程:其中
變量 write 每增加一個單位,個體選擇參加綜合課程相對於學術課程的勝算比對數 ( log odds ) 將減少 0.058。變量 write 每增加一個單位,個體選擇參加職業課程相對於學術課程的勝算比對數 ( log odds ) 將減少 0.1136。與社會經濟地位最低 ( ses=1 ) 的高中生個體相較,社會經濟地位最高( ses=3 )的個體選擇參加職業課程相對於學術課程的勝算比對數 ( log odds ) 將減少 1.163 。是輸出結果的估計係數,具體解讀如下: 使用 mlogit 模型只能獲得各組類別相對於基準組 ( academic ) 的估計係數 ( log odds ),該估計係數的經濟含義解釋顯然不夠直觀。在實踐中,我們更常用到的指標是勝算比 ( odds ),即選擇某一類課程的概率與選擇基準組 academic 的概率的比值,這一指標也被稱為相對風險 ( relative risk ),可以通過對估計係數取冪得到。相對風險係數的經濟含義是解釋變量變化一個單位所引起的某類選擇相對於基準組選擇勝算比的變化。若附加rrr選項,「Stata」的輸出結果則會列示出所有係數估計值對應的勝算比,即e^b( odds ratio ) 。
mlogit, rrr
Multinomial logistic regression Number of obs = 200
LR chi2(6) = 48.23
Prob > chi2 = 0.0000
Log likelihood = -179.98173 Pseudo R2 = 0.1182
---
prog | RRR Std. Err. z P>|z| [95% Conf. Interval]
---+----
general |
ses |
middle | .586671 .2603248 -1.20 0.229 .2458607 1.39991
high | .3125996 .1607448 -2.26 0.024 .1140996 .856432
|
write | .9437175 .0202059 -2.71 0.007 .9049342 .984163
_cons | 17.32562 20.20928 2.45 0.014 1.761221 170.4369
---+----
academic | (base outcome)
---+----
vocation |
ses |
middle | 1.338291 .6375264 0.61 0.541 .5260904 3.404399
high | .3743103 .2229268 -1.65 0.099 .1164888 1.202761
|
write | .8926126 .0198338 -5.11 0.000 .8545734 .9323449
_cons | 184.6016 214.793 4.48 0.000 18.87213 1805.719
---3.3 假設檢驗3.3.1 檢驗係數的顯著性由於多元 Logit 模型具有聯立方程的特徵,因此需要進行一些以組別為基礎的檢驗。要檢驗某個變量是否顯著,需要聯合檢驗 J-1 ( J 表示組別個數 ) 個係數是否同時不為 0。在本案例中,若檢驗個體社會經濟地位 ( ses ) 對課程類型選擇 ( prog ) 是否產生顯著影響,則需要分別檢驗 ses = 2 與 ses = 3 兩個虛擬變量在 general 和 vocation 2 個組別中的估計係數是否顯著異於 0 。
我們可以通過 LR 檢驗估計係數的顯著性。由於 LR 檢驗需要估計限制性與非限制性兩個模型,因此當模型較為複雜或樣本數較大時,該檢驗會非常耗時,甚至無法執行,此時應進行 Wald 檢驗。以下採取lrtest命令檢驗 ses 是否對個體課程選擇 prog 產生顯著影響,結果同樣表明變量 ses 對個體課程選擇 prog 的影響是顯著的。
qui mlogit prog i.ses write, base(2)
est store mFull
qui mlogit prog write, base(2)
est store m0
lrtest mFull m0
Likelihood-ratio test LR chi2(4) = 11.06
(Assumption: m0 nested in mFull) Prob > chi2 = 0.0259我們也可以採用 test 命令執行 Wald 檢驗,在 Wald 檢驗下我們只需估計無限制模型即可。從以下檢驗結果可以看出變量 ses 對個體課程選擇 prog 的影響是顯著的。
test 2.ses 3.ses
( 1) [general]2.ses = 0
( 2) [academic]2o.ses = 0
( 3) [vocation]2.ses = 0
( 4) [general]3.ses = 0
( 5) [academic]3o.ses = 0
( 6) [vocation]3.ses = 0
Constraint 2 dropped
Constraint 5 dropped
chi2( 4) = 10.82
Prob > chi2 = 0.0287
3.3.2 組間無差異檢驗在某些情況下,解釋變量對兩個甚至多個組別的影響具有相近的效果。此時,需要進行「無差異檢驗」。同樣地,這一檢驗可以通過 Wald 檢驗和 LR 檢驗實現。
在本案例中,我們試圖檢驗虛擬變量 ses = 3 對於 general 組別和 vocation 組別的影響差異。Wald檢驗的結果顯示,ses = 3 對於 general 組別和 vocation 組別的影響是相近的。
test [general]3.ses = [vocation]3.ses
( 1) [general]3.ses - [vocation]3.ses = 0
chi2( 1) = 0.08
Prob > chi2 = 0.7811
3.4 預測概率值與概率值的圖形顯示我們可以通過預測個體在特定條件下的概率以幫助我們更好地解讀模型。我們通過執行margins命令獲得樣本內的預測概率。在本案例中,我們利用atmeans將除 ses 以外的其他變量設定為樣本均值,分別比較不同社會經濟地位 ses 對高中生選擇不同課程 prog 的預測概率。我們需要重複三次使用margins命令以得到 prog 中不同組別 ( general, median, vocation ) 層級分別對應的預測概率。此處省略輸出結果。
在呈現結果時,利用圖表來呈現會更加方便明了,因此我們採用marginsplot命令繪製了 ses 對不同 prog 類別的預測概率。其中marginsplot命令繪製的散點圖是基於前面執行的margins命令,如下圖所示。在繪製的同時我們對每一張圖表命名以便於後續的圖表合併,最終我們採用graph combine命令將三張圖表合併在一起,ycommon選項的添加能夠使三張圖表的 y 軸顯示範圍保持一致,從而使圖表更加美觀。
margins ses, atmeans predict(outcome(1))
marginsplot, name(general)
margins ses, atmeans predict(outcome(2))
marginsplot, name(academic)
margins ses, atmeans predict(outcome(3))
marginsplot, name(vocational)
graph combine general academic vocational, ycommon下文我們進一步考察連續變量 write 在不同取值情況下對應的平均預測概率,平均預測概率為不同 ses 層級對應的預測概率的平均值。主要輸出結果如下所示:
margins, at(write = (30(10) 70)) predict(outcome(1)) vsquish
Predictive margins Number of obs = 200
Model VCE : OIM
Expression : Pr(prog==general), predict(outcome(1))
1._at : write = 30
2._at : write = 40
3._at : write = 50
4._at : write = 60
5._at : write = 70
---
| Delta-method
| Margin Std. Err. z P>|z| [95% Conf. Interval]
---+----
_at |
1 | .2130954 .0774327 2.75 0.006 .0613302 .3648606
2 | .2569932 .0529761 4.85 0.000 .1531619 .3608245
3 | .2543008 .0336297 7.56 0.000 .1883878 .3202138
4 | .2057855 .0371536 5.54 0.000 .1329658 .2786052
5 | .1423089 .0481683 2.95 0.003 .0479007 .2367172
---
margins, at(write = (30(10) 70)) predict(outcome(2)) vsquish
Predictive margins Number of obs = 200
Model VCE : OIM
Expression : Pr(prog==academic), predict(outcome(2))
1._at : write = 30
2._at : write = 40
3._at : write = 50
4._at : write = 60
5._at : write = 70
---
| Delta-method
| Margin Std. Err. z P>|z| [95% Conf. Interval]
---+----
_at |
1 | .1348408 .0525979 2.56 0.010 .0317507 .2379308
2 | .2808143 .0553213 5.08 0.000 .1723867 .389242
3 | .4773283 .0397591 12.01 0.000 .399402 .5552547
4 | .6680752 .0434689 15.37 0.000 .5828776 .7532727
5 | .8075124 .0545504 14.80 0.000 .7005956 .9144291
---
margins, at(write = (30(10) 70)) predict(outcome(3)) vsquish
Predictive margins Number of obs = 200
Model VCE : OIM
Expression : Pr(prog==vocation), predict(outcome(3))
1._at : write = 30
2._at : write = 40
3._at : write = 50
4._at : write = 60
5._at : write = 70
---
| Delta-method
| Margin Std. Err. z P>|z| [95% Conf. Interval]
---+----
_at |
1 | .6520638 .0944041 6.91 0.000 .4670353 .8370924
2 | .4621925 .0614388 7.52 0.000 .3417747 .5826102
3 | .2683708 .0342932 7.83 0.000 .2011575 .3355842
4 | .1261393 .03019 4.18 0.000 .0669679 .1853107
5 | .0501787 .0216863 2.31 0.021 .0076744 .092683
---我們也可以通過圖形的方式更為清晰明了地顯示預測概率的結果。以下我們通過twoway命令繪製不同寫作水平 write 對應的各 ses 層級下的平均預測概率,具體輸出圖表如下所示。
predict p1 p2 p3
sort write
twoway (line p1 write if ses ==1) (line p1 write if ses==2) (line p1 write if ses ==3), ///
legend(order(1 "ses = 1" 2 "ses = 2" 3 "ses = 3") ring(0) position(7) row(1))
twoway (line p2 write if ses ==1) (line p2 write if ses==2) (line p2 write if ses ==3), ///
legend(order(1 "ses = 1" 2 "ses = 2" 3 "ses = 3") ring(0) position(7) row(1))
twoway (line p3 write if ses ==1) (line p3 write if ses==2) (line p3 write if ses ==3), ///
legend(order(1 "ses = 1" 2 "ses = 2" 3 "ses = 3") ring(0) position(7) row(1))
3.5 擬合優度對於 Logit 模型,我們採用 Pseudo-R2 評估線性模型的擬合優度,通常包括 McFadden’s R2、Maximum likelihood R2、Cragg & Uhler’s R2、Efron’s R2、AIC 和 BIC。mlogit命令的默認輸出結果為 McFadden’s R2。McFadden’s R2 也稱為似然比指數,其檢驗基本思想在於比較僅包含常數項的模型和包含所有解釋變量的模型之間的對數似然值的相對大小。該值越大表明模型的擬合程度越高。我們也可以採用fitstat命令列示其他衡量模型擬合優度的統計量。
fitstat
Measures of Fit for mlogit of prog
Log-Lik Intercept Only: -204.097 Log-Lik Full Model: -179.982
D(185): 359.963 LR(6): 48.230
Prob > LR: 0.000
McFadden's R2: 0.118 McFadden's Adj R2: 0.045
Maximum Likelihood R2: 0.214 Cragg & Uhler's R2: 0.246
Count R2: 0.545 Adj Count R2: 0.042
AIC: 1.950 AIC*n: 389.963
BIC: -620.225 BIC': -16.440
3.6 其他思考需要注意的是,多元 Logistic 模型採用最大似然法進行估計,並且具有聯立方程的特徵,因此與二元 Logistic 模型相較其對大樣本的要求更高。在某些情況下,雖然樣本容量足夠大,但卻無法收斂或得到的估計結果與理論預期嚴重偏離。這往往是因為數據還沒有很好的「淨化」。比如,變量的構造可能存在問題、部分離群值沒有得到很好的處理。此外,變量單位的選擇也是一個主要的原因:最大的標準差與最小的標準差之間的比值越大,問題就會越嚴重。參考文獻UCLA Institute for Digital Research & Education : MULTINOMIAL LOGISTIC REGRESSION | STATA DATA ANALYSIS EXAMPLES鍾經樊,連玉君,計量分析與 STATA 應用第十五章 Logistic 模型,版本 2.0,2010.6Rainer Winkelmann, Stefan Boes. Analysis of Microdata, Springer-Verlag Berlin Heidelberg, 2006.