Логіт із порядковими незалежними змінними


18

Чи є у моделі logit розумніший спосіб визначити ефект незалежної порядкової змінної, ніж використовувати манекенні змінні для кожного рівня?


Чи це не програмне забезпечення?

1
Різне програмне забезпечення може допускати різні варіанти, але на це слід відповісти принципово, ні?
fgregg

1
Гаразд, дурний коментар, вибач.

Відповіді:


16

Щоб додати відповідь @ dmk38, "будь-який набір балів дає дійсний тест за умови, що вони побудовані без консультацій з результатами експерименту. Якщо набір балів поганий, це погано спотворює числову шкалу, яка дійсно лежить в основі впорядкована класифікація, тест не буде чутливим. Оцінки, таким чином, повинні містити найкраще уявлення про спосіб побудови та використання класифікації ". (Cochran, 1954, цит. Agresti, 2002, с. 88-89). Іншими словами, трактувати впорядкований фактор як числову змінну - це лише питання моделювання. За умови, що це має сенс, це вплине лише на те, як ви інтерпретуєте результат, і немає остаточного правила щодо вибору найкращого представлення для порядкової змінної.

Розглянемо наступний приклад щодо споживання алкоголю у матері та наявності чи відсутності вроджених вад розвитку (Agresti, категоричний аналіз даних , табл. 3.7, с.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) не враховують упорядковані рівні споживання алкоголю.χ2

Розглядаючи обидві змінні як порядкові з однаково розташованими балами (це не впливає на бінарні змінні, як мальформація, і ми вибираємо базову лінію як 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)

χ2(1)=1.83p=0.1764M2=(n1)r2

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

Як видно, існує не так багато доказів чіткої зв'язку між двома змінними. Як робив Агресті, якщо ми вирішимо перекодувати рівні алкоголю як {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 із супутнім значенням р 0,01037.

ρr

Використовуючи підхід 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))

β^exp(θ^)=exp(0.228)=1.256. Тест Уолда не є значущим на рівні 5%. У цьому випадку проектна матриця включає лише 2 стовпчики: перший - це постійний стовпчик 1-х для перехоплення, другий - числове значення (1 - 5) для предиктора, як у простій лінійній регресії. Підсумовуючи, ця модель перевіряє лінійний вплив алкоголю на результат (за шкалою logit).

Однак у двох інших випадках ( mod1і mod2) ми отримуємо різні результати, оскільки матриця проектування, яка використовується для моделювання прогноктора, відрізняється, як це можна перевірити, використовуючи:

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

mod1k1mod2mod1mod2

Ви можете спробувати призначити нові показники алкоголю і подивитися, як це вплине на передбачувану ймовірність виникнення вад.


3
(+1) дуже ретельна відповідь. Я лише додам, що можна отримати тести, які передбачають лише монотонність співвідношення доза-відповідь без присвоєння балів порядковій змінній за допомогою ізотонічної регресії. Хоча для моделювання розподілу тестової статистики зазвичай потрібні методи моделювання чи перестановки під нуль. Дивіться Salanti & Ulm 2003 dx.doi.org/10.1002/bimj.200390012 .
onestop

@onestop Дякую за це посилання. Я подивлюсь на це.
chl

6

цілком чудово використовувати категоричний предиктор у моделі регресії logit (або OLS), якщо рівні рівні. Але якщо у вас є підстави розглядати кожен рівень як дискретний (або насправді ваша категорична змінна номінальна, а не порядкова), то, як альтернатива макетному кодуванню, ви також можете використовувати ортогональне контрастне кодування. Для дуже повної та доступної дискусії див. Judd, CM, McClelland, GH & Ryan, CS Аналіз даних: підхід порівняння моделі, Едн. 2-й. (Routledge / Taylor and Francis, New York, NY; 2008), або просто "контрастне кодування" в Google


Ви заявляєте, що нормально трактувати порядкові дані як інтервальні дані в моделі? Якщо так, то як я можу зрозуміти коефіцієнт, якщо я не знаю "відстань" між рівнями?
fgregg

3
Так. Коефіцієнт відображає зміну коефіцієнтів журналу для кожного приросту зміни порядкового предиктора. Ця (дуже поширена) модель специфікації передбачає, що передбачувач має лінійний вплив на всі його кроки. Щоб перевірити припущення, ви можете порівняти модель, в якій ви використовуєте порядкову змінну як єдиний предиктор, та ту, в якій ви дискретизуєте відповіді і трактуєте їх як численні предиктори (як би ви, якби змінна була номінальною); якщо остання модель не приводить до значно кращого пристосування, доцільно трактувати кожен приріст як лінійний ефект.
dmk38

Я даю вам +1, оскільки ця відповідь звучить чудово, і я думаю, що @fgregg зробив би те саме (з достатньою кількістю повторень).
chl

Я також думаю, що це ідеальний приклад, тому що зміна шансів журналу може бути інтерпретована порядковими змінними.
SmallChess
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.