Подтвердить что ты не робот

Многокомпонентные логистические многоуровневые модели в R

Проблема: Мне нужно оценить набор многолинейных логистических многоуровневых моделей и не найти подходящий пакет R. Каков наилучший пакет R для оценки таких моделей? STATA 13 недавно добавила эту функцию в свои многоуровневые модели смешанных эффектов, поэтому технология оценки таких моделей, по-видимому, доступна.

Детали:. Ряд вопросов исследования требует оценки моделей многомерных логистических регрессий, в которых переменная результата категорична. Например, биологам может быть интересно исследовать, какой тип деревьев (например, сосны, клены, дубы) сильнее всего подвержены кислотным дождям. Исследователям рынка может быть интересно, существует ли связь между возрастом клиентов и частотой покупок в Target, Safeway или Walmart. Эти случаи имеют общий характер, что переменная результата является категориальной (неупорядоченной), и многокомпонентные логистические регрессии являются предпочтительным методом оценки. В моем случае я изучаю различия в типах миграции людей, причем переменная результата (mig) кодируется 0 = не переносится, 1 = внутренняя миграция, 2 = международная миграция. Вот упрощенная версия моего набора данных:

migDat=data.frame(hhID=1:21,mig=rep(0:2,times=7),age=ceiling(runif(21,15,90)),stateID=rep(letters[1:3],each=7),pollution=rep(c("high","low","moderate"),each=7),stringsAsFactors=F)

   hhID mig age stateID pollution
1     1   0  47       a      high
2     2   1  53       a      high
3     3   2  17       a      high
4     4   0  73       a      high
5     5   1  24       a      high
6     6   2  80       a      high
7     7   0  18       a      high
8     8   1  33       b       low
9     9   2  90       b       low
10   10   0  49       b       low
11   11   1  42       b       low
12   12   2  44       b       low
13   13   0  82       b       low
14   14   1  70       b       low
15   15   2  71       c  moderate
16   16   0  18       c  moderate
17   17   1  18       c  moderate
18   18   2  39       c  moderate
19   19   0  35       c  moderate
20   20   1  74       c  moderate
21   21   2  86       c  moderate

Моя цель - оценить влияние возраста (независимой переменной) на вероятность (1) миграции внутри страны, а не миграции, (2) миграция на международном уровне, а не миграция, (3) миграция внутри страны или миграция на международном уровне. Дополнительным осложнением является то, что мои данные работают на разных уровнях агрегации (например, загрязнение работает на государственном уровне), и я также заинтересован в прогнозировании воздействия загрязнения воздуха (загрязнения) на вероятность приступить к определенному типу движения.

Неудобные решения: Можно было бы оценить набор отдельных моделей логистической регрессии, уменьшив набор данных для каждой модели только двумя типами миграции (например, модель 1: только случаи, закодированные mig = 0 и mig = 1; Модель 2: только коды, закодированные mig = 0 и mig = 2; Модель 3: только коды, закодированные mig = 1 и mig = 2). Такая простая многоуровневая модель логистической регрессии может быть оценена с помощью lme4, но этот подход менее идеален, поскольку он не учитывает должного учета влияния пропущенных случаев. Второе решение состояло бы в том, чтобы запустить многолинейные логистические многоуровневые модели в MLWiN через R, используя пакет R2MLwiN. Но поскольку MLWiN не является открытым исходным кодом, а сгенерированный объект трудно использовать, я бы предпочел избежать этого варианта. На основе всеобъемлющего интернет-поиска, похоже, существует некоторый спрос на такие модели, но я не знаю о хорошем R-пакете. Поэтому было бы здорово, если бы некоторые эксперты, которые запускали такие модели, могли дать рекомендацию, и если есть несколько пакетов, возможно, некоторые преимущества/недостатки. Я уверен, что такая информация будет очень полезным ресурсом для нескольких пользователей R. Спасибо!!

Бест, Рафаэль

4b9b3361

Ответ 1

Существует, как правило, два способа подгонки многомерных моделей категориальной переменной с J группами: (1) Одновременная оценка контрастов J-1; (2) Оценка отдельной логитной модели для каждого контраста.

Вывести эти два метода теми же результатами? Нет, но результаты часто похожи

Какой метод лучше? Одновременно подгонка точнее (см. ниже объяснение, почему)

Почему кто-то использует отдельные модели логита, тогда? (1) пакет lme4 не имеет подпрограммы для одновременного подбора многомерных моделей, и нет другого многоуровневого пакета R, который мог бы это сделать. Поэтому отдельные логит-модели в настоящее время являются единственным практическим решением, если кто-то хочет оценить многоуровневые многомерные модели в Р. (2) Как утверждают некоторые влиятельные статистики (Begg and Grey, 1984; Allison, 1984, стр. 46-47), отдельный логит модели намного более гибкие, поскольку они позволяют для независимой спецификации модельного уравнения для каждого контраста.

Является ли законным использовать отдельные модели logit? Да, с некоторыми отказами. Этот метод называется "Приближение Бегга и Грея". Бегг и Грей (1984, стр. 16) показали, что этот "индивидуализированный метод очень эффективен". Тем не менее, есть некоторая потеря эффективности, а приближение Бегга и Грея дает более крупные стандартные ошибки (Agresti 2002, стр. 274). Как таковой, получить этот результат сложнее, и результаты можно считать консервативными. Эта потеря эффективности наименьшая, когда эталонная категория велика (Begg and Grey, 1984; Agresti 2002). R, которые используют приближение Бегга и Грея (не многоуровневые), включают mlogitBMA (Севчикова и Рафтери, 2012).


Почему нечеткая серия отдельных моделей логита? В моем первоначальном примере мы имеем переменную (migration), которая может иметь три значения A (без миграции), B (внутренняя миграция), C (международная миграция). Имея только одну переменную прогнозирования x (возраст), мультиномиальные модели параметризуются как серия биномиальных контрастов следующим образом (Long and Cheng, 2004, стр. 277):

Eq. 1:  Ln(Pr(B|x)/Pr(A|x)) = b0,B|A + b1,B|A (x) 
Eq. 2:  Ln(Pr(C|x)/Pr(A|x)) = b0,C|A + b1,C|A (x)
Eq. 3:  Ln(Pr(B|x)/Pr(C|x)) = b0,B|C + b1,B|C (x)

Для этих контрастов должны иметь место следующие уравнения:

Eq. 4: Ln(Pr(B|x)/Pr(A|x)) + Ln(Pr(C|x)/Pr(A|x)) = Ln(Pr(B|x)/Pr(C|x))
Eq. 5: b0,B|A + b0,C|A = b0,B|C
Eq. 6: b1,B|A + b1,C|A = b1,B|C

Проблема состоит в том, что эти уравнения (уравнение 4-6) не будут выполняться точно, потому что коэффициенты оцениваются на основе немного разных выборок, поскольку используются только случаи из двух контрастных групп, а случаи из третьей группы опущены, Программы, которые одновременно оценивают мультиномиальные контрасты, убеждаются, что уравнение 4-6 (Long and Cheng, 2004, с. 277). Я точно не знаю, как это "одновременное" решение модели работает - может быть, кто-то может дать объяснение? Программное обеспечение, выполняющее одновременную установку многоуровневых многомерных моделей, включает MLwiN (Steele 2013, стр. 4) и STATA (команда xlmlogit, Pope, 2014).


Литература:

Агрести, А. (2002). Анализ категориальных данных (2-е изд.). Хобокен, Нью-Джерси: Джон Уайли и сыновья.

Allison, P. D. (1984). Анализ истории событий. Thousand Oaks, CA: Публикации Sage.

Begg, C. B. и Gray, R. (1984). Расчет параметров полихотомической логистической регрессии с использованием индивидуализированных регрессий. Биометрика, 71 (1), 11-18.

Long, S.J., Cheng S. (2004). Регрессионные модели для категориальных результатов. У М. Харди и А. Браймана (ред.), Справочник по анализу данных (стр. 258-285). Лондон: SAGE Publications, Ltd.

Папа, Р. (2014). В центре внимания: Встречайте новую команду xlmlogit Stata. Stata News, 29 (2), 2-3.

Севчикова, Х. и Рафтери, А. (2012). Оценка мультиномиальной логит-модели с использованием приближения Бегга и Грея.

Стил, Ф. (2013). Модуль 10: Одноуровневые и многоуровневые модели для концепций номинальных ответов. Бристоль, U.K,: Центр многоуровневого моделирования.

Ответ 2

Более старый вопрос, но я думаю, что недавно появился жизнеспособный вариант: brms, который использует байесовскую программу Stan для фактического запуска модели. Например, если вы хотите запустить многокомпонентную логистическую регрессию на iris данные:

b1 <- brm (Species ~ Petal.Length + Petal.Width + Sepal.Length + Sepal.Width,
           data=iris, family="categorical",
           prior=c(set_prior ("normal (0, 8)")))

И для получения порядковой регрессии - не подходит для iris, конечно - вы бы переключили family="categorical" на family="acat" (или cratio или sratio, в зависимости от типа ординального регрессию, которую вы хотите) и убедитесь, что зависимая переменная ordered.

Разъяснение для комментария Рафаэля: этот вызов brm компилирует вашу формулу и аргументы в Stan код. Стэн компилирует его в С++ и использует ваш системный компилятор С++ - что требуется. Например, на Mac вам может потребоваться установить бесплатные инструменты разработчика для получения С++. Не уверен в Windows. По умолчанию Linux должен иметь С++.)

Ответ 3

Я порекомендую вам использовать пакет "mlogit"

Ответ 5

Я озадачен тем, что эта техника описана как "стандартная" и "эквивалентная", хотя это вполне может быть хорошим практическим решением. (Полагаю, мне лучше проверить ссылки Эллисон и Добсона и Барнетта). Для простого многочленного случая (без кластеров, повторных измерений и т.д.) Бегг и Грей (1984) предлагают использовать биномиальные логики k-1 против ссылочной категории в качестве приближения (хотя и хорошего) во многих случаях до полномасштабного многочленного логита. Они демонстрируют некоторую потерю эффективности при использовании одной ссылочной категории, хотя она мала для случаев, когда в качестве эталона используется одна высокочастотная базовая категория. Agresti (2002: стр. 274) дает пример, когда наблюдается небольшое увеличение стандартных ошибок, даже если базовая категория составляет более 70% из 219 случаев в примере из пяти категорий.

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

Ссылки
Агрести, А. (2002). Анализ категориальных данных. Hoboken NJ: Wiley.

Begg, C. B. и Gray, R. (1984). Расчет параметров полихотомической логистической регрессии с использованием индивидуализированных регрессий. Биометрика, 71 (1), 11-18.

Ответ 6

Я имею дело с одной и той же проблемой, и одно из возможных решений, которое я нашел, похоже, прибегает к эквиваленту пуассоновского (логарифмического/счетного) мультиномиальной логистической модели, описанному в этом список рассылки, эти хорошие слайды или в Агрешти (2013: 353-356). Таким образом, должно быть возможно использовать функцию glmer(... family=poisson) из пакета lme4 с некоторой агрегацией данных.

Справка:
Агрешть, А. (2013) Анализ категориальных данных. Hoboken, NJ: Wiley.