定序迴歸實戰

藍精靈村子新開了一家火鍋店,原來格格巫在自動售貨機上掙了一筆之後,又有了開餐館的想法了,他把村子外面流行的火鍋引入藍精靈村子,沒想到生意很火爆,藍精靈們經常要排很長的隊才能喫上格格巫家的火鍋。看着自家餐館門口長長的隊伍,隊伍裏藍精靈喫貨們既飢渴又不耐煩的眼神,格格巫心裏又欣喜,又擔憂。他尋思這隊伍太長了會不會影響了顧客們對就餐經歷的評價,於是琢磨着想研究一下排隊等待時間和客戶滿意度之間的關係。他在用餐結束之後發出滿意度問卷,同時記錄下每桌客人的等待時間和每桌客人的人數。數據蒐集完畢之後,格格巫便請藍精靈村的統計小天才聰聰來幫忙分析數據。

聰聰先從整體上分析了一下要解決的問題,他要研究的因變量是客戶滿意度,屬於定序變量(非常滿意>滿意>一般>不滿意>非常不滿意),正好可以用上最近新學的定序迴歸模型。至於模型的自變量,除了排隊的時間之外,還應該考慮客人是一個人還是和別人一塊兒來喫火鍋的。畢竟,如果是一個人的話,也許對等待的忍耐程度會更低一些。

有了大致的思路之後,聰聰就把數據整理了一下。由於聰聰關心的是一個因變量、兩個自變量,因此數據集大概是下面這樣的(僅列出頭四個數據點):

表 1 本集定序模型用到的數據集舉例

接下來,我們用定序迴歸模型來分析一下,等待時間和單人就餐這兩個因素是如何影響就餐滿意度的。依照上一集《只問方向,無問遠近,定序迴歸的執念你懂嗎?》講解過的模型形式,我們可以得到下面的模型:

要記住,上面的 Py≤非常不滿意、Py≤不滿意 指的是累積概率,即因變量顧客滿意度低於或等於某個特定級別(如「不滿意」)的概率。

我們把等待時間(連續變量)作爲因變量 x1,把單人就餐(二分類變量,1 代表是,0 代表不是)作爲 x2,利用統計軟件進行定序迴歸模型擬合,就可以擬合出模型中的參數(各回歸係數和截距)的極大似然估計值。這裏,我們使用的是免費開源軟件 R 裏面的 ordinal 程序包中的 clm 函數進行擬合,它輸出的結果如下(其他統計軟件的輸出形式也是大同小異的):

圖 1 R clm 函數輸出的定序迴歸模型擬合結果。紅框部分爲我們對最關心的迴歸係數估計,結果的翻譯對應表 2。藍框部分對應的是截距的估計結果,大部分時候截距的結果對結論並不是很重要。

表 2 迴歸係數擬合結果小結,我們在論文或者報告中彙報模型結果的時候需要給出表中的值,結果展示的形式可以參考投稿雜誌的要求,但是一般都要包括估計值、標準誤差以及 p 值 。

從上面的結果可以看出,等待時間和是否是單人就餐這兩個因素都對滿意度有顯著影響。我們還觀察到迴歸係數都是負的,說明等待時間越長或者是單人就餐都會顯著地減低喫火鍋的滿意度。一般統計軟件除了輸出自變量回歸係數的信息之外,還會顯示截距也就是 β非常不滿意 等的估計值,在定序迴歸裏面,截距有時也被稱爲閾值(threshold)或分界點(cut point)。

除了定性地知道自變量是否對因變量有顯著影響及其方向,我們還想定量地知道等待時間和單人就餐這兩個因素會是如何影響喫火鍋的滿意度的。要想更好地理解迴歸係數的含義,我們還得回到模型本身:

觀察上面式子的左邊,我們可以看到定序迴歸實際上是在預測因變量累積概率的分對數。通過模型擬合得到了迴歸模型的迴歸係數(β1,β2)和截距(β非常不滿意,β不滿意等)之後,我們可以運用下面的關係計算出 Py≤非常不滿意、Py≤不滿意 等累積概率的預測值:

以上的形式其實與之前講到的二分類以及多分類邏輯迴歸是一致的,只不過等式左邊的概率不再是 y 屬於某一類的概率,而是 y 小於等於某一個等級的概率,也就是 y 的累積概率。

由於因變量和兩個自變量之間的關係是非線性的,無法簡單地用「等待時間增加 x 分鐘,滿意度的累積概率會減小 y,這種我們熟悉的線性方式來描述因變量和自變量之間的關係。對於這樣的非線性關係,正是因爲它比較複雜,數學上最精確的表述也並不一定能讓人很容易理解。這時,用數據可視化的方式不僅可以幫助自己更好地理解模型,還能直觀有效地將數據建模的結論傳達給讀者。

我們下面就先聊一下用圖來展示定序迴歸結果的幾個要點。在將數據可視化時,咱們首先需要考慮的是 x 軸和 y 軸該是什麼。由於我們的目的是展示擬合的模型,軸一般就是模型的預測值,在定序迴歸裏就是滿意度的累計概率,共有五個:

Py≤非常不滿意、Py≤不滿意、Py≤一般、Py≤滿意、Py≤非常滿意

也就是說到時候作出的圖會有五條曲線,分別對應上面的五個累積概率。順道一提的是,非常滿意是可能出現的最高等級,所以因變量小於等於非常滿意的概率爲總是 1,即 Py≤非常滿意=1。

說完了 y 軸,再來看看 x 軸。統計模型的目的是定量地解釋自變量與因變量之間的關係,既然 y 軸對應的是因變量,那 x 軸自然就得是自變量了。

在這一集討論的例子裏面,有兩個自變量,選哪一個作爲 x 軸呢?一般會選擇連續變量形式的自變量,也就是例子裏的等待時間作爲 x 軸。這時,剩下來的那個類別變量的自變量該怎麼辦呢?通常的做法是針對每一個類別作一個圖,在這個例子裏面,我們針對非單人就餐(左圖)以及單人就餐(右圖)的情況分別做圖。這樣得到的圖形如下:

圖 2 用數據可視化的方法展示滿意度和等待時間以及是否單人就餐之間的關係。y 軸是累計概率,x 軸代表等待時間(分鐘)。左圖是非單人就餐,右圖是單人就餐。

首先,我們從上圖可以清晰地看到當等待時間增加的時候,滿意度小於等於特定值的概率是增加的,也就是說滿意度整體是下降的。

另外,由於定序迴歸模型中的特定假設,上圖裏面有兩個有趣的平移關係。首先,如果我們將每個圖裏的綠色曲線向右平移適當的量,便能與其它曲線完全重合。這其實是因爲曲線的「形狀」只和等待時間的迴歸係數 β1 的取值有關,而在我們的模型裏面,不同滿意度的累積概率所對應的迴歸係數 β1 的取值相同,才導致所有的累計概率曲線「形狀」相同。

上面提到的這個有意思的平移關係,其實是我們討論的定序迴歸模型的一個重要假設,所以這裏再囉嗦兩句。同一自變量在所有累計概率中的迴歸係數取值相等,這說明自變量改變一定的值時,「非常滿意」的累積概率和「不滿意」的累積概率的分對數改變的值是相同的, 這稱之爲比例優勢(Proportional odds)假設,對應的模型也可以稱之爲「比例優勢模型」。

第二個有趣的平移關係是,如果將左圖也就是非獨自就餐的預測值整體都向左平移

19.9,就能完全與右圖重合。對爲什麼感到好奇的小朋友可以看下面的推導:

這第二個平移關係用人話說就是:從就餐滿意程度而言,單人喫火鍋等十分鐘就餐,和多個人喫火鍋等三十分鐘就餐,效果是一樣的。 而且,在等待相同時間的情況下,單人就餐的滿意度整體是小於多個人喫火鍋的滿意度——看來藍精靈們也喜歡人多一塊喫火鍋!

需要注意的是,在這一集的例子裏面,我們並沒有假設兩個自變量之間有交互效應,如果加上交互效應的話,第二層平移關係就不存在了,而第一層的平移關係會保留。

最後,如果我們不僅想知道累積概率,還想知道y取特定滿意程度的概率是如何隨着自變量的變化而變化的,我們只要將圖二稍做變換即可。由累計概率的定義,我們知道:

根據這一關係,我們很快便能將 y 取特定滿意程度的概率與自變量的關係繪製出來,如下圖:

圖 3 用數據可視化的方法展示滿意度和等待時間以及是否單人就餐之間的關係。y 軸是 y 取特定滿意程度的概率,x 軸代表等待時間(分鐘)。左圖是非單人就餐,右圖是單人就餐。

從上圖裏面可以清晰地看出,當等待時間增加式,非常滿意的概率在逐漸減低,而不滿意的概率在逐漸增高。

除了用作圖的方法,之前在《邏輯迴歸的嫋娜曲線,你是否會過目難忘?》學到的除四法則也能幫助我們迅速地估計自變量對因變量的影響。除 4 法則是說,在對自變量變化最敏感的區域,自變量每增加一個單位,累計概率變化值約等於迴歸係數除以 4。在上面的例子裏面,等待時間的迴歸係數是 -0.09,等待時間每增加 10 分鐘,P滿意度≤a 增加了 0.09×10/4=0.225,這裏的 a 可以是任何一個滿意程度。也就是說等待時間增加 10 分鐘時,對於特定的滿意程度,最多有 22.5% 的顧客的滿意程度會從高於某個滿意程度變成低於這個滿意程度。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章