पायथन में भारित न्यूनतम वर्ग प्रतिगमन कैसे करें


रैखिक प्रतिगमन की प्रमुख धारणाओं में से एक यह है कि अवशिष्टों को भविष्यवक्ता चर के प्रत्येक स्तर पर समान भिन्नता के साथ वितरित किया जाता है। इस धारणा को समरूपता के रूप में जाना जाता है।

जब इस धारणा का सम्मान नहीं किया जाता है, तो कहा जाता है कि अवशेषों में विषमलैंगिकता मौजूद है। जब ऐसा होता है, तो प्रतिगमन परिणाम अविश्वसनीय हो जाते हैं।

इस समस्या को हल करने का एक तरीका भारित न्यूनतम वर्ग प्रतिगमन का उपयोग करना है, जो अवलोकनों को वजन प्रदान करता है जैसे कि कम त्रुटि भिन्नता वाले लोगों को अधिक वजन मिलता है क्योंकि उनमें अधिक त्रुटि भिन्नता वाले अवलोकनों की तुलना में अधिक जानकारी होती है।

यह ट्यूटोरियल पायथन में भारित न्यूनतम वर्ग प्रतिगमन कैसे करें, इसका चरण-दर-चरण उदाहरण प्रदान करता है।

चरण 1: डेटा बनाएं

सबसे पहले, आइए निम्नलिखित पांडा डेटाफ़्रेम बनाएं जिसमें एक कक्षा में 16 छात्रों के लिए अध्ययन किए गए घंटों की संख्या और अंतिम परीक्षा ग्रेड के बारे में जानकारी शामिल है:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' hours ': [1, 1, 2, 2, 2, 3, 4, 4, 4, 5, 5, 5, 6, 6, 7, 8],
                   ' score ': [48, 78, 72, 70, 66, 92, 93, 75, 75, 80, 95, 97,
                             90, 96, 99, 99]})

#view first five rows of DataFrame
print ( df.head ())

   hours score
0 1 48
1 1 78
2 2 72
3 2 70
4 2 66

चरण 2: सरल रैखिक प्रतिगमन मॉडल फिट करें

इसके बाद, हम भविष्यवक्ता चर के रूप में घंटों और प्रतिक्रिया चर के रूप में स्कोर का उपयोग करके एक सरल रैखिक प्रतिगमन मॉडल को फिट करने के लिए स्टैटमॉडल मॉड्यूल में फ़ंक्शन का उपयोग करेंगे:

 import statsmodels.api as sm

#define predictor and response variables
y = df[' score ']
X = df[' hours ']

#add constant to predictor variables
X = sm. add_constant (x)

#fit linear regression model
fit = sm. OLS (y,x). fit ()

#view model summary
print ( fit.summary ())

                            OLS Regression Results                            
==================================================== ============================
Dept. Variable: R-squared score: 0.630
Model: OLS Adj. R-squared: 0.603
Method: Least Squares F-statistic: 23.80
Date: Mon, 31 Oct 2022 Prob (F-statistic): 0.000244
Time: 11:19:54 Log-Likelihood: -57.184
No. Observations: 16 AIC: 118.4
Df Residuals: 14 BIC: 119.9
Model: 1                                         
Covariance Type: non-robust                                         
==================================================== ============================
                 coef std err t P>|t| [0.025 0.975]
-------------------------------------------------- ----------------------------
const 60.4669 5.128 11.791 0.000 49.468 71.465
hours 5.5005 1.127 4.879 0.000 3.082 7.919
==================================================== ============================
Omnibus: 0.041 Durbin-Watson: 1.910
Prob(Omnibus): 0.980 Jarque-Bera (JB): 0.268
Skew: -0.010 Prob(JB): 0.875
Kurtosis: 2.366 Cond. No. 10.5

मॉडल सारांश से, हम देख सकते हैं कि मॉडल का आर-वर्ग मान 0.630 है।

संबंधित: एक अच्छा आर-वर्ग मान क्या है?

चरण 3: भारित न्यूनतम वर्ग मॉडल फिट करें

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

 #define weights to use
wt = 1/smf. ols (' fit.resid.abs() ~ fit.fittedvalues ', data=df). fit (). fitted values **2

#fit weighted least squares regression model
fit_wls = sm. WLS (y, X, weights=wt). fit ()

#view summary of weighted least squares regression model
print ( fit_wls.summary ())

                            WLS Regression Results                            
==================================================== ============================
Dept. Variable: R-squared score: 0.676
Model: WLS Adj. R-squared: 0.653
Method: Least Squares F-statistic: 29.24
Date: Mon, 31 Oct 2022 Prob (F-statistic): 9.24e-05
Time: 11:20:10 Log-Likelihood: -55.074
No. Comments: 16 AIC: 114.1
Df Residuals: 14 BIC: 115.7
Model: 1                                         
Covariance Type: non-robust                                         
==================================================== ============================
                 coef std err t P>|t| [0.025 0.975]
-------------------------------------------------- ----------------------------
const 63.9689 5.159 12.400 0.000 52.905 75.033
hours 4.7091 0.871 5.407 0.000 2.841 6.577
==================================================== ============================
Omnibus: 2,482 Durbin-Watson: 1,786
Prob(Omnibus): 0.289 Jarque-Bera (JB): 1.058
Skew: 0.029 Prob(JB): 0.589
Kurtosis: 1.742 Cond. No. 17.6
==================================================== ============================

परिणाम से, हम देख सकते हैं कि इस भारित न्यूनतम वर्ग मॉडल के लिए आर-वर्ग मान 0.676 तक बढ़ गया है।

यह इंगित करता है कि भारित न्यूनतम वर्ग मॉडल सरल रैखिक प्रतिगमन मॉडल की तुलना में परीक्षा अंकों में अधिक भिन्नता को समझाने में सक्षम है।

यह हमें बताता है कि भारित न्यूनतम वर्ग मॉडल सरल रैखिक प्रतिगमन मॉडल की तुलना में डेटा के लिए बेहतर फिट प्रदान करता है।

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

निम्नलिखित ट्यूटोरियल बताते हैं कि पायथन में अन्य सामान्य कार्य कैसे करें:

पायथन में एक अवशिष्ट प्लॉट कैसे बनाएं
पायथन में QQ प्लॉट कैसे बनाएं
पायथन में मल्टीकोलिनेरिटी का परीक्षण कैसे करें

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

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