Вибір змінних для включення в модель множинної лінійної регресії


35

В даний час я працюю над створенням моделі з використанням множинної лінійної регресії. Після познайомлення зі своєю моделлю я не знаю, як найкраще визначити, які змінні зберігати, а які видалити.

Моя модель розпочалася з 10 прогнозів для DV. При використанні всіх 10 предикторів чотири вважалися значущими. Якщо я видалю лише деякі явно невірні прогнози, то деякі мої прогнози, які спочатку не були значущими, набувають значущого значення. Що призводить мене до мого запитання: як можна визначитися, які прогноктори включати до своєї моделі? Мені здалося, ви повинні запустити модель один раз із усіма прогнозами, видалити ті, які не мають значного значення, а потім повторно запустити. Але якщо видалення лише деяких з цих провісників робить інших важливими, мені залишається цікаво, чи я неправильно підходжу до всього цього.

Я вважаю, що ця тема схожа на моє запитання, але я не впевнений, що я правильно інтерпретую дискусію. Можливо, це більше експериментальна тема дизайну, але, можливо, хтось має певний досвід, яким він може поділитися.


Відповідь на це сильно залежить від ваших цілей та вимог: ви шукаєте просту асоціацію чи прагнете прогнозування; наскільки ви високі в інтерпретації; чи є у вас інформація про змінні інших публікацій, які могли б вплинути на процес; як щодо взаємодій або транформатованих версій змінних: чи можете ви включити їх; і т. д. Вам потрібно вказати більше деталей щодо того, що ви намагаєтесь зробити, щоб отримати хорошу відповідь.
Нік Саббе

Виходячи з того, що ви запитували, це буде передбаченням. Вплив на інші змінні просто пропонує можливу асоціацію. Взаємодія між ними немає. Необхідно перетворити лише одне значення, і це було зроблено.
cryptic_star

1
Чи існує теорія, яка говорить про те, які предиктори ви повинні включати? Якщо у вас є багато вимірюваних вами змінних, і немає теорії, я рекомендую провести набір спостережень, щоб ви могли протестувати свою модель на даних, які не використовувались для її створення. Неправильно тестувати та перевіряти модель на одних і тих же даних.
Мішель

Перехресне підтвердження (як обговорює Нік Саббе), пеніалізовані методи (Дікран Марсупіал) або вибір змінних на основі попередньої теорії (Мішель) - всі варіанти. Але зауважте, що вибір змінних по суті є дуже складним завданням. Щоб зрозуміти, чому це так потенційно загрожує, може допомогти прочитати тут мою відповідь: алгоритми для автоматичного вибору моделі . Нарешті, варто визнати, що проблема полягає в логічній структурі цієї діяльності, а не в тому, чи комп'ютер робить це за вас автоматично, чи ви робите це вручну для себе.
gung - Відновіть Моніку

Перевірте також відповіді на це повідомлення: stats.stackexchange.com/questions/34769/…
jokel

Відповіді:


19

На основі вашої реакції на мій коментар:

Ви шукаєте прогнозування. Таким чином, вам не слід покладатися на (не) значення коефіцієнтів. Вам би краще

  • Виберіть критерій, який найкраще описує ваші потреби прогнозування (наприклад, показник пропуску класифікації, AUC ROC, певна форма їх із вагами, ...)
  • Для кожної моделі, що цікавить , оцініть цей критерій. Це можна зробити, наприклад, надавши набір валідацій (якщо вам пощастило чи багате), шляхом перехресної перевірки (як правило, десятикратної) або будь-яких інших варіантів, що дозволяють критерію інтересу. Якщо можливо, також знайдіть оцінку SE критерію для кожної моделі (наприклад, використовуючи значення для різних складок при перехресному оцінці)
  • Тепер ви можете вибрати модель з найкращим значенням критерію, хоча, як правило, рекомендується вибрати найбільш вразливу модель (найменші змінні), яка знаходиться в межах однієї SE найкращого значення.

Запишіть кожну цікаву модель : в цьому криється досить вагомий характер. Маючи 10 потенційних прогнокторів, це вантажівка потенційних моделей. Якщо у вас є час або процесори для цього (або якщо ваші дані досить малі, щоб моделі досить швидко підходили і оцінювались): отримайте бал. Якщо ні, то можна зробити це за допомогою освічених здогадок, моделювання вперед чи назад (але використовуючи критерій замість значущості), а ще краще: скористайтеся деяким алгоритмом, який підбирає розумний набір моделей. Один алгоритм, який це робить, - це пенізована регресія, зокрема регресія Лассо. Якщо ви використовуєте R, просто підключіть glmnet до пакету і ви готові до роботи.


+1, але ви могли б пояснити, чому саме ви б "вибрали найоригінальнішу модель (найменші змінні), яка знаходиться в межах однієї SE найкращого значення"?
rolando2

Для більшості ситуацій парсимозність є бажаною властивістю: вона підвищує інтерпретаційність і зменшує кількість вимірювань, які потрібно зробити новому суб'єкту для використання моделі. Інша сторона історії полягає в тому, що те, що ви отримуєте за своїм критерієм, - це лише оцінка, відповідність SE: Я бачив досить багато сюжетів, які показують оцінку критеріїв щодо деякого параметра налаштування, де значення "кращого" було просто винятковим пік. Таким чином, правило 1 SE (яке є довільним, але прийнятою практикою) захищає вас від цього додатковою вартістю надання більшої сили прихильності.
Нік Саббе

13

На це немає простої відповіді. Коли ви видалите деякі несуттєві пояснювальні змінні, інші, які співвідносяться з цими, можуть набути значущого значення. У цьому немає нічого поганого, але це робить вибір моделі хоча б частково мистецтвом, а не наукою. Ось чому експерименти спрямовані на те, щоб уникнути пояснених змінних, ортогональних для іншого, щоб уникнути цієї проблеми.

Традиційно аналітики робили поетапно додавання та віднімання змінних в модель по черзі (подібно до того, що ви робили) та тестуючи їх окремо або в малих групах з t або F тестами. Проблема в цьому полягає в тому, що ви можете пропустити якусь комбінацію змінних, щоб відняти (або додати), коли їх об'єднаний ефект (або неефект) прихований колінеарністю.

За допомогою сучасної обчислювальної потужності можливо підходити до всіх 2 ^ 10 = 1024 можливих комбінацій пояснювальних змінних та вибирати найкращу модель за одним із ряду можливих критеріїв, наприклад, AIC, BIC або прогнозованою потужністю (наприклад, здатність передбачати значення тестового підмножини даних, які ви відокремили від набору, який ви використовуєте для вашої моделі). Однак, якщо ви будете тестувати (неявно або явно) 1024 моделі, вам потрібно буде переосмислити свої p-значення від класичного підходу - ставитесь з обережністю ...


Дякуємо за високий рівень проходження плюсів і мінусів обох сторін. Це підтвердило багато того, про що я підозрював.
cryptic_star

11

Якщо вас цікавить тільки прогнозована ефективність, то, ймовірно, краще використовувати всі функції та використовувати регрес-регрес, щоб уникнути зайвого пристосування навчального зразка. Це, по суті, поради, наведені в додатку до монографії Міллара про "підбір підмножини в регресії" , тому він має розумний родовід!

Причиною цього є те, що якщо ви вибираєте підмножину на основі оцінки ефективності на основі фіксованого зразка даних (наприклад, AIC, BIC, перехресна перевірка тощо), критерій відбору матиме кінцеву дисперсію, і тому можливо перевиконання самого критерію відбору. Іншими словами, для початку, коли ви мінімізуєте критерій відбору, ефективність узагальнення покращиться, однак настане момент, коли чим більше ви зменшите критерій відбору, тим гіршим стає узагальнення. Якщо вам не пощастило, ви можете легко отримати регресійну модель, яка працює гірше, ніж ту, з якої ви почали (тобто модель із усіма атрибутами).

Це особливо ймовірно, коли набір даних невеликий (тому критерій вибору має велику дисперсію) і коли існує багато можливих варіантів вибору моделі (наприклад, вибір комбінацій функцій). Регуляризація, здається, менш схильна до надмірної підгонки, оскільки це скалярний параметр, який потрібно налаштовувати, і це дає більш обмежений погляд на складність моделі, тобто меншу кількість ефективних ступенів свободи, з якими можна перевиконати критерій відбору .


0

Використовуйте бібліотеку стрибків. Коли ви будуєте графічні змінні, вісь y показує R ^ 2, скориговану. Ви дивитесь, де ящики чорні на найвищому R ^ 2. Це покаже змінні, які слід використовувати для вашої множинної лінійної регресії.

Приклад вина нижче:

library(leaps)
regsubsets.out <-
  regsubsets(Price ~ Year + WinterRain + AGST + HarvestRain + Age + FrancePop,
         data = wine,
         nbest = 1,       # 1 best model for each number of predictors
         nvmax = NULL,    # NULL for no limit on number of variables
         force.in = NULL, force.out = NULL,
         method = "exhaustive")
regsubsets.out

#----When you plot wherever R^2 is the highest with black boxes,
#so in our case AGST + HarvestRain + WinterRain + Age and the dependent var.is Price----#
summary.out <- summary(regsubsets.out)
as.data.frame(summary.out$outmat)
plot(regsubsets.out, scale = "adjr2", main = "Adjusted R^2")

Це не дуже відрізняється від так званого вибору найкращих підмножин, у якого є відомі проблеми.
gung - Відновіть Моніку

leaps явно обчислює "кращі підмножини", хоча це не радить вам вибрати серед підмножини різного розміру. (Це питання між вами та вашим статистичним духовенством.)
steveo'america

Досить смішно, leapsзаснований на "коді FORTRAN77 Алана Міллера [...], який більш докладно описаний у його книзі" Вибір підмножини в регресії "", книзі, яку Дікран згадує в іншій відповіді на це питання :-)
jorijnsmit

0

Ви також можете використовувати функцію кроку в інформаційному критерії Akaike. Приклад нижче. https://en.wikipedia.org/wiki/Akaike_information_criterion

StepModel = step(ClimateChangeModel)

Покрокові методи відбору мають безліч відомих проблем. Це не гарна пропозиція.
gung - Відновіть Моніку

@consent з gung деякі проблеми обговорюються на stats.stackexchange.com/questions/69452/…
SIslam

-2

Чому б не зробити кореляційний аналіз Спочатку, а потім включити в регресію лише ті, що корелюються з ДВ?


2
Це, як правило, поганий спосіб вибору змінних, які слід вибрати, див. Наприклад, чи правильна кореляційна матриця для вибору предикторів для регресії? Кореляційний аналіз сильно відрізняється від множинної регресії, тому що в останньому випадку нам потрібно думати про "частковий випадок" (нахили регресії показують взаємозв'язок, коли враховуються інші змінні ), але кореляційна матриця цього не показує.
Срібна рибка


1
@GeneralAbrial Вона вражає мене , що це є відповіддю на питання, хоча і нетривалого один. Це не дуже вдале вирішення проблеми, але саме для цього потрібні зміни. (Я думаю, що "чому ні" призначений як риторичне запитання, а не запит на роз'яснення від автора.)
Срібна рибка

-4

Мій радник запропонував ще один можливий шлях до цього. Запустіть всі ваші змінні один раз, а потім видаліть ті, які не відповідають певному порогу (ми встановимо наш поріг як p <.25). Продовжуйте ітерацію таким чином, поки всі змінні не впадуть нижче цього значення .25, а потім повідомте про ті значущі значення.


1
Привіт Аллі, саме про це згадував @Peter Ellis у другому абзаці своєї відповіді. Його друге речення там висвітлює проблему, яку ця техніка вводить. Чи є у вас теорія, яка говорить про те, які провідники поставити у вашу модель?
Мішель

Так, @Michelle має право підкреслити відповідальність за цей підхід. Це може дати дуже довільні результати.
rolando2

Так, за всім стоїть теорія, яку ми сподіваємося розширити. Зокрема, ми дивимось, як взаємодіють певні соціальні сигнали (наприклад, мова). Ми усвідомлюємо, які з них роблять чи ні вже не мають змоги. Однак ми намагаємося надати більш дрібнозернисті версії. Отже, мова може бути розбита на питання, думку, оцінку тощо
cryptic_star

2
Гаразд, значить, ви робите дослідницький аналіз. :) Ви можете спробувати різні комбінації, але вам потрібно буде протестувати модель, в якій ви закінчились, на нових даних. За визначенням, з тим, що ви робите, у вас буде "найкраща" модель для ваших даних, але це може не спрацювати, якщо ви збираєте інший набір даних.
Мішель
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.