आर में चरण-दर-चरण प्रतिगमन के लिए एक संपूर्ण मार्गदर्शिका


चरणबद्ध प्रतिगमन एक ऐसी प्रक्रिया है जिसका उपयोग हम मॉडल में चरण-दर-चरण तरीके से भविष्यवक्ताओं को दर्ज करने और हटाने के द्वारा भविष्यवक्ता चर के एक सेट से एक प्रतिगमन मॉडल बनाने के लिए कर सकते हैं जब तक कि इसमें प्रवेश करने या करने के लिए कोई सांख्यिकीय रूप से मान्य कारण न हो। अधिक हटाएं.

चरणबद्ध प्रतिगमन का लक्ष्य एक प्रतिगमन मॉडल बनाना है जिसमें सभी भविष्यवक्ता चर शामिल हैं जो सांख्यिकीय रूप से प्रतिक्रिया चर से महत्वपूर्ण रूप से संबंधित हैं।

यह ट्यूटोरियल बताता है कि आर में निम्नलिखित चरण-दर-चरण प्रतिगमन प्रक्रियाएं कैसे निष्पादित करें:

  • चरण दर चरण आगे चयन
  • चरण-दर-चरण पिछड़ा चयन
  • दोनों दिशाओं में चरण दर चरण चयन

प्रत्येक उदाहरण के लिए, हम अंतर्निहित mtcars डेटासेट का उपयोग करेंगे:

 #view first six rows of mtcars
head(mtcars)

                   mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3,460 20.22 1 0 3 1

हम प्रतिक्रिया चर के रूप में एमपीजी (मील प्रति गैलन) और संभावित भविष्यवक्ता चर के रूप में डेटा सेट में अन्य 10 चर का उपयोग करके एक एकाधिक रैखिक प्रतिगमन मॉडल फिट करेंगे।

प्रत्येक उदाहरण के लिए, हम चरणबद्ध चयन करने के लिए सांख्यिकी पैकेज के अंतर्निहित चरण() फ़ंक्शन का उपयोग करेंगे, जो निम्नलिखित सिंटैक्स का उपयोग करता है:

चरण (केवल अवरोधन मॉडल, दिशा, सीमा)

सोना:

  • केवल मूल मॉडल : केवल मूल मॉडल का सूत्र
  • दिशा: चरण खोज मोड “दोनों”, “पिछड़ा” या “आगे” हो सकता है।
  • दायरा: एक सूत्र जो उन भविष्यवक्ताओं को निर्दिष्ट करता है जिन्हें हम मॉडल में दर्ज करने का प्रयास करना चाहते हैं

उदाहरण 1: चरण-दर-चरण आगे चयन

निम्नलिखित कोड दिखाता है कि चरण दर चरण चयन कैसे करें:

 #define intercept-only model
intercept_only <- lm(mpg ~ 1, data=mtcars)

#define model with all predictors
all <- lm(mpg ~ ., data=mtcars)

#perform forward stepwise regression
forward <- step(intercept_only, direction=' forward ', scope= formula (all), trace=0)

#view results of forward stepwise regression
forward$anova

   Step Df Deviance Resid. Df Resid. Dev AIC
1 NA NA 31 1126.0472 115.94345
2 + wt -1 847.72525 30 278.3219 73.21736
3 + cyl -1 87.14997 29 191.1720 63.19800
4 + hp -1 14.55145 28 176.6205 62.66456

#view final model
forward$coefficients

(Intercept) wt cyl hp 
 38.7517874 -3.1669731 -0.9416168 -0.0180381 

नोट: ट्रेस = 0 तर्क आर को चरण-दर-चरण चयन के पूर्ण परिणाम प्रदर्शित नहीं करने के लिए कहता है। यदि बड़ी संख्या में भविष्यवक्ता चर हों तो यह बहुत अधिक स्थान ले सकता है।

यहां परिणामों की व्याख्या करने का तरीका बताया गया है:

  • सबसे पहले, हम केवल-इंटरसेप्ट मॉडल को फिट करते हैं। इस मॉडल का AIC 115.94345 था।
  • फिर हम सभी संभावित मॉडलों को एक भविष्यवक्ता के लिए फिट करते हैं। वह मॉडल जिसने सबसे कम एआईसी का उत्पादन किया और डब्ल्यूटी प्रेडिक्टर का उपयोग करने वाले बेसलाइन-ओनली मॉडल की तुलना में एआईसी में सांख्यिकीय रूप से महत्वपूर्ण कमी भी की। इस मॉडल का AIC 73.21736 था।
  • इसके बाद, हम सभी संभावित मॉडलों को दो भविष्यवक्ताओं के साथ फिट करते हैं। जिस मॉडल ने सबसे कम एआईसी का उत्पादन किया और एकल-भविष्यवक्ता मॉडल की तुलना में एआईसी में सांख्यिकीय रूप से महत्वपूर्ण कमी आई, उसने सिलेंडर भविष्यवक्ता को जोड़ा। इस मॉडल का AIC 63.19800 था।
  • इसके बाद, हम सभी संभावित मॉडलों को तीन भविष्यवक्ताओं में फिट करते हैं। जिस मॉडल ने सबसे कम एआईसी का उत्पादन किया और दो-भविष्यवक्ता मॉडल की तुलना में एआईसी में सांख्यिकीय रूप से महत्वपूर्ण कमी की, उसने एचपी भविष्यवक्ता को जोड़ा। इस मॉडल का AIC 62.66456 था।
  • इसके बाद, हम सभी संभावित मॉडलों को चार भविष्यवक्ताओं में फिट करते हैं। यह पता चला कि इनमें से किसी भी मॉडल ने एआईसी में महत्वपूर्ण कमी नहीं की, इसलिए हमने प्रक्रिया रोक दी।

अंतिम मॉडल यह निकला:

एमपीजी ~ 38.75 – 3.17*वजन – 0.94*सिलेंडर – 0.02*हाइप

उदाहरण 2: चरण-दर-चरण पिछड़ा चयन

निम्नलिखित कोड दिखाता है कि पीछे की ओर कैसे कदम बढ़ाया जाए:

 #define intercept-only model
intercept_only <- lm(mpg ~ 1, data=mtcars)

#define model with all predictors
all <- lm(mpg ~ ., data=mtcars)

#perform backward stepwise regression
backward <- step(all, direction=' backward ', scope= formula (all), trace=0)

#view results of backward stepwise regression
backward$anova

    Step Df Deviance Resid. Df Resid. Dev AIC
1 NA NA 21 147.4944 70.89774
2 - cyl 1 0.07987121 22 147.5743 68.91507
3 - vs 1 0.26852280 23 147.8428 66.97324
4 - carb 1 0.68546077 24 148.5283 65.12126
5 - gear 1 1.56497053 25 150.0933 63.45667
6 - drat 1 3.34455117 26 153.4378 62.16190
7 - available 1 6.62865369 27 160.0665 61.51530
8 - hp 1 9.21946935 28 169.2859 61.30730

#view final model
backward$coefficients

(Intercept) wt qsec am 
   9.617781 -3.916504 1.225886 2.935837

यहां परिणामों की व्याख्या करने का तरीका बताया गया है:

  • सबसे पहले, हम सभी पी भविष्यवक्ताओं का उपयोग करके एक मॉडल फिट करते हैं। इसे एम पी के रूप में परिभाषित करें।
  • फिर, k = p, p-1,…1 के लिए, हम सभी k मॉडल को फिट करते हैं जिसमें कुल k-1 भविष्यवक्ता चर के लिए M k में एक भविष्यवक्ता को छोड़कर सभी शामिल होते हैं। फिर इन k मॉडलों में से सर्वश्रेष्ठ को चुनें और इसे M k-1 नाम दें।
  • अंत में, हम AIC का उपयोग करके M 0 … M p में से एक सर्वोत्तम मॉडल चुनते हैं।

अंतिम मॉडल यह निकला:

एमपीजी ~ 9.62 – 3.92*वजन + 1.23*क्यूसेकंड + 2.94*एएम

उदाहरण 3: दोनों दिशाओं में चरण दर चरण चयन

निम्नलिखित कोड दिखाता है कि दोनों दिशाओं में चरण-दर-चरण चयन कैसे करें:

 #define intercept-only model
intercept_only <- lm(mpg ~ 1, data=mtcars)

#define model with all predictors
all <- lm(mpg ~ ., data=mtcars)

#perform backward stepwise regression
both <- step(intercept_only, direction=' both ', scope= formula (all), trace=0)

#view results of backward stepwise regression
both$anova

   Step Df Deviance Resid. Df Resid. Dev AIC
1 NA NA 31 1126.0472 115.94345
2 + wt -1 847.72525 30 278.3219 73.21736
3 + cyl -1 87.14997 29 191.1720 63.19800
4 + hp -1 14.55145 28 176.6205 62.66456

#view final model
both$coefficients

(Intercept) wt cyl hp 
 38.7517874 -3.1669731 -0.9416168 -0.0180381 

यहां परिणामों की व्याख्या करने का तरीका बताया गया है:

  • सबसे पहले, हम केवल-इंटरसेप्ट मॉडल को फिट करते हैं।
  • इसके बाद, हमने भविष्यवक्ताओं को क्रमिक रूप से मॉडल में जोड़ा, जैसा कि हमने चरण-दर-चरण चयन के लिए किया था। हालाँकि, प्रत्येक भविष्यवक्ता को जोड़ने के बाद, हमने उन सभी भविष्यवक्ताओं को भी हटा दिया जो अब मॉडल फिट में सुधार प्रदान नहीं करते थे।
  • हमने इस प्रक्रिया को तब तक दोहराया जब तक हमारे पास अंतिम मॉडल नहीं बन गया।

अंतिम मॉडल यह निकला:

एमपीजी ~ 9.62 – 3.92*वजन + 1.23*क्यूसेकंड + 2.94*एएम

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

अतिरिक्त संसाधन

प्रतिगमन ढलान के महत्व का परीक्षण कैसे करें
प्रतिगमन तालिका को कैसे पढ़ें और व्याख्या करें
प्रतिगमन में बहुसंरेखता के लिए एक मार्गदर्शिका

एक टिप्पणी जोड़ने

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *