Чи є у моделі logit розумніший спосіб визначити ефект незалежної порядкової змінної, ніж використовувати манекенні змінні для кожного рівня?
Чи є у моделі logit розумніший спосіб визначити ефект незалежної порядкової змінної, ніж використовувати манекенні змінні для кожного рівня?
Відповіді:
Щоб додати відповідь @ 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) не враховують упорядковані рівні споживання алкоголю.
Розглядаючи обидві змінні як порядкові з однаково розташованими балами (це не впливає на бінарні змінні, як мальформація, і ми вибираємо базову лінію як 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)
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.
Використовуючи підхід 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))
. Тест Уолда не є значущим на рівні 5%. У цьому випадку проектна матриця включає лише 2 стовпчики: перший - це постійний стовпчик 1-х для перехоплення, другий - числове значення (1 - 5) для предиктора, як у простій лінійній регресії. Підсумовуючи, ця модель перевіряє лінійний вплив алкоголю на результат (за шкалою logit).
Однак у двох інших випадках ( mod1
і mod2
) ми отримуємо різні результати, оскільки матриця проектування, яка використовується для моделювання прогноктора, відрізняється, як це можна перевірити, використовуючи:
model.matrix(mod1)
model.matrix(mod2)
mod1
mod2
mod1
mod2
Ви можете спробувати призначити нові показники алкоголю і подивитися, як це вплине на передбачувану ймовірність виникнення вад.
цілком чудово використовувати категоричний предиктор у моделі регресії logit (або OLS), якщо рівні рівні. Але якщо у вас є підстави розглядати кожен рівень як дискретний (або насправді ваша категорична змінна номінальна, а не порядкова), то, як альтернатива макетному кодуванню, ви також можете використовувати ортогональне контрастне кодування. Для дуже повної та доступної дискусії див. Judd, CM, McClelland, GH & Ryan, CS Аналіз даних: підхід порівняння моделі, Едн. 2-й. (Routledge / Taylor and Francis, New York, NY; 2008), або просто "контрастне кодування" в Google