Python တွင် အလေးချိန်အနည်းဆုံးစတုရန်းများ ဆုတ်ယုတ်မှုအား မည်သို့လုပ်ဆောင်ရမည်နည်း။
linear regression ၏ အဓိက ယူဆချက် တစ်ခုမှာ အကြွင်းအကျန်များကို ကြိုတင်ခန့်မှန်းကိန်းရှင် အဆင့်တစ်ခုစီတွင် တူညီသောကွဲလွဲမှုဖြင့် ဖြန့်ဝေပေးခြင်းဖြစ်သည်။ ဤယူဆချက်ကို homoscedasticity ဟုခေါ်သည်။
ဤယူဆချက်ကို မလေးစားပါက အကြွင်းအ ကျန်များတွင် ရှိနေသည်ဟု ဆိုပါသည်။ ထိုသို့ဖြစ်လာသောအခါ၊ ဆုတ်ယုတ်မှုရလဒ်များသည် ယုံကြည်စိတ်ချရခြင်းမရှိပေ။
ဤပြဿနာကိုဖြေရှင်းရန်နည်းလမ်းတစ်ခုမှာ အမှားကွဲလွဲမှုနည်းသော လေ့လာသုံးသပ်ချက်များ အတွက် အလေးများသတ်မှတ်ပေးသည့် အလေးချိန်အနည်းဆုံးစတုရန်းဆုတ်ယုတ်မှု ကိုအသုံးပြုခြင်းဖြစ်ပြီး အမှားကွဲလွဲမှုနည်းပါးသူများသည် အလေးချိန်ပိုမိုရရှိသောကြောင့် ၎င်းတို့တွင်အချက်အလက်များပိုမိုပါဝင်သောကြောင့် ၎င်းတို့တွင် အမှားအယွင်းကွဲလွဲမှုပိုများသောလေ့လာသုံးသပ်မှုများနှင့်နှိုင်းယှဉ်ပါ။
ဤသင်ခန်းစာသည် Python ရှိ အလေးချိန်အနည်းဆုံးစတုရန်းဆုတ်ယုတ်မှုလုပ်ဆောင်ပုံအဆင့်ဆင့်ကို ဥပမာပေးထားသည်။
အဆင့် 1: ဒေတာကိုဖန်တီးပါ။
ဦးစွာ၊ အတန်းတစ်ခန်းရှိ ကျောင်းသား ၁၆ ဦးအတွက် လေ့လာချိန်နာရီအရေအတွက်နှင့် နောက်ဆုံးစာမေးပွဲအဆင့်ဆိုင်ရာ အချက်အလက်များပါရှိသော အောက်ပါပန်ဒါ DataFrame ကို ဖန်တီးကြပါစို့။
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- ရိုးရှင်းသော linear regression model ကို ကိုက်ညီပါ။
ထို့နောက်၊ ခန့်မှန်းသူကိန်းရှင်နှင့် တုံ့ပြန်မှုကိန်းရှင်အဖြစ် ရမှတ် အဖြစ် နာရီများကို အသုံးပြုကာ ရိုးရှင်းသောမျဉ်းကြောင်းဆုတ်ယုတ်မှုပုံစံနှင့်ကိုက်ညီရန် statsmodels မော်ဂျူးရှိ လုပ်ဆောင်ချက်များကို အသုံးပြုပါမည်။
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
မော်ဒယ်အကျဉ်းချုပ်မှ၊ မော်ဒယ်၏ R-squared တန်ဖိုးသည် 0.630 ဖြစ်ကြောင်း ကျွန်ုပ်တို့ တွေ့နိုင်ပါသည်။
ဆက်စပ်မှု- ကောင်းသော R-squared တန်ဖိုးဆိုသည်မှာ အဘယ်နည်း။
အဆင့် 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
==================================================== ============================
ရလဒ်မှ၊ ဤအလေးချိန်အနည်းဆုံးစတုရန်းပုံစံအတွက် R-squared တန်ဖိုးသည် 0.676 သို့ တိုးလာသည်ကို ကျွန်ုပ်တို့တွေ့မြင်နိုင်ပါသည်။
၎င်းသည် အလေးချိန်အနည်းဆုံးစတုရန်းပုံစံသည် ရိုးရှင်းသောမျဉ်းဖြောင့်ဆုတ်ယုတ်မှုပုံစံထက် စာမေးပွဲရမှတ်များတွင် ကွဲလွဲမှုကို ပိုမိုရှင်းပြနိုင်သည်ကို ဖော်ပြသည်။
၎င်းသည် အလေးချိန်အနည်းဆုံးစတုရန်းပုံစံသည် ရိုးရှင်းသောမျဉ်းကြောင်းဆုတ်ယုတ်မှုပုံစံနှင့် နှိုင်းယှဉ်ပါက ဒေတာနှင့်ပို၍ကိုက်ညီကြောင်း ကျွန်ုပ်တို့ကိုပြောပြသည်။
ထပ်လောင်းအရင်းအမြစ်များ
အောက်ပါ သင်ခန်းစာများသည် Python တွင် အခြားသော အသုံးများသော အလုပ်များကို မည်သို့လုပ်ဆောင်ရမည်ကို ရှင်းပြသည်-
Python တွင် Residual Plot ဖန်တီးနည်း
Python တွင် QQ Plot ဖန်တီးနည်း
Python တွင် multicollinearity ကိုစမ်းသပ်နည်း