Чи є обставини, коли слід застосовувати поетапну регресію?


13

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


6
Я часто використовую це під час викладання уроків, щоб проілюструвати думку про те, що його не слід використовувати.
gung - Відновіть Моніку

1
(+1) Дякую @gung Я не статистик і мені важко було це захистити, хоча я знаю, що це правильно. Мені це особливо важко, тому що 1) ця дуже хороша та часто цитується публікація не надто детально цитується і .... (
ctd

2
(ctd) та 2) критики поетапно часто здаються, що вони роблять це для вибору з великої кількості змінних або обміну даними. У біомедичному світі обчислення розмірів вибірки часто враховують кількість очікуваних коваріатів, так що повні моделі ніколи не будуть такими великими, і кожен вар вже має певні «біологічні» причини, які слід включити. Чи вважаєте ви, що в цих умовах поетапно не слід застосовувати однаково?
bobmcpop

3
Я роблю статистичний консалтинг для біомедичних досліджень. Я не використовую поетапно. У мене не було багатьох людей, які запитують (вони можуть припустити, що я б просто скористався цим, якщо це допоможе їхньому проекту), але коли люди запитують, я їм кажу, що це недійсно, і говорити про те, чому.
gung - Відновіть Моніку

Відповіді:


11

Мені невідомі ситуації, в яких ступінчаста регресія була б кращим підходом. Це може бути добре (особливо у його спадної версії, починаючи з повної моделі) із завантаженням всього ступінчастого процесу на надзвичайно великих наборах даних з . Тут - кількість спостережень за безперервним результатом (або кількість записів із подією в аналізі виживання) - кількість кандидатів-прогнокторів, включаючи всі розглянуті взаємодії, тобто коли будь-які навіть невеликі ефекти стають дуже зрозумілими, і це не має значення як ви будуєте свою модель моделювання (це означатиме, що буде набагато більшим, ніж ніж значно більшим, ніж іноді цитується коефіцієнт 20).п р п рn>>pnpnp

Звичайно, причина більшості людей спокушається зробити щось на кшталт поетапної регресії,

  1. тому що це не обчислювально інтенсивно (якщо ви не зробите належну завантажувальну систему, але тоді ваші результати досить ненадійні),
  2. тому що це забезпечує чітке вирізання "є в моделі" проти "не в моделі" тверджень (які є дуже ненадійними в стандартній покроковій регресії; те, що правильне завантажувальне записування зазвичай стане зрозумілим, так що ці твердження, як правило, не будуть настільки чіткими) і
  3. тому що часто менший, близький або просто трохи більший за .рnp

Тобто такий метод, як ступінчаста регресія, був би особливо привабливим у тих ситуаціях, коли він не має хороших експлуатаційних характеристик.


3
(+1) Також ступінчасті та пов’язані з цим методи можуть бути доречними для прогнозних моделей у ситуаціях з голкою в сіні, коли велика кількість коефіцієнтів незначна і лише декілька великих щодо дисперсії помилок. Див. Приклад 3 з Tibshirani (1996), зменшення регресії та вибір через Lasso , JRSS B , 58 , 1 - хоча навіть тут виграє негативна гаротка.
Scortchi

3
Я не можу зовсім зрозуміти останній абзац. Можливо, це можна перефразувати? Крім того, як щодо 3 .: Я не бачу прямого аргументу, можливо, щось там можна зробити легко?
Річард Харді

1
Для уточнення останнього абзацу та (3): Люди використовують поступово через (3) (тобто, щоб уникнути ситуацій, коли встановлення повної моделі є важким або призводить до ), але саме тоді це буде жахливим методом . Вони використовують його, оскільки він не є обчислювально інтенсивним, але щоб отримати щось корисне, вам доведеться зробити велику завантажувальну програму (так що це теж не є перевагою). І вони використовують його, бо, здається, дають чітку інтерпретацію, але якщо це зробити правильно, це не так зрозуміло, і ви бачите, скільки існує невизначеності моделі (чітка інтерпретація = ілюзія). pn
Бьорн

11

Два випадки, коли я не заперечую проти поступової регресії, - це

  1. Дослідницький аналіз даних
  2. Прогнозні моделі

В обох цих дуже важливих випадках використання ви не так переймаєтесь традиційним статистичним висновком, тому факт, що p-значення тощо, вже не є дійсними, мало хвилює.

Наприклад, якщо в дослідницькому документі сказано: "У нашому пілотному дослідженні ми використовували поетапну регресію для пошуку 3 цікавих змінних з 1000. У подальшому дослідженні з новими даними ми показали, що ці 3 цікаві змінні сильно корелюються з результат інтересу ", я б не мав жодних проблем із застосуванням поетапної регресії. Аналогічно, "Ми використовували поетапну регресію для побудови прогнозної моделі. Ця позаформована альтернативна модель X у нашому наборі даних про витримку щодо MSE" також повністю зі мною.

Щоб було зрозуміло, я не кажу, що поетапна регресія - це найкращий спосіб вирішити ці проблеми. Але це легко і може дати вам задовільні рішення.

Редагувати:

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

Я б не сприймав це моделювання як закінчення дискусії; не надто складно придумати сценарій, коли покрокова АПК буде гіршою. Але це насправді не необґрунтований сценарій, а саме тип ситуації, для якої створені еластичні сітки (висока кореляція коваріатів з дуже невеликими великими ефектами)!

library(leaps)
library(glmnet)
nRows <- 1000
nCols <- 500

# Seed set For reproducibility. 
# Try changing for investigation of reliability of results
set.seed(1)

# Creating heavily correlated covariates
x_firstHalf  <- matrix(rnorm(nRows * nCols / 2), nrow = nRows)
x_secondHalf <- x_firstHalf + 0.5 * 
                matrix(rnorm(nRows * nCols / 2), nrow = nRows) 
x_mat        <- cbind(x_firstHalf, x_secondHalf) + rnorm(nRows)

# Creating beta's. Most will be of very small magnitude
p_large = 0.01
betas <- rnorm(nCols, sd = 0.01) + 
         rnorm(nCols, sd = 4) * rbinom(nCols, size = 1, prob = p_large)
y     <- x_mat %*% betas + rnorm(nRows, sd = 4)

all_data           <- data.frame(y, x_mat)
colnames(all_data) <- c('y', paste('x', 1:nCols, sep = '_'))

# Holding out 25% of data for validation
holdout_index <- 1:(nRows * .25) 
train_data    <- all_data[-holdout_index, ]
validate_data <- all_data[holdout_index, ]

mean_fit <- lm(y ~ 0, data = train_data)
full_fit <- lm(y ~ ., data = train_data)
step_fit <- step(mean_fit, 
                 scope = list(lower = mean_fit, upper = full_fit), 
                 direction = "forward", steps = 20, trace = 0)

glmnet_cvRes <- cv.glmnet(x = as.matrix(train_data[,-1]), 
                          y = as.numeric(train_data$y)   )

full_pred   <- predict(full_fit, validate_data)
step_pred   <- predict(step_fit, validate_data)
glmnet_pred <- predict(glmnet_cvRes, as.matrix(validate_data[,-1]), s='lambda.min')

sd(full_pred - validate_data$y)    # [1] 6.426117
sd(step_pred - validate_data$y)    # [1] 4.233672
sd(glmnet_pred - validate_data$y)  # [1] 4.127171
# Note that stepwise AIC does considerably better than using all covariates 
# in linear regression, and not that much worse than penalized methods
# with cross validation!!

Бічна примітка:

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


2
У яких інших сценаріях він зазвичай використовується (в біомедичній літературі), крім цих двох показань? Я натрапив на його використання лише для прогнозних моделей, але це не радиться, наприклад .
bobmcpop

5
@bobmcpop: велика проблема полягає у використанні p-значень, довірчих інтервалів після покрокової регресії, про що йдеться у цитованій роботі. Моделі, що використовуються виключно для прогнозування (не лише моделі з прогнозовами), як правило, не цікавляться значеннями p, а лише наскільки зменшується помилка поза вибіркою.
Кліф АВ

1
@ Björn: Ну, як я вже говорив наприкінці, я не думаю, що це взагалі найкращий спосіб зробити це будь-якими засобами. Але це не є недійсним, і, можливо, ви отримаєте розумні результати. Таким чином, його сила справді є настільки простою у використанні: якщо у вас є модель, яка приймає коваріати і повертає ймовірності, ви можете зробити поетапний AIC. Можливо, вам вдасться зробити краще з чимось на кшталт LASSO ... але ви можете цього не зробити, якщо це якась нова фантазійна модель або ви використовуєте Excel.
Кліф АВ

4
(+1) Я б сказав, що glmnet був розроблений для того, щоб урегулювати подібну ситуацію, серед інших, у своєму кроці (що, здається); тоді як методи вибору предиктора без усадки особливо пристосовані до цього. Можливо, буде цікаво порівняти підходи, коли є "звужуючі ефекти", а не кілька великих та багатьох крихітних.
Scortchi

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