मुख्य सामग्री पर जाएँ

सिंपल लीनियर रिग्रेशन: जो कुछ आपको जानना चाहिए

सिंपल लीनियर रिग्रेशन सीखें। मॉडल समीकरण में महारत हासिल करें, प्रमुख मान्यताएँ और डायग्नोस्टिक्स समझें, और परिणामों की प्रभावी व्याख्या करना सीखें।
· 7 मि॰ पढ़ें

AI के साथ खोजें

सिंपल लीनियर रिग्रेशन सांख्यिकी और मशीन लर्निंग का सबसे बुनियादी मॉडल है — दो चर के बीच संबंध को परखते समय डेटा विश्लेषक का पहला औजार। इसलिए, यदि आप डेटा विश्लेषक या डेटा वैज्ञानिक बनने को लेकर गंभीर हैं, तो सिंपल लीनियर रिग्रेशन (और सामान्यतः रिग्रेशन) में महारत हासिल करना महत्वपूर्ण है।

रिग्रेशन सीखने लायक इसलिए भी है कि यह लगभग हर क्षेत्र के जरूरी सवालों के जवाब देने की अमूल्य तकनीक है, और यह परिकल्पना परीक्षण, कॉज़ल इन्फरेंस, और फोरकास्टिंग जैसी कई अन्य चीज़ों की गहरी समझ के द्वार खोलता है। तो आज ही हमारा Introduction to Regression in R कोर्स और हमारा Introduction to Regression with statsmodels in Python कोर्स लें।

TL;DR

  • सिंपल लीनियर रिग्रेशन 1 स्वतंत्र चर और 1 सतत आश्रित चर के बीच संबंध को सीधी रेखा से मॉडल करता है: ŷ = b0 + b1x
  • कोएफिशिएंट b0 (इंटरसेप्ट) और b1 (स्लोप) को ऑर्डिनरी लीस्ट स्क्वेर्स (OLS) से अनुमानित किया जाता है, जो स्क्वेयर्ड रेजिडुअल्स के समुच्चय को न्यूनतम करता है
  • 4 मुख्य मान्यताएँ लागू होनी चाहिए: रैखिकता, त्रुटियों की स्वतंत्रता, होमोसकेडैस्टिसिटी, और रेजिडुअल्स की नॉर्मैलिटी
  • Python में, ML पाइपलाइनों के लिए scikit-learn का LinearRegression या p-वैल्यू और कॉन्फिडेंस इंटरवल्स के लिए statsmodels का OLS उपयोग करें
  • R में, lm() मॉडल फिट करता है और summary(model) पूरी रिग्रेशन टेबल देता है
  • फिट का आकलन R² (समझाई गई वैरिएंस का अनुपात) और RMSE (मूल इकाइयों में प्रेडिक्शन त्रुटि) से करें

सिंपल लीनियर रिग्रेशन क्या है? 

सिंपल लीनियर रिग्रेशन वह रिग्रेशन है जिसमें एक स्वतंत्र चर (explanatory variable) और एक आश्रित चर (response variable) होता है। सिंपल लीनियर रिग्रेशन में आश्रित चर सतत होता है। 

ऑर्डिनरी लीस्ट स्क्वेर्स एस्टीमेटर 

सिंपल लीनियर रिग्रेशन करने का सबसे आम तरीका ऑर्डिनरी लीस्ट स्क्वेर्स (OLS) एस्टीमेशन है। क्योंकि OLS बहुत दूर तक सबसे प्रचलित विधि है, इसलिए जब हम सिंपल लीनियर रिग्रेशन की बात करते हैं तो “ऑर्डिनरी लीस्ट स्क्वेर्स” अक्सर निहित होता है।

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

सिंपल लीनियर रिग्रेशन का उपयोग कैसे होता है

सिंपल लीनियर रिग्रेशन भविष्यवाणियाँ करने और संबंधों को समझने में मदद करता है — एक स्वतंत्र चर और एक आश्रित चर के बीच। उदाहरण के लिए, आप जानना चाह सकते हैं कि पेड़ की ऊँचाई (स्वतंत्र चर) उसके पत्तों की संख्या (आश्रित चर) को कैसे प्रभावित करती है। डेटा इकट्ठा करके और सिंपल लीनियर रिग्रेशन मॉडल फिट करके, आप पेड़ की ऊँचाई के आधार पर पत्तों की संख्या का अनुमान लगा सकते हैं। यह ‘भविष्यवाणी’ वाला हिस्सा है। पर यह तरीका यह भी बताता है कि जैसे-जैसे पेड़ ऊँचा होता है, औसतन पत्तों की संख्या कितनी बदलती है — यानी संबंधों को समझने में भी सिंपल लीनियर रिग्रेशन का उपयोग होता है।  

सिंपल लीनियर रिग्रेशन का समीकरण

आइए सिंपल लीनियर रिग्रेशन के समीकरण पर नज़र डालें। हम ज्यामिति या बीजगणित की पुस्तकों में प्रचलित ढलान-इंटरसेप्ट रूप से शुरू कर सकते हैं। यानी, बिलकुल आरंभ से शुरू करेंगे।

slope-intercept equation

यहाँ

  • m रेखा की ढलान (slope) है
  • b इंटरसेप्ट है

डेटा साइंस के संदर्भ में, आप इसकी बजाय यह समीकरण अधिक देखते हैं: 

simple linear regression equation

जहाँ

  • b0 y-इंटरसेप्ट है 
  • b1 ढलान (slope) है

यह संकेतन b0 और b1 यह दर्शाने में मदद करता है कि हम y का प्रेडिक्शन कर रहे हैं, इसलिए इसे ŷ या y-hat कहते हैं, क्योंकि हमें उम्मीद नहीं कि हमारी रिग्रेशन रेखा सभी बिंदुओं से होकर गुज़रेगी। 

निम्न विज़ुअलाइज़ेशन बाएँ तरफ रेखा के ढलान-इंटरसेप्ट रूप और दाएँ तरफ रिग्रेशन समीकरण के वैचारिक अंतर को दिखाता है। लीनियर अल्जebra की भाषा में, हम कहते हैं कि समीकरणों की प्रणाली overdetermined है, यानी अज्ञातों (दो) की तुलना में समीकरण (करीब तीस) अधिक हैं, इसलिए समाधान मिलने की उम्मीद नहीं।

slope-intercept form vs. simple linear regressionढलान-इंटरसेप्ट रूप बनाम सिंपल लीनियर रिग्रेशन समीकरण। चित्र: लेखक

सिंपल लीनियर रिग्रेशन मॉडल के कोएफिशिएंट

यदि हम केवल ढलान-इंटरसेप्ट समीकरण का उपयोग करते, तो हम पहले “राइज़ ओवर रन” से m (ढलान) और b (y-इंटरसेप्ट) निकालते — यानी रेखा के दो बिंदुओं के बीच y में परिवर्तन को x में परिवर्तन पर मापते। फिर ढलान मिलने के बाद, रेखा के एक बिंदु के निर्देशांकों को समीकरण में रखकर b के लिए हल करते। यह कदम वह बिंदु देता है जहाँ रेखा y-अक्ष को काटती है।

रिग्रेशन में यह काम नहीं करता क्योंकि कोई ऐसी रेखा नहीं जो सभी बिंदुओं से गुज़रे, इसलिए हम लाइन ऑफ बेस्ट फिट खोजते हैं। ढलान और इंटरसेप्ट दोनों के लिए क्लोज़्ड-फॉर्म समीकरण होते हैं।

ढलान की गणना, सहसंबंध r को आश्रित चर y के मानक विचलन और स्वतंत्र चर x के मानक विचलन के अनुपात से गुणा करके की जा सकती है। यह सहज है क्योंकि हम मूल चर की इकाइयों में सहसंबंध गुणांक को “लौटा” रहे हैं। नीचे के समीकरण में a ढलान को संदर्भित करता है और sy तथा sx क्रमशः y और x के मानक विचलन को।

simple linear regression slope equation

लाइन ऑफ बेस्ट फिट का इंटरसेप्ट ढलान ज्ञात होने के बाद निकाला जा सकता है। यह हम y के औसत से ढलान और x के औसत के गुणनफल को घटाकर करते हैं। नीचे के समीकरण में i y-इंटरसेप्ट को संदर्भित करता है और x और y के ऊपर बनी क्षैतिज रेखा क्रमशः उनके औसत को दर्शाती है; इन्हें x-bar और y-bar कहते हैं।

simple linear regression intercept equation

सम्पूर्णता के हित में, हम इन समीकरणों को लिखने के वैकल्पिक तरीकों का भी अन्वेषण कर सकते हैं। याद रखें कि मानक विचलन, वैरिएंस के वर्गमूल के बराबर होता है, तो y और x के मानक विचलन के बजाय हम उनके वैरिएंस के वर्गमूल का उल्लेख भी कर सकते हैं। वैरिएंस स्वयं, याद रहे, सम ऑफ स्क्वेयर्स का औसत है। 

ऊपर ढलान के लिए दिए समीकरण में a के संदर्भ में, हम sy और sx को मानक विचलन के रूप में भी लिख सकते हैं, और सहसंबंध r के विस्तृत रूप को भी लिख सकते हैं। फिर हम क्रॉस-मल्टिप्लाई करके सामान्य पद हटाकर समीकरण को सरल बना सकते हैं और ढलान व इंटरसेप्ट के निम्न सेट तक पहुँच सकते हैं। बात यह है कि आप किसी भी रूप को देखें — दोनों समान हैं। 

simple linear regression slope and intercept equations

यहाँ एक और दिलचस्प परिणाम यह है कि सिंपल लीनियर रिग्रेशन की रेखा केंद्रीय बिंदु — यानी x और y के औसत — से होकर गुज़रती है। दूसरे शब्दों में, सिंपल लीनियर रिग्रेशन स्वतंत्र और आश्रित दोनों चर के औसत पर प्रतिच्छेद करता है, भले ही डेटा बिंदुओं का वितरण कैसा भी हो — यही इसे एक तरह का ‘संतुलन’ गुण देता है।

सिंपल लीनियर रिग्रेशन के कोएफिशिएंट खोजने के अतिरिक्त तरीके 

हमने सुंदर समीकरणों से कोएफिशिएंट निकालना देखा। अब हम लीनियर अल्जebra और कैल्कुलस पर आधारित कुछ अन्य तरीकों को विस्तार से देखेंगे। प्रोग्रामिंग परिवेश, खासकर, उन्नत तकनीकों से हल करते हैं क्योंकि वे तेज़ और अधिक सटीक होते हैं (वैरिएंस निकालने के लिए स्क्वेयरींग करने की बात सटीकता घटा सकती है)।

  • लीनियर अल्जebra: सिंपल लीनियर रिग्रेशन के कोएफिशिएंट खोजने के कुछ लीनियर अल्जebra-आधारित तरीके हैं। हम नॉर्मल इक्वेशन हल करके कोएफिशिएंट पा सकते हैं। बड़े डेटा सेट पर यह कुछ अनुचित हो सकता है क्योंकि इसमें मैट्रिक्स इनवर्ज़न शामिल है, जो महंगा हो सकता है। एक और तरीका QR डीकंपोज़िशन है, जिसमें इनवर्ज़न नहीं होता और यह संख्यात्मक रूप से स्थिर माना जाता है।
  • कैल्कुलस: हम ढलान और इंटरसेप्ट को सम ऑफ स्क्वेयर्ड एरर्स (SSE) के ढलान और इंटरसेप्ट के सापेक्ष आंशिक अवकलज लेकर, उन्हें शून्य के बराबर रखकर कोएफिशिएंट्स के लिए हल कर सकते हैं। एक और विकल्प, जो कैल्कुलस से जुड़ा है, ग्रेडिएंट डिसेंट है — यह एक आवर्ती अनुकूलन तकनीक है जो SSE को न्यूनतम कर ढलान और इंटरसेप्ट निकाल सकती है। ग्रेडिएंट डिसेंट कैल्कुलस से इसीलिए जुड़ा है क्योंकि यह ग्रेडिएंट पर निर्भर करता है, जो आंशिक अवकलजों का वेक्टर है।

सिंपल लीनियर रिग्रेशन मॉडल की मान्यताएँ

अब सिंपल लीनियर रिग्रेशन की मुख्य मान्यताओं को देखते हैं। यदि ये मान्यताएँ टूटती हैं, तो हमें अलग तरीका सोचना चाहिए। ख़ासतौर पर पहली तीन मज़बूत मान्यताएँ हैं और इन्हें नज़रअंदाज़ नहीं करना चाहिए।

  1. रैखिकता: स्वतंत्र और आश्रित चर के बीच संबंध रैखिक होना चाहिए। यदि संबंध गैर-रैखिक है, तो मॉडल उसे अच्छे से नहीं पकड़ेगा।
  2. त्रुटियों की स्वतंत्रता: रेजिडुअल्स एक-दूसरे से स्वतंत्र होने चाहिए — इनमें कोई पैटर्न या सहसंबंध नहीं होना चाहिए। समय-क्रमित डेटा में इसे ख़ास तौर पर देखना चाहिए।
  3. होमोसकेडैस्टिसिटी: रेजिडुअल्स का वैरिएंस स्वतंत्र चर के सभी मानों पर स्थिर होना चाहिए। यदि वैरिएंस बदलता है (हेटरोसकेडैस्टिसिटी), तो x के कुछ रेंज में भविष्यवाणियाँ कम सटीक हो सकती हैं।
  4. रेजिडुअल्स की नॉर्मैलिटी: रेजिडुअल्स आदर्श रूप से सामान्य या Gaussian वितरण का अनुसरण करें। यह सांख्यिकीय परीक्षणों और हमारे अनुमान में विश्वास-स्तर जताने के लिए महत्वपूर्ण है। भविष्यवाणी करने के लिए यह कम अहम है. 

सिंपल लीनियर रिग्रेशन मॉडल का मूल्यांकन

मान लें हमने सिंपल लीनियर रिग्रेशन मॉडल बनाया। कैसे जानें कि फिट अच्छा है? इसके लिए हम डायग्नोस्टिक प्लॉट्स और मॉडल सांख्यिकी देखते हैं। 

सिंपल लीनियर रिग्रेशन के डायग्नोस्टिक प्लॉट्स

डायग्नोस्टिक प्लॉट्स दिखाते हैं कि मॉडल अच्छी तरह फिट होता है या नहीं और हमारी मान्यताएँ नहीं टूट रहीं। इन प्लॉट्स में पैटर्न या विचलन दिखे तो मॉडल में समस्या या छूटी हुई जानकारी का संकेत है। सिंपल लीनियर रिग्रेशन के लिए एक विशिष्ट प्लॉट x मान बनाम रेजिडुअल्स का प्लॉट है, जैसा नीचे दिखता है। अतिरिक्त प्लॉट्स में Q-Q प्लॉट, स्केल-लोकेशन प्लॉट, ऑब्ज़र्वेशन नंबर बनाम कुक्स डिस्टेंस आदि शामिल हैं। 

simple linear regression diagnostic plotx मान बनाम रेजिडुअल्स डायग्नोस्टिक प्लॉट। चित्र: लेखक

सिंपल लीनियर रिग्रेशन की मॉडल सांख्यिकी

R-squared और Adjusted R-squared जैसी सांख्यिकीय मात्राएँ बताती हैं कि स्वतंत्र चर, आश्रित चर के वैरिएंस को कितना समझाता है। F-स्टैटिस्टिक मॉडल की समग्र महत्ता परखता है, और कोएफिशिएंट्स की p-वैल्यू अलग-अलग प्रेडिक्टर्स के प्रभाव के बारे में बताती है. 

सिंपल लीनियर रिग्रेशन मॉडल की व्याख्या कैसे करें

सिंपल लीनियर रिग्रेशन के परिणामों की व्याख्या करते समय, हमें स्वतंत्र और आश्रित चर के संबंध का वर्णन सटीकता से करना चाहिए।

स्लोप और इंटरसेप्ट की व्याख्या कैसे करें

ख़ास तौर पर, इन दो प्रमुख घटकों — स्लोप और इंटरसेप्ट — के बारे में बोलते समय सावधानी रखें।

  • इंटरसेप्ट बताता है कि रिग्रेशन रेखा y-अक्ष को कहाँ काटती है। व्यावहारिक तौर पर, जब स्वतंत्र चर शून्य हो, तब आश्रित चर का मान क्या होगा। इंटरसेप्ट हमेशा व्याख्यायोग्य नहीं होता। हमारे पेड़ों वाले उदाहरण में, शून्य ऊँचाई वाले पेड़ों के लिए पत्तों की कोई संख्या प्रेडिक्ट हुई होगी — इस संदर्भ में इंटरसेप्ट की व्याख्या करना तर्कसंगत नहीं। 
  • स्लोप दर्शाता है कि स्वतंत्र चर में एक-इकाई वृद्धि पर आश्रित चर में अपेक्षित परिवर्तन कितना है। सकारात्मक स्लोप सकारात्मक संबंध दिखाता है — जैसे-जैसे स्वतंत्र चर बढ़ता है, आश्रित चर भी बढ़ता है। नकारात्मक स्लोप इसका उलटा दर्शाता है।

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

एक और अहम बात: डेटा की सीमा से बाहर एक्स्ट्रापोलेशन करना भरोसेमंद भविष्यवाणी नहीं दे सकता। पेड़ की ऊँचाई से पत्तों की संख्या का अनुमान लगाने वाला सिंपल लीनियर रिग्रेशन, बहुत छोटे या बहुत ऊँचे पेड़ों के लिए खास सटीक नहीं हो सकता, विशेषकर यदि ऐसे पेड़ हमारे मॉडल निर्माण में शामिल नहीं थे। 

ट्रांसफॉर्मेशंस के बारे में कैसे सोचें

लीनियर मॉडल्स को ऐसा इसलिए कहा जाता है क्योंकि उनका फंक्शनल रूप रैखिक होता है। सिंपल लीनियर रिग्रेशन में, प्रतिक्रिया चर y और प्रेडिक्टर चर x के बीच संबंध को प्रेडिक्टर और एक कॉन्स्टैंट के रैखिक संयोजन के रूप में मॉडल किया जाता है। फिर भी, आप सिंपल लीनियर रिग्रेशन से बहुत कुछ कर सकते हैं। मॉडल यद्यपि सीधी-रेखा संबंध मानता है, आप गैर-रैखिक संबंधों को पकड़ने के लिए ट्रांसफॉर्मेशन जोड़ सकते हैं। जिन वक्रों के लिए बहुपद रूप चाहिए, हमारा पॉलीनोमियल रिग्रेशन ट्यूटोरियल देखें।

उदाहरण के लिए, पीढ़ियों के साथ पूर्वजों की संख्या के बढ़ने का गैर-रैखिक संबंध लें, जहाँ प्रत्येक पीढ़ी में संख्या घातीय रूप से बढ़ती दिखती है: दो माता-पिता, चार दादा-दादी, आठ परदादा-दादी, इत्यादि। आप उम्मीद नहीं करेंगे कि लीनियर मॉडल घातीय वृद्धि को पकड़ेगा, पर log(y) का प्रेडिक्शन करके, y की बजाय, आप संबंध को रैखिक बना देते हैं। 

आगे सोचें तो समझ आता है कि पूर्वजों में घातीय वृद्धि वास्तव में नहीं होती — “पेडिग्री कोलैप्स” के कारण, जहाँ दूर के पूर्वज परिवार वृक्ष में कई जगह दोहराते हैं और समय के साथ वृद्धि दर काफ़ी घट जाती है। इसलिए log(y) लेना हमारे मॉडल को ज़रूरत से ज़्यादा बढ़ा सकता था। अब, इसे नरम करने के लिए, हम x पर स्क्वेयर रूट ट्रांसफॉर्मेशन लागू करके एक नया प्रेडिक्टर बना सकते हैं और इसका उपयोग कर सकते हैं। यहाँ, मैं यह नहीं कह रहा कि यह मॉडल सही है या इसकी पूरी व्याख्या कर रहा हूँ — बस यह दिखा रहा हूँ कि log(y) और x का स्क्वेयर रूट — ये गैर-रैखिक ट्रांसफॉर्मेशन हैं जो कोएफिशिएंट्स के सापेक्ष रैखिक रूप से समीकरण में प्रवेश करते हैं, इसलिए हमारे पास अब भी सिंपल लीनियर रिग्रेशन ही है।  

R और Python में सिंपल लीनियर रिग्रेशन

आइए R और Python में सिंपल लीनियर रिग्रेशन पर विचार करें।

R प्रोग्रामिंग

R में सिंपल लीनियर रिग्रेशन बिल्ट-इन lm() फ़ंक्शन से होता है — कोई अतिरिक्त पैकेज नहीं चाहिए। एक कॉल में यह कोएफिशिएंट्स, स्टैंडर्ड एरर्स, t-स्टैटिस्टिक्स, और p-वैल्यू की पूरी सार-सूची देता है।

स्लोप और इंटरसेप्ट को मैन्युअली निकालना

हम अपने-आप औसत और मानक विचलन निकालकर कोएफिशिएंट्स पा सकते हैं। 

# Manually calculate the slope and intercept in R

# Sample data
X <- c(1, 2, 3, 4, 5)
y <- c(2, 4, 5, 4, 5)

# Calculate means
mean_X <- mean(X)
mean_y <- mean(y)

# Calculate standard deviations
sd_X <- sd(X)
sd_y <- sd(y)

# Calculate correlation
correlation <- cor(X, y)

# Calculate slope (b1) using the formula: b1 = (correlation * sd_y) / sd_X
slope <- (correlation * sd_y) / sd_X

# Calculate intercept (b0) using the formula: b0 = mean_y - slope * mean_X
intercept <- mean_y - slope * mean_X

# Print the slope and intercept
cat("Slope (b1):", slope, "\n")
cat("Intercept (b0):", intercept, "\n")

# Use the manually calculated coefficients to predict y values
y_pred <- intercept + slope * X
cat("Predicted values:", y_pred, "\n")

lm() फ़ंक्शन का उपयोग

R में, हम lm() फ़ंक्शन से रिग्रेशन बना सकते हैं, जिसके लिए किसी लाइब्रेरी की ज़रूरत नहीं। 

# Fit the model 
model <- lm(y ~ X) 

# Print the summary of the regression 
summary(model)

Python

Python में सिंपल लीनियर रिग्रेशन के तीन मुख्य रास्ते हैं: NumPy से मैन्युअल गणना, statsmodels से सांख्यिकीय मॉडलिंग (जो p-वैल्यू और कॉन्फिडेंस इंटरवल देता है), और scikit-learn से मशीन लर्निंग वर्कफ़्लोज़।

स्लोप और इंटरसेप्ट को मैन्युअली निकालना

यहाँ हम प्रत्येक चर के औसत और मानक विचलन निकालते हैं। 

import numpy as np

# Sample data
X = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 5, 4, 5])

# Calculate means
mean_X = np.mean(X)
mean_y = np.mean(y)

# Calculate standard deviations
sd_X = np.std(X, ddof=1)
sd_y = np.std(y, ddof=1)

# Calculate correlation
correlation = np.corrcoef(X, y)[0, 1]

# Calculate slope (b1) using the formula: b1 = (correlation * sd_y) / sd_X
slope = (correlation * sd_y) / sd_X

# Calculate intercept (b0) using the formula: b0 = mean_y - slope * mean_X
intercept = mean_y - slope * mean_X

# Print the slope and intercept
print(f"Slope (b1): {slope}")
print(f"Intercept (b0): {intercept}")

# Use the manually calculated coefficients to predict y values
y_pred = intercept + slope * X

print(f"Predicted values: {y_pred}")

statsmodels का उपयोग

statsmodels सिंपल लीनियर रिग्रेशन के लिए एक विकल्प है।

import statsmodels.api as sm

# Adding a constant for the intercept
X = sm.add_constant(X)

# Fit the model
model = sm.OLS(y, X)
results = model.fit()

# Print the summary of the regression
print(results.summary())

scikit-learn का उपयोग

scikit-learn मशीन लर्निंग वर्कफ़्लोज़ में लीनियर रिग्रेशन के लिए सबसे अधिक उपयोग की जाने वाली Python लाइब्रेरी है। इसका LinearRegression क्लास मानक fit()/predict() API का अनुसरण करता है, जैसा लाइब्रेरी के हर मॉडल में है, इसलिए यह पाइपलाइनों और क्रॉस-वैलिडेशन में सीधे फिट हो जाता है।

import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score, root_mean_squared_error

# Sample data — scikit-learn expects X to be 2D
X = np.array([1, 2, 3, 4, 5]).reshape(-1, 1)
y = np.array([2, 4, 5, 4, 5])

# Fit the model
model = LinearRegression()
model.fit(X, y)

# Inspect coefficients
print(f"Intercept (b0): {model.intercept_:.4f}")
print(f"Slope (b1):     {model.coef_[0]:.4f}")

# Predict and evaluate
y_pred = model.predict(X)
print(f"R\u00b2:   {r2_score(y, y_pred):.4f}")
print(f"RMSE: {root_mean_squared_error(y, y_pred):.4f}")

statsmodels से मुख्य अंतर: scikit-learn का LinearRegression p-वैल्यू या कॉन्फिडेंस इंटरवल्स रिपोर्ट नहीं करता, क्योंकि यह सांख्यिकीय निष्कर्षण से अधिक पूर्वानुमानिक सटीकता के लिए डिज़ाइन किया गया है। कोएफिशिएंट्स पर हाइपोथिसिस टेस्टिंग चाहिए तो statsmodels उपयोग करें; बड़े ML पाइपलाइन में फिट होने वाला मॉडल चाहिए तो scikit-learn उपयोग करें।

सिंपल लीनियर रिग्रेशन, t-टेस्ट, और ANOVA

सिंपल लीनियर रिग्रेशन परिकल्पना परीक्षण में उपयोग होता है और t-टेस्ट तथा वैरिएंस के विश्लेषण (ANOVA) के केंद्र में है। 

सिंपल लीनियर रिग्रेशन और t-टेस्ट

एक t-टेस्ट अक्सर यह निर्धारित करने के लिए उपयोग होता है कि रिग्रेशन रेखा का स्लोप शून्य से सार्थक रूप से भिन्न है या नहीं। यह बताता है कि स्वतंत्र चर का सांख्यिकीय रूप से महत्वपूर्ण प्रभाव है या नहीं। मूल रूप से, हम शून्य परिकल्पना बनाते हैं कि स्लोप शून्य के बराबर है — यानी कोई रैखिक संबंध नहीं — और t-टेस्ट इसका मूल्यांकन करता है। सिंपल लीनियर रिग्रेशन यहाँ इसलिए जुड़ता है कि बाइनरी स्वतंत्र चर के साथ सिंपल लीनियर रिग्रेशन, औसतों के अंतर (difference in means) के बराबर होता है, जैसा हम t-टेस्ट में देखते हैं।

सिंपल लीनियर रिग्रेशन और ANOVA

वैरिएंस का विश्लेषण (ANOVA) एक सांख्यिकीय तरीका है जो मॉडल के समग्र फिट का आकलन करता है और यह तय करता है कि स्वतंत्र चर आश्रित चर के वैरिएंस का एक महत्वपूर्ण हिस्सा समझाता है या नहीं। हम आश्रित चर के कुल वैरिएंस को दो हिस्सों में बाँटते हैं: मॉडल द्वारा समझाया गया वैरिएंस (बीच-समूह) और रेजिडुअल/त्रुटि के कारण वैरिएंस (भीतर-समूह)। ANOVA में F-टेस्ट मूलतः यह जाँचता है कि संपूर्ण रूप से रिग्रेशन मॉडल बिना प्रेडिक्टर्स वाले मॉडल की तुलना में डेटा को बेहतर फिट करता है या नहीं। उदाहरण के लिए, हमारे पेड़ की ऊँचाई और पत्तों की संख्या वाले उदाहरण में, ANOVA यह बताएगा कि ऊँचाई को शामिल करना हमारी भविष्यवाणी क्षमता को महत्वपूर्ण रूप से सुधारता है या नहीं।

OLS सिंपल लीनियर रिग्रेशन के विकल्प 

हमने कहा कि सिंपल लीनियर रिग्रेशन में ऑर्डिनरी लीस्ट स्क्वेर्स अब तक का सबसे आम एस्टीमेटर है, और हमने इसी पर ध्यान केंद्रित किया। किंतु OLS बाहरी मानों (आउटलायर्स) के प्रति संवेदनशील है — यानी उच्च प्रभाव या उच्च लीवरेज वाले बिंदु स्लोप और इंटरसेप्ट को नाटकीय रूप से बदल सकते हैं।  

इसी कारण, नॉन-पैरामेट्रिक विकल्प मौजूद हैं। नीचे का विज़ुअलाइज़ेशन ऑर्डिनरी लीस्ट स्क्वेर्स के साथ तीन नॉन-पैरामेट्रिक विकल्प दिखाता है: मीडियन एब्सोल्यूट डिविएशन (MAD), लीस्ट मीडियन स्क्वेयर्स (LMS), और Theil-Sen। ध्यान दें कि प्रत्येक एस्टीमेटर के लिए स्लोप और इंटरसेप्ट अलग हैं। यदि हम x = 7 और y = 70 जैसे उच्च प्रभाव वाले बिंदु जोड़ दें, तो OLS रिग्रेशन रेखा में सबसे अधिक बदलाव आएगा।

simple linear regression optionsसिंपल लीनियर रिग्रेशन के चार विकल्प। चित्र: लेखक

अंतिम विचार

सिंपल लीनियर रिग्रेशन अधिक जटिल प्रेडिक्टिव मॉडलों की शुरुआती सीढ़ी है। और गहराई में जाने के लिए, हमारा Essentials of Linear Regression in Python ट्यूटोरियल और How to Do Linear Regression in R ट्यूटोरियल वास्तविक डेटा सेट्स के साथ एंड-टू-एंड वर्कफ़्लो दिखाते हैं। यदि आप संरचित कोर्स पसंद करते हैं, तो Introduction to Linear Modeling in Python scipy, statsmodels, और scikit-learn के साथ लीनियर रिग्रेशन को गहराई से कवर करता है।

ये संसाधन आपको अलग-अलग टूल्स से लीनियर रिग्रेशन करने और उसके अनुप्रयोगों को समझने में मार्गदर्शन देंगे। अंत में, यदि आप अपने कौशल बढ़ाने को तैयार हैं, तो हमारा Multiple Linear Regression in R: Tutorial With Examples देखें, जो कई प्रेडिक्टर्स वाले अधिक जटिल मॉडलों को कवर करता है। आप हमारे Regression in Excel Made Easy YouTube वीडियो से भी एक शुरुआती-अनुकूल, Excel-विशेष मार्गदर्शन पा सकते हैं. 

Excel में सिंपल लीनियर रिग्रेशन
Josef Waples

लेखक

Josef Waples

मैं एक डेटा साइंस संपादक हूँ और वैज्ञानिक पत्रिकाओं में प्रकाशित शोध लेखों में योगदान दे चुका/चुकी हूँ। मुझे विशेष रूप से रैखिक बीजगणित, सांख्यिकी, R, और इसी तरह के विषयों में रुचि है।

Simple Linear Regression FAQs

सिंपल लीनियर रिग्रेशन क्या है?

सिंपल लीनियर रिग्रेशन वह रिग्रेशन है जिसमें एक स्वतंत्र (explanatory) और एक आश्रित (response) चर शामिल होते हैं। इसका उपयोग इन दो चर के बीच रैखिक संबंध के आधार पर सतत आउटपुट की भविष्यवाणी करने के लिए किया जाता है।

सिंपल लीनियर रिग्रेशन का स्लोप कैसे निकाला जाता है?

स्लोप की गणना सहसंबंध गुणांक (r) को आश्रित चर के मानक विचलन (sy) और स्वतंत्र चर के मानक विचलन (sx) के अनुपात से गुणा करके की जा सकती है। यह दर्शाता है कि स्वतंत्र चर में एक इकाई बदलाव पर आश्रित चर कितना बदलने की अपेक्षा है।

रिग्रेशन मॉडल के कोएफिशिएंट्स खोजने की कुछ विधियाँ क्या हैं?

 सिंपल लीनियर रिग्रेशन के कोएफिशिएंट्स OLS एस्टीमेशन, नॉर्मल इक्वेशन (लीनियर अल्जebra), QR डीकंपोज़िशन, या ग्रेडिएंट डिसेंट (कैल्कुलस) जैसी विधियों से निकाले जा सकते हैं।

सिंपल लीनियर रिग्रेशन के लिए कौन-सी मान्यताएँ सत्य होनी चाहिए?

 सिंपल लीनियर रिग्रेशन कुछ मान्यताओं पर निर्भर करता है। एक, चर के बीच संबंध रैखिक होना चाहिए। दो, रेजिडुअल्स स्वतंत्र होने चाहिए। तीन, रेजिडुअल्स का वैरिएंस स्थिर होना चाहिए (होमोसकेडैस्टिसिटी)। चार, रेजिडुअल्स आदर्शतः सामान्य वितरण का पालन करें।

सिंपल लीनियर रिग्रेशन मॉडल का मूल्यांकन कैसे करें?

आप रेजिडुअल्स बनाम x मान और Q-Q प्लॉट जैसे डायग्नोस्टिक प्लॉट्स तथा R-squared, Adjusted R-squared, और F-स्टैटिस्टिक जैसी मॉडल सांख्यिकी से सिंपल लीनियर रिग्रेशन का आकलन कर सकते हैं। ये औज़ार बताते हैं कि मॉडल डेटा को कितना अच्छा फिट करता है और भविष्यवाणियाँ कितनी भरोसेमंद हैं।

सिंपल और मल्टिपल लीनियर रिग्रेशन में क्या अंतर है?

सिंपल लीनियर रिग्रेशन में 1 स्वतंत्र चर से आश्रित चर की भविष्यवाणी की जाती है। मल्टिपल लीनियर रिग्रेशन में 2 या अधिक स्वतंत्र चर होते हैं। दोनों OLS से लाइन (या हाइपरप्लेन) फिट करते हैं, पर मल्टिपल रिग्रेशन अधिक जटिल संबंधों को संभालता है और प्रेडिक्टर्स के बीच मल्टीकोलिनियरिटी के लिए अतिरिक्त जाँचें आवश्यक होती हैं।

सिंपल लीनियर रिग्रेशन की 4 मान्यताएँ क्या हैं?

4 प्रमुख मान्यताएँ हैं: (1) रैखिकता — X और y का संबंध रैखिक है; (2) त्रुटियों की स्वतंत्रता — रेजिडुअल्स परस्पर सहसंबद्ध नहीं हैं; (3) होमोसकेडैस्टिसिटी — X के सभी मानों पर रेजिडुअल वैरिएंस स्थिर है; (4) रेजिडुअल्स की नॉर्मैलिटी — रेजिडुअल्स मोटे तौर पर सामान्य वितरण का पालन करते हैं, जो हाइपोथिसिस टेस्टिंग के लिए अधिक मायने रखता है। पहली 3 मान्यताओं का उल्लंघन 4वीं की तुलना में अधिक गंभीर है।

Python में सिंपल लीनियर रिग्रेशन कैसे चलाएँ?

सबसे आम तरीका scikit-learn है: from sklearn.linear_model import LinearRegression; model = LinearRegression(); model.fit(X, y). स्लोप के लिए model.coef_ और इंटरसेप्ट के लिए model.intercept_ देखें। p-वैल्यू और कॉन्फिडेंस इंटरवल्स के लिए statsmodels उपयोग करें: import statsmodels.api as sm; results = sm.OLS(y, sm.add_constant(X)).fit(); print(results.summary()).

सिंपल लीनियर रिग्रेशन में R-squared का क्या मतलब है?

R-squared (R²) दर्शाता है कि आश्रित चर के वैरिएंस का कितना हिस्सा स्वतंत्र चर द्वारा समझाया गया है। R² = 0.80 का अर्थ है कि y के 80% वैरिएंस को x समझाता है। R² का मान 0 से 1 तक होता है, अधिक मान बेहतर फिट दर्शाते हैं। सिंपल लीनियर रिग्रेशन में, R² x और y के बीच पियरसन सहसंबंध गुणांक के वर्ग के बराबर होता है।

विषय