Логит с порядковыми независимыми переменными

18

В логит-модели есть ли более умный способ определить влияние независимой порядковой переменной, чем использовать фиктивные переменные для каждого уровня?

fgregg
источник
Разве это не зависит от программного обеспечения?
1
Разное программное обеспечение может допускать разные варианты, но должен быть принципиальный ответ, нет?
fgregg
1
Хорошо, глупый комментарий, извините.

Ответы:

16

Чтобы добавить к ответу @ dmk38, «любой набор баллов дает действительный тест, при условии, что он составлен без учета результатов эксперимента. Если набор баллов плохой, то это сильно искажает числовую шкалу, которая действительно лежит в основе В соответствии с упорядоченной классификацией, тест не будет чувствительным. Поэтому оценки должны отражать лучшее понимание того, каким образом была построена и использована классификация ». (Cochran, 1954, процитировано Agresti, 2002, pp. 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,83пзнак равно0,1764M2знак равно(N-1)р2

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 со связанным значением р 0,01037.

Есть альтернативные схемы кодирования, в том числе midranks (в этом случае, мы падаем назад к Спирмену вместо Пирсона ) , что обсуждается на Agresti, но я надеюсь , что вы поймать общую идею здесь: Лучше всего , чтобы выбрать результаты , которые фактически отражают разумные меры расстояния между смежными категориями вашей порядковой переменной и равного расстояния часто являются хорошим компромиссом (при отсутствии теоретического обоснования).ρр

Используя подход 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, то есть увеличение вероятности наблюдения за уродством (по сравнению с отсутствием уродства, то есть отношения шансов) составляет . Тест Вальда не является значимым на обычном уровне 5%. В этом случае матрица проектирования включает в себя только 2 столбца: первый - это постоянный столбец из 1 для пересечения, второй - числовое значение (от 1 до 5) для предиктора, как в простой линейной регрессии. В целом, эта модель проверяет линейное влияние алкоголя на результат (по логит-шкале).β^ехр(θ^)знак равноехр(0,228)знак равно1,256

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

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

Мы можем видеть, что соответствующая матрица проектирования mod1включает в себя фиктивные переменные для уровней алкоголя (0 всегда является базовой линией) после термина перехвата в первом столбце, тогда как в случае у нас есть четыре столбца эффектов с контрастным кодированием (после столбца 1 для перехвата). Коэффициент для категории «3-5» оценивается в 1,03736 , а в 0,01633 - ниже . Обратите внимание, что AIC и другие основанные на вероятности меры остаются, однако, идентичными между этими двумя моделями.К-1mod2mod1mod2

Вы можете попытаться присвоить новые оценки Алкоголю и посмотреть, как это повлияет на прогнозируемую вероятность порока развития.

хл
источник
3
(+1) очень подробный ответ. Я бы только добавил, что можно получить тесты, которые предполагают только монотонность отношения доза-ответ, без присвоения баллов порядковой переменной с использованием изотонической регрессии. Хотя для получения распределения статистики теста обычно необходимы методы моделирования или перестановки. под нулевым. См. Salanti & Ulm 2003 dx.doi.org/10.1002/bimj.200390012 .
остановка
@onestop Спасибо за эту ссылку. Я посмотрю на это.
ЧЛ
6

совершенно нормально использовать категориальный предиктор в регрессионной модели логита (или OLS), если уровни являются порядковыми. Но если у вас есть причина считать каждый уровень дискретным (или если ваша категориальная переменная является номинальной, а не порядковой), то в качестве альтернативы фиктивному кодированию вы также можете использовать ортогональное контрастное кодирование. Для очень полной и доступной дискуссии см. Judd, CM, McClelland, GH & Ryan, CS. Анализ данных: подход сравнения моделей, Edn. Второй. (Рутледж / Тейлор и Фрэнсис, Нью-Йорк, Нью-Йорк; 2008), или просто Google "контрастное кодирование"

dmk38
источник
Вы хотите сказать, что порядковые данные в модели считаются нормальными? Если так, как я могу интерпретировать коэффициент, если я не знаю «расстояние» между уровнями?
fgregg
3
Да. Коэффициент отражает изменение логарифмических коэффициентов для каждого приращения изменения в порядковом предикторе. Эта (очень распространенная) спецификация модели предполагает, что предиктор оказывает линейное влияние на свои приращения. Чтобы проверить предположение, вы можете сравнить модель, в которой вы используете порядковую переменную в качестве единственного предиктора, с моделью, в которой вы дискретизируете ответы и рассматриваете их как несколько предикторов (как если бы переменная была номинальной); если последняя модель не приводит к значительно лучшей подгонке, то разумно рассматривать каждый шаг как имеющий линейный эффект.
dmk38
Я даю вам +1, потому что этот ответ звучит нормально, и я думаю, что @fgregg сделал бы то же самое (с достаточным количеством повторений).
хл
Я также думаю, что это прекрасный пример, потому что изменение шансов в журнале может интерпретироваться с помощью порядковых переменных.
SmallChess