क्या ऐसी कोई परिस्थितियां हैं जहां स्टेपवाइज रिग्रेशन का इस्तेमाल किया जाना चाहिए?


13

अतीत में कई बायोमेडिकल पेपर्स में स्टेपवाइज रिग्रेशन का इस्तेमाल किया गया था, लेकिन इसके कई मुद्दों की बेहतर शिक्षा के साथ इसमें सुधार हुआ है। कई पुराने समीक्षक हालांकि अभी भी इसके लिए पूछते हैं। ऐसी कौन सी परिस्थितियाँ हैं जहाँ स्टेप वाइज रिग्रेशन की भूमिका होती है और इसका उपयोग किया जाना चाहिए, यदि कोई हो?


6
कक्षाओं को पढ़ाने के दौरान मैं अक्सर इसका उपयोग इस विचार को दर्शाने के लिए करता हूं कि इसका उपयोग नहीं किया जाना चाहिए।
गूँग - मोनिका

1
(+1) धन्यवाद @ गुंग मैं एक सांख्यिकीविद् नहीं हूँ और मुझे यह पता चलने पर भी इसका बचाव करना मुश्किल है। मुझे यह विशेष रूप से कठिन लगता है क्योंकि 1) यह बहुत अच्छा और अक्सर उद्धृत पोस्ट बहुत अधिक विस्तार में नहीं जाता है और .... (ctd)
bobmcpop

2
(ctd) और 2) चरणवार के आलोचक अक्सर बड़ी संख्या में चरों या डेटा-माइनिंग से चयन के लिए ऐसा करते दिखते हैं। बायोमेडिकल दुनिया में, नमूना आकार की गणना अक्सर अपेक्षित कोवरिएट्स की संख्या को ध्यान में रखती है, ताकि पूर्ण मॉडल कभी भी शुरू करने के लिए बड़े न हों, और प्रत्येक संस्करण में पहले से ही कुछ "जैविक" कारण शामिल हो। क्या आपको लगता है कि इन परिस्थितियों में समान रूप से इस्तेमाल नहीं किया जाना चाहिए?
bobmcpop

3
मैं बायोमेडिकल रिसर्च के लिए सांख्यिकीय परामर्श करता हूं। मैं स्टेप वाइज इस्तेमाल नहीं करता। मेरे पास बहुत से लोगों ने नहीं पूछा है (वे मान सकते हैं कि मैं इसका उपयोग सिर्फ अगर यह उनकी परियोजना में मदद करेगा), लेकिन जब लोग पूछते हैं तो मैं उन्हें बताता हूं कि यह अमान्य है और क्यों बात करते हैं।
गूँग - मोनिका

जवाबों:


11

मुझे स्थितियों के बारे में जानकारी नहीं है, जिसमें चरणबद्ध प्रतिगमन पसंदीदा तरीका होगा। यह ठीक हो सकता है (विशेष रूप से इसके स्टेप-डाउन संस्करण में पूर्ण मॉडल से शुरू होता है) साथ अत्यंत बड़े डेटासेट पर संपूर्ण स्टेपवाइज प्रक्रिया के बूटस्ट्रैपिंग के साथ । यहाँ एक निरंतर परिणाम में टिप्पणियों की संख्या है (या अस्तित्व विश्लेषण में एक घटना के साथ रिकॉर्ड की संख्या ) सभी अनुमानित इंटरैक्शन सहित उम्मीदवार भविष्यवक्ताओं की संख्या है - अर्थात जब कोई भी छोटा प्रभाव बहुत स्पष्ट हो जाता है और इससे कोई फर्क नहीं पड़ता आपका मॉडल निर्माण कैसे होता है (इसका मतलब यह होगा कि कभी-कभी 20 के उद्धृत कारक की तुलना में काफी अधिक तुलना में बहुत बड़ा होगा )।n>>pnpnp

निश्चित रूप से अधिकांश लोगों को कुछ ऐसा करने के लिए लुभाया जाता है जैसे कि स्टेप वाइज रिग्रेशन,

  1. क्योंकि यह कम्प्यूटेशनल रूप से गहन नहीं है (यदि आप उचित बूटस्ट्रैपिंग नहीं करते हैं, लेकिन तब आपके परिणाम बहुत अविश्वसनीय हैं,
  2. क्योंकि यह स्पष्ट कटौती प्रदान करता है "मॉडल में है" बनाम "मॉडल में नहीं है" बयान (जो मानक स्टेपवाइज रिग्रेशन में बहुत अविश्वसनीय हैं; कुछ ऐसा जो उचित बूटस्ट्रैपिंग आमतौर पर स्पष्ट कर देगा ताकि ये कथन आमतौर पर इतना स्पष्ट न हो जाए);
  3. क्योंकि अक्सर छोटा होता है, करीब या उससे थोड़ा बड़ा होता है ।पीnp

यानी स्टेप वाइज रिग्रेशन जैसी कोई विधि (यदि इसकी अच्छी ऑपरेटिंग विशेषताएँ होती हैं) विशेष रूप से उन स्थितियों में आकर्षक होती हैं, जब इसमें ऑपरेटिंग ऑपरेटिंग विशेषताएँ नहीं होती हैं।


3
(+1) इसके अलावा स्टेप वाइज और संबंधित विधियाँ सुई-इन-ए-हिस्टैक स्थितियों में पूर्वानुमान मॉडल के लिए उपयुक्त हो सकती हैं, जब बहुत सारे गुणांक नगण्य होते हैं और त्रुटि विचरण के सापेक्ष कुछ बड़े होते हैं। से उदाहरण 3 देखें Tibshirani (1996), प्रतिगमन संकोचन और चयन कमंद के माध्यम से , JRSS बी , 58 , 1 - हालांकि यहां भी गैर नकारात्मक गला घोंटकर मार डालना जीत।
Scortchi - को पुनः स्थापित मोनिका

3
मैं पिछले पैराग्राफ को काफी नहीं समझ सकता। शायद यह rephrased हो सकता है? इसके अलावा, 3 के बारे में क्या है: मुझे प्रत्यक्ष तर्क दिखाई नहीं देता है, शायद कुछ का वहां अनुमान लगाना आसान है?
रिचर्ड हार्डी

1
अंतिम पैराग्राफ और (3) को स्पष्ट करने के लिए: लोग (3) की वजह से स्टेपवाइज का उपयोग करते हैं (यानी ऐसी स्थितियों से बचने के लिए जहां पूरा मॉडल भरना मुश्किल है या ) की ओर जाता है , लेकिन यह ठीक है जब यह एक भयानक तरीका होने जा रहा है । वे इसका उपयोग करते हैं, क्योंकि यह कम्प्यूटेशनल रूप से गहन नहीं है, लेकिन कुछ भी उपयोगी बाहर निकालने के लिए, आपको व्यापक बूटस्ट्रैपिंग करना होगा (इसलिए यह वास्तव में एक फायदा भी नहीं है)। और वे इसका उपयोग करते हैं, क्योंकि यह स्पष्ट व्याख्या देने के लिए लगता है, लेकिन अगर ठीक से किया जाए तो यह इतना स्पष्ट नहीं है और आप देखते हैं कि कितनी अनिश्चितता है (स्पष्ट व्याख्या = एक भ्रम)। pn
ब्योर्न

11

दो मामले जिनमें मुझे सौतेलेपन को देखकर कोई आपत्ति नहीं होगी

  1. अन्वेषणात्मक डेटा विश्लेषण
  2. भविष्य कहनेवाला मॉडल

इन दोनों ही महत्वपूर्ण उपयोग के मामलों में, आप पारंपरिक सांख्यिकीय अनुमान के बारे में इतने चिंतित नहीं हैं, इसलिए यह तथ्य कि पी-वैल्यू, आदि अब वैध नहीं हैं, थोड़ी चिंता का विषय है।

उदाहरण के लिए, यदि एक शोध पत्र में कहा गया है "हमारे पायलट अध्ययन में, हमने 1000 में से 3 दिलचस्प चर खोजने के लिए चरण-वार प्रतिगमन का उपयोग किया। नए डेटा के साथ एक अनुवर्ती अध्ययन में, हमने इन 3 दिलचस्प चर को दृढ़ता से सहसंबद्ध दिखाया। ब्याज के परिणाम ", मुझे चरण-वार प्रतिगमन के उपयोग से कोई समस्या नहीं है। इसी तरह, "हमने एक भविष्य कहनेवाला मॉडल बनाने के लिए चरण-वार प्रतिगमन का उपयोग किया। एमएसई के संबंध में हमारे होल्ड-आउट डेटा सेट में यह पूर्व-तैयार वैकल्पिक मॉडल एक्स मेरे साथ भी पूरी तरह से ठीक है।"

स्पष्ट होने के लिए, मैं यह नहीं कह रहा हूं कि इन समस्याओं से निपटने के लिए चरण-वार प्रतिगमन सबसे अच्छा तरीका है। लेकिन यह आसान है और आपको संतोषजनक समाधान दे सकता है।

संपादित करें:

टिप्पणियों में, एक सवाल है कि क्या स्टेप वाइज एआईसी वास्तव में भविष्यवाणी के लिए उपयोगी हो सकता है। यहां एक अनुकार है जो यह दिखाता है कि यह सभी कोवरिअट्स के साथ रैखिक प्रतिगमन से बहुत बेहतर कर रहा है, और लगभग क्रॉस-सत्यापन द्वारा चुने गए दंड के साथ लोचदार जाल भी है।

मैं इस अनुकार को चर्चा के अंत के रूप में नहीं लूंगा; ऐसे परिदृश्य के साथ आना बहुत मुश्किल नहीं है, जिसमें कदम-वार एआईसी खराब स्थिति का सामना करेगा। लेकिन यह वास्तव में एक अनुचित परिदृश्य नहीं है, और बिल्कुल ऐसी स्थिति है कि लोचदार जाल के लिए डिज़ाइन किया गया है (बहुत कम प्रभाव के साथ सहसंयोजकों के उच्च सहसंबंध)!

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: बड़ी समस्या पी-वैल्यू, आत्मविश्वास अंतराल का उपयोग कर रही है, स्टेप वाइज रिग्रेशन के बाद, जैसा कि आपने उद्धृत पेपर में बताया है। मॉडल केवल भविष्यवाणी के लिए उपयोग किया जाता है (न केवल भविष्यवाणियों के साथ मॉडल) आमतौर पर पी-मूल्यों के बारे में परवाह नहीं करते हैं, बल्कि यह भी कि आउट-ऑफ-सैंपल त्रुटि कितनी कम है।
क्लिफ एबी

1
@ ब्योर्न: ठीक है, जैसा कि मैंने अंत में कहा, मुझे नहीं लगता कि यह किसी भी तरह से ऐसा करने के लिए आम तौर पर सबसे अच्छा तरीका है। लेकिन यह अमान्य नहीं है, और आप उचित परिणामों के साथ समाप्त हो सकते हैं । इस प्रकार, यह वास्तव में ताकत है कि इसका उपयोग करना कितना आसान है: यदि आपके पास एक मॉडल है जो कोवरिएट्स लेता है और संभावनाएं देता है, तो आप चरण-वार एआईसी कर सकते हैं। आप LASSO जैसी किसी चीज के साथ बेहतर कर सकते हैं ... लेकिन हो सकता है कि यह कुछ फैंसी नया मॉडल हो या आप एक्सेल का उपयोग कर रहे हों।
क्लिफ एबी

4
(+1) मैंने कहा था कि glmnet को इस तरह की स्थिति, दूसरों के बीच, अपने स्ट्राइड में (जिसे यह लगता है) लेने के लिए डिज़ाइन किया गया था; जबकि संकोचन के बिना पूर्वसूचक चयन विधि विशेष रूप से इसके लिए अभ्यस्त हैं। कुछ बड़े और कई छोटे लोगों के बजाय "टैपिंग प्रभाव" होने पर दृष्टिकोण की तुलना करना दिलचस्प हो सकता है।
Scortchi - को पुनः स्थापित मोनिका

2
मैंने आपके कोड को पढ़ना आसान बना दिया है, और कोड फ़ाइल या कंसोल में कॉपी-पेस्ट करना आसान बना दिया है। मुझे उम्मीद है आप इसे पसंद करेंगे। यदि आप नहीं करते हैं, तो इसे वापस w / मेरे माफी के रोल करें।
गुंग - को पुनः स्थापित मोनिका
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.