Logistic

帶有序數自變量的 Logit

  • December 11, 2010

在 logit 模型中,是否有比對每個級別使用虛擬變量更智能的方法來確定自序變量的影響?

添加到@dmk38 的回復中,“任何一組分數都給出了一個有效的測試,只要它們是在沒有諮詢實驗結果的情況下構建的。如果這組分數很差,因為它嚴重扭曲了真正構成基礎的數字量表。有序分類,測試將不敏感。因此,分數應該體現對分類的構建和使用方式的最佳洞察力。(Cochran,1954 年,由 Agresti 引用,2002 年,第 88-89 頁)。換句話說,將有序因子視為數字評分變量只是一個建模問題。只要有意義,這只會影響您解釋結果的方式,並且對於如何為序數變量選擇最佳表示沒有明確的經驗法則。

考慮以下關於母親飲酒和存在或不存在先天性畸形的例子(Agresti,分類數據分析,表 3.7 p.89):

           0    <1 1-2 3-5 6+
Absent  17066 14464 788 126 37
Present    48    38   5   1  1

在這種特殊情況下,我們可以使用邏輯回歸或簡單關聯表對結果進行建模。讓我們在 R 中進行:

tab3.7 <- matrix(c(17066,48,14464,38,788,5,126,1,37,1), nr=2,
                dimnames=list(c("Absent","Present"),
                              c("0","<1","1-2","3-5","6+")))
library(vcd)
assocstats(tab3.7)

通常(12.08,p=0.016751)或 LR(6.20,p=0.184562)統計(4 df)不考慮酒精消費的有序水平。

將兩個變量視為具有等間距分數的序數(這對二元變量沒有影響,例如畸形,我們選擇基線為 0=不存在),我們可以通過線性關聯測試線性關聯。讓我們首先構建這個列聯表的分解版本:

library(reshape)
tab3.7.df <- untable(data.frame(malform=gl(2,1,10,labels=0:1), 
                               alcohol=gl(5,2,10,labels=colnames(tab3.7))), 
                    c(tab3.7))
# xtabs(~malform+alcohol, tab3.7.df) # check

然後我們可以使用以下方法測試線性關聯

library(coin)
#lbl_test(as.table(tab3.7))
lbl_test(malform ~ alcohol, data=tab3.7.df)

產生和. 請注意,該統計數據只是兩個分數係列之間的相關性(Agresti 稱為),這很容易計算為

cor(sapply(tab3.7.df, as.numeric))[1,2]^2*(32574-1)

可以看出,沒有太多證據表明這兩個變量之間存在明確的關聯。正如 Agresti 所做的那樣,如果我們選擇將酒精水平重新編碼為 {0,0.5,1.5,4,7},即使用中間值作為假設的連續量表,而最後一個分數在某種程度上純粹是任意的,那麼我們會得出結論母親飲酒對先天性畸形發展的影響更大:

lbl_test(malform ~ alcohol, data=tab3.7.df,         
        scores=list(alcohol=c(0,0.5,1.5,4,7)))

產生的檢驗統計量為 6.57,相關的 p 值為 0.01037。

有其他編碼方案,包括midranks(在這種情況下,我們回退到 Spearman而不是皮爾遜(缺乏理論依據)。

使用 GLM 方法,我們將進行如下操作。但首先檢查酒精是如何在 R 中編碼的:

class(tab3.7.df$alcohol)

它是一個簡單的無序因子 ( "factor"),因此是一個名義預測因子。現在,這裡有三個模型,我們將酒精視為名義、有序或連續的預測因子。

summary(mod1 <- glm(malform ~ alcohol, data=tab3.7.df, 
                   family=binomial))
summary(mod2 <- glm(malform ~ ordered(alcohol), data=tab3.7.df, 
                   family=binomial))
summary(mod3 <- glm(malform ~ as.numeric(alcohol), data=tab3.7.df, 
                   family=binomial))

最後一種情況隱含地假設等間隔尺度,並且被解釋為@dmk38 所做的:它通過 logit 鏈接反映酒精增加一個單位對結果的影響,即觀察到畸形的概率增加(與沒有畸形相比,即優勢比)是. Wald 檢驗在通常的 5% 水平上不顯著。在這種情況下,設計矩陣僅包含 2 列:第一列是截距的 1 常量列,第二列是預測變量的數值(1 到 5),如簡單線性回歸中一樣。總之,該模型測試了酒精對結果的線性影響(在 logit 量表上)。

然而,在另外兩種情況(mod1mod2)中,我們得到不同的輸出,因為用於對預測變量建模的設計矩陣不同,可以使用以下方法進行檢查:

model.matrix(mod1)
model.matrix(mod2)

我們可以看到,相關的設計矩陣mod1包括虛擬變量在第一列中的截距項之後的酒精水平(0 始終是基線),而在mod2我們有四列對比編碼效果的情況下(在截距的 1 列之後)。類別“3-5”的係數估計為 1.03736 下mod1,但 0.01633 下mod2。請注意,這兩個模型之間的 AIC 和其他基於可能性的度量仍然相同。

您可以嘗試為酒精分配新分數,看看它將如何影響預測的畸形概率。

引用自:https://stats.stackexchange.com/questions/5387

comments powered by Disqus