Как запустить анализ Порядковой Логистической Регрессии в R с обоими числовыми / категориальными значениями?

17

Базовые данные : у меня ~ 1000 человек помечены оценками: «1», «хорошо», «2», «средний» или «3» [плохо »- это те значения, которые я пытаюсь предсказать для людей в будущем , В дополнение к этому, у меня есть некоторая демографическая информация: пол (категориальный: M / F), возраст (числовой: 17-80) и раса (категориальный: черный / кавказец / латиноамериканец).

У меня в основном четыре вопроса:

  1. Первоначально я пытался запустить набор данных, описанный выше, как анализ множественной регрессии. Но недавно я узнал, что, поскольку мой иждивенец является упорядоченным фактором, а не непрерывной переменной, я должен использовать порядковую логистическую регрессию для чего-то подобного. Сначала я использовал что-то вроде mod <- lm(assessment ~ age + gender + race, data = dataset): кто-нибудь может указать мне правильное направление?

  2. Оттуда, предполагая, что я получаю коэффициенты, с которыми мне комфортно, я понимаю, как подключать только числовые значения для x1, x2 и т. Д., Но как мне поступить с расой, например, когда есть несколько ответов: черный / кавказский / латино? Так что, если он говорит мне, что кавказский коэффициент равен 0,289, а кто-то, кого я пытаюсь предсказать, является кавказцем, как мне подключить это обратно, так как значение не числовое?

  3. У меня также есть случайные значения, которые отсутствуют - некоторые для расы, некоторые для пола и т. Д. Нужно ли делать что-то дополнительное, чтобы убедиться, что это ничего не искажает? (Я заметил, когда мой набор данных загружается в R-Studio, когда недостающие данные загружаются как NA, R говорит что-то вроде (162 observations deleted due to missingness)- но если они загружаются как пустые места, это ничего не делает.)

  4. Предполагая, что все это работает, и у меня есть новые данные с полом, возрастом и расой, на которых я хочу предсказать - есть ли в R более простой способ выполнить все это через то, что окажется моей формулой с новыми коэффициентами, а не делать это вручную? (Если этот вопрос здесь не подходит, я могу вернуть его на форум R.)

Райан
источник

Ответы:

16

Вот небольшая информация, которая может указать вам правильное направление.

Что касается ваших данных, то у вас есть ответ с несколькими категориями, и каждый раз, когда вы пытаетесь смоделировать ответ, который является категоричным, вы вправе попытаться использовать некоторый тип обобщенной линейной модели (GLM). В вашем случае у вас есть дополнительная информация, которую вы должны принять во внимание в отношении вашего ответа, и это то, что ваши уровни ответа имеют естественный порядок хороший> средний> плохой, обратите внимание, как это отличается от попытки смоделировать ответ, например, какой цветовой шар скорее всего, купить (красный / синий / зеленый), эти значения не имеют естественного порядка. При выполнении модели этого типа с упорядоченным ответом вы можете рассмотреть возможность использования модели пропорциональных коэффициентов.

http://en.wikipedia.org/wiki/Ordered_logit

Я не использовал его сам, но polr()функция в пакете MASS, вероятно, будет lrm()полезна , или я использовал функцию в пакете rms для выполнения аналогичных видов анализа и нашел ее весьма полезной. Если вы загружаете эти пакеты, просто используйте ?polrили ?lrmдля получения информации о функции.

Достаточно хорошо, на ваши вопросы:

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

  2. Каждый раз, когда у вас есть ковариата, которая является категоричной (раса / пол / цвет волос), вы хотите рассматривать их как «факторы» в своем кодировании R для того, чтобы соответствующим образом смоделировать их. Важно знать, что такое фактор и как с ним обращаться, но по сути вы рассматриваете каждую категорию как отдельный уровень, а затем моделируете их соответствующим образом. Просто ознакомьтесь с факторами в моделях, и вы сможете понять, что происходит. Имейте в виду, что обработка категориальных переменных как факторов не уникальна для моделей glm или моделей пропорциональных шансов, но, как правило, все модели работают с категориальными переменными. http://www.stat.berkeley.edu/classes/s133/factors.html

  3. Пропущенные значения иногда могут быть проблемой, но если вы делаете довольно простой анализ, то, вероятно, безопасно просто удалить строки данных, которые содержат пропущенные значения (это не всегда так, но на основании вашего текущего уровня опыта я догадываясь, вам не нужно беспокоиться о специфике, когда и как бороться с пропущенными значениями). На самом деле это в значительной степени то, что делает R. Если у вас есть данные, которые вы используете для моделирования, если вам не хватает информации в строке для вашего ответа или любой ковариат в модели R просто собирается исключить эти данные (это предупреждение, которое вы видите). Очевидно, что если вы исключаете большую часть ваших данных из-за пропусков, ваши результаты могут быть предвзятыми, и, вероятно, будет полезно попытаться получить дополнительную информацию о том, почему так много пропущенных значений, но если вы Если бы я пропустил 162 наблюдения в 10000 строк данных, я бы не стал слишком сильно их беспокоить. Вы можете найти способы обработки недостающих данных, если вас интересуют некоторые дополнительные особенности.

  4. Почти все объекты модели R (lm , glm, lrm...) будет иметь соответствующую predict()функцию , которая позволит вам рассчитать прогнозные значения для текущего модельного набора данных и дополнительно для другого набора данных , который вы хотите , чтобы предсказать исход для. Просто найдите ?predict.glmили ?predict.lmпопробуйте получить дополнительную информацию о модели, с которой вы хотите работать. Это очень типичная вещь, которую люди хотят делать с моделями, поэтому будьте уверены, что есть некоторые встроенные функции и методы, которые должны сделать это относительно простым.

Удачи!

Стив Рено
источник
2
  1. Да, заказанный логит или пробит будет с чего начать. Вот учебник по упорядоченному logit, в котором используется R. Другие вопросы CV, вероятно, могут помочь вам с любыми затруднениями, с которыми вы столкнулись - попробуйте теги «logit», «probit» и «ordinal».

  2. Стандартный подход к работе с категориальной независимой переменной с К значения, чтобы фиктивный код это как К-1двоичные значения. Это более подробно объясняется здесь , но вкратце: эффект одной категории включается в пересечение, а коэффициенты подгоняются к остальным категориям. В вашем примере была бы фиктивная переменная, caucasianкоторая была бы закодирована в 1 для респондента-кавказца, в противном случае - в 0.

  3. Работа с отсутствующими данными очень сильно зависит от имеющейся проблемы, и, да, то, как вы поступите с отсутствующими данными, может привести к смещению. Этот отрывок из книги хорошо описывает четыре механизма, которые могут создавать недостающие данные, которые должны помочь вам рассмотреть потенциальное смещение в вашей собственной проблеме. (В частности, раздел 25.1, стр. 530.)

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

Шон Пасха
источник
Спасибо! Быстрое продолжение # 2: это было мое основное предположение - но какой код в нем больше двух переменных? Например, кавказец, черный, латино.
Райан
Добро пожаловать! В этом примере вы бы выбрали одну категорию для включения в точку пересечения, скажем latino, и макеты для двух других. Значение 1 для caucasianманекена указывает на кавказского респондента, аналогичного для blackфиктивной переменной. Значение 0 для обоих указывает на латиноамериканского респондента. Есть смысл?
Шон Пасха
Поэтому я должен просто изменить набор данных с одного столбца с несколькими ответами («черный», «кавказский» и «латино») на один «черный» столбец с 1 и 0, один «кавказский» столбец с 1 и 0 и один столбец «латино» с 1 и 0?
Райан
Это один подход, который будет работать нормально. Единственное отличие от использования двух столбцов заключается в том, как вы интерпретируете перехват. Вы можете сделать это вручную, но я считаю, что факторы в R могут справиться с этим за вас. Попробуйте это - он использует факторы с похожим примером. Ура!
Шон Пасха
1
Ссылка на учебник не работает. Если кто-то может это исправить, это было бы здорово!
Дэн Хикс