आर में स्टेपवाइज रिग्रेशन - यह कैसे काम करता है?


15

मैं स्टेप फंक्शन का उपयोग करके आर में स्टेप वाइज और बैकवर्ड रिग्रेशन के बीच के मूल अंतर को समझने की कोशिश कर रहा हूं। स्टेप वाइज रिग्रेशन के लिए मैंने निम्न कमांड का उपयोग किया

  step(lm(mpg~wt+drat+disp+qsec,data=mtcars),direction="both")

उपरोक्त कोड के लिए मुझे नीचे आउटपुट मिला।

आगे

पिछड़े चर चयन के लिए मैंने निम्नलिखित कमांड का उपयोग किया

 step(lm(mpg~wt+drat+disp+qsec,data=mtcars),direction="backward")

और मुझे पिछड़े के लिए निम्न आउटपुट मिला

पिछड़ा

जब तक मैंने समझा है कि जब कोई पैरामीटर निर्दिष्ट नहीं किया जाता है, तो स्टेपवाइज चयन तब तक पिछड़े के रूप में कार्य करता है जब तक कि पैरामीटर "ऊपरी" और "निचला" आर में निर्दिष्ट नहीं किया जाता है। फिर भी स्टेप वाइज चयन के आउटपुट में, एक + विवाद है जो इसमें जोड़ा गया है दूसरा चरण। स्टेप वाइज सिलेक्शन में फिर से + को जोड़कर फंक्शन को हासिल करने की क्या कोशिश है? R, 2nd चरण में + विवाद क्यों जोड़ रहा है जबकि परिणाम समान (AIC मान और मॉडल चयन मान) पिछड़े चयन के रूप में हैं। आर बिल्कुल स्टेप वाइज सिलेक्शन में कैसे काम कर रहा है?

मैं वास्तव में समझना चाहता हूं कि यह फ़ंक्शन आर में कैसे काम कर रहा है। मदद के लिए अग्रिम धन्यवाद!

जवाबों:


17

शायद यह समझना आसान होगा कि सभी 15 संभावित एलएम मॉडल को देखकर स्टेपवाइज रिग्रेशन कैसे किया जा रहा है।

यहाँ सभी 15 संयोजनों के लिए सूत्र उत्पन्न करने के लिए एक क्विक है।

library(leaps)
tmp<-regsubsets(mpg ~ wt + drat + disp + qsec, data=mtcars, nbest=1000, really.big=T, intercept=F)
all.mods <- summary(tmp)[[1]]
all.mods <- lapply(1:nrow(all.mods, function(x)as.formula(paste("mpg~", paste(names(which(all.mods[x,])), collapse="+"))))

head(all.mods)
[[1]]
mpg ~ drat
<environment: 0x0000000013a678d8>

[[2]]
mpg ~ qsec
<environment: 0x0000000013a6b3b0>

[[3]]
mpg ~ wt
<environment: 0x0000000013a6df28>

[[4]]
mpg ~ disp
<environment: 0x0000000013a70aa0>

[[5]]
mpg ~ wt + qsec
<environment: 0x0000000013a74540>

[[6]]
mpg ~ drat + disp
<environment: 0x0000000013a76f68>

प्रत्येक मॉडल के लिए AIC मान को इसके साथ निकाला जाता है:

all.lm<-lapply(all.mods, lm, mtcars)

sapply(all.lm, extractAIC)[2,]
 [1]  97.98786 111.77605  73.21736  77.39732  63.90843  77.92493  74.15591  79.02978  91.24052  71.35572
[11]  63.89108  65.90826  78.68074  72.97352  65.62733

चलो अपने कदम-प्रतिगमन पर वापस जाएं। Lm के लिए extractAIC मान (mpg ~ wt + drat + disp + qsec) 65.63 (ऊपर की सूची में मॉडल 15 के बराबर) है।

यदि मॉडल डिस्प्रेशन (-disp) हटाता है, तो lm (mpg ~ wt + drat + qsec) 63.891 (या सूची में मॉडल 11) है।

यदि मॉडल कुछ भी नहीं निकालता है (कोई नहीं), तो एआईसी अभी भी 65.63 है

यदि मॉडल qsec (-qsec) को हटाता है, तो lm (mpg ~ wt + drat + disp) 65.908 (मॉडल 12) है।

आदि।

मूल रूप से सारांश आपके पूर्ण मॉडल से एक-टर्म के सभी संभावित स्टेपवाइज हटाने को प्रकट करता है और उन्हें आरोही क्रम में सूचीबद्ध करके extractAIC मान की तुलना करता है। चूंकि छोटा AIC मान TRUTH मॉडल से मिलता जुलता है, इसलिए स्टेप एक में (-disp) मॉडल को बनाए रखें।

प्रक्रिया को फिर से दोहराया जाता है, लेकिन प्रारंभिक बिंदु के रूप में बनाए रखा (-disp) मॉडल के साथ। मॉडल की तुलना की अनुमति देने के लिए शर्तों को या तो घटाया जाता है ("पीछे की ओर") या घटाया / जोड़ा ("दोनों")। चूँकि तुलना में सबसे कम AIC मूल्य अभी भी (-disp) मॉडल, प्रोसेस स्टॉप और परिणामी मॉडल दिए गए हैं।

अपनी क्वेरी के संबंध में: "स्टेप वाइज सिलेक्शन में फिर से + डिसप्ले को जोड़कर फंक्शन को प्राप्त करने की क्या कोशिश है?", इस मामले में, यह वास्तव में कुछ भी नहीं करता है, सभी 15 मॉडलों में सबसे अच्छा मॉडल 11 मॉडल है , यानी lm (mpg ~ wt + drat + qsec)।

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

उम्मीद है कि इस तरह से मदद मिलेगी।


6
"चूंकि छोटे AIC मान TRUTH मॉडल के समान होने की अधिक संभावना है" सीधे-सीधे गलत है। स्टेप-वाइज मॉडल बिल्डिंग झूठी भविष्यवाणियों को बनाए रखने की उतनी ही संभावना है जितनी कि सच्ची भविष्यवाणियों को अस्वीकार करने के लिए ... अन्य समस्याओं के एक मेजबान के बीच: आंकड़े.stackexchange.com/questions/115843/…
एलेक्सिस

2
जाहिर है कि यह झूठ है। इसीलिए एकल मापदंड (जैसे स्टेप वाइज रिग्रेशन) के आधार पर मॉडल का चयन एक टैड भोलापन है।
एडम क्यूक

@ अलेक्सिस लिंक में आपके उत्तर में आपकी सिफारिशों को पसंद करता है।
एडम क्यूक

3

यहाँ एक सरल प्रतिक्रिया। सबसे पहले, दोनों प्रक्रियाएं किसी दिए गए मॉडल के एआईसी को कम करने की कोशिश करती हैं, लेकिन वे इसे अलग-अलग तरीकों से करते हैं। फिर, मूल अंतर यह है कि पिछड़ी चयन प्रक्रिया में आप केवल किसी भी चरण में मॉडल से चर को छोड़ सकते हैं, जबकि चरणबद्ध चयन में आप मॉडल में चर भी जोड़ सकते हैं।

चरणवार चयन में आउटपुट के बारे में, सामान्य रूप से आउटपुट से पता चलता है कि आपने अपने AIC को कम करने के लिए विकल्प का आदेश दिया है, इसलिए किसी भी चरण में पहली पंक्ति आपका सबसे अच्छा विकल्प है। फिर, +dispतीसरी पंक्ति में एक है क्योंकि उस चर को अपने मॉडल में जोड़ना आपके एआईसी को कम करने के लिए आपका तीसरा सबसे अच्छा विकल्प होगा। लेकिन जाहिर है, जैसा कि आपका सबसे अच्छा विकल्प है <none>, इसका मतलब है कि कुछ भी नहीं करना, प्रक्रिया बंद हो जाती है और आपको पिछड़े चयन के समान परिणाम देती है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.