Як запустити звичайний логістичний регресійний аналіз в 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 спостережень у 10 000 рядках даних, я б не надто потів це. Ви можете переглядати способи поводження з відсутніми даними, якщо вас цікавлять деякі інші особливості.

  4. Майже всі R моделі об'єктів ( lm, glm, lrm...) буде мати відповідну predict()функцію , яка дозволить вам розрахувати прогнозні значення для поточного модельного набору даних і додатково для іншого набору даних , який ви хочете , щоб передбачити результат для. Просто шукайте ?predict.glmабо ?predict.lmспробуйте отримати додаткову інформацію для того, який тип моделі ви хочете працювати. Це дуже типова річ, яку люди хочуть робити з моделями, тому будьте впевнені, що є деякі вбудовані функції та методи, які повинні зробити це досить просто.

Удачі!


2
  1. Так, розпорядження logit або probit було б з чого почати. Ось підручник із впорядкованого logit, який використовує R. Інші запитання щодо резюме, ймовірно, можуть допомогти вам у виконанні будь-яких корчів - спробуйте теги "logit", "probit" та "ordinal".

  2. Стандартний підхід до роботи з категоричною незалежною змінною з к Значення - це фіктивний код к-1двійкові значення. Це більш докладно пояснено тут , але коротко: Ефект однієї категорії підпадає під перехоплення, а коефіцієнти підходять до решти категорій. У вашому прикладі є фіктивна змінна caucasian, кодована кодом 1 для кавказького респондента, 0 в іншому випадку.

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

  4. Багато пакунків для моделювання мають якусь predictфункцію, і справді перший підручник, пов'язаний вище, включає демонстрацію.


Дуже дякую! Швидке спостереження №2: Це було моє основне припущення - але що за код, у ньому більше двох змінних? Наприклад, кавказька, чорна, латиноамериканська.
Райан

Досить ласкаво просимо! У цьому прикладі ви вибрали б одну категорію, щоб підписатись на перехоплення, скажімо latino, і манекенів для двох інших. Значення 1 для caucasianманекена вказує на кавказького респондента, аналогічне blackзмінній манекена. Значення 0 для обох вказує на респондента Latino. Мати сенс?
Шон Пасха

Тому я повинен просто змінити набір даних із одного стовпця з декількома відповідями ("чорний", "кавказький" та "латиноамериканський") на один "чорний" стовпчик з 1 та 0, один "кавказький" стовпчик з 1 і 0 і один стовпець "латиноамериканського" з 1 та 0?
Райан

Це один підхід, який буде добре працювати. Єдина відмінність від використання двох стовпців - це те, як ви інтерпретуєте перехоплення. Ви можете це зробити вручну, але я вважаю, що фактори R можуть впоратися з вами. Спробуйте це - це прогулянки, використовуючи фактори з подібним прикладом. Ура!
Шон Пасха

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