Python တွင် multicollinearity ကိုစမ်းသပ်နည်း
ဆုတ်ယုတ်မှု ခွဲခြမ်းစိတ်ဖြာမှုတွင်၊ ဆုတ်ယုတ်မှုပုံစံတွင် ထူးခြားသော သို့မဟုတ် အမှီအခိုကင်းသော အချက်အလက်များကို မပေးစွမ်းနိုင်သော ကိန်းရှင်နှစ်ခု သို့မဟုတ် ထို့ထက်ပိုသော ခန့်မှန်းချက်ကိန်းရှင်များသည် တစ်ခုနှင့်တစ်ခု အလွန်ဆက်စပ်နေသောအခါတွင်၊ ပေါင်းစည်းထားသော ကိန်းဂဏန်းများ ဖြစ်ပေါ်လာသည်။
ကြိုတင်ခန့်မှန်းကိန်းရှင်များအကြား ဆက်စပ်ဆက်စပ်မှုဒီဂရီသည် လုံလောက်စွာမြင့်မားပါက၊ ၎င်းသည် ဆုတ်ယုတ်မှုပုံစံကို အံဝင်ခွင်ကျဖြစ်စေပြီး အနက်ပြန်ဆိုရာတွင် ပြဿနာများဖြစ်စေနိုင်သည်။
ဆုတ်ယုတ်မှုပုံစံတွင် multicollinearity ကိုရှာဖွေရန် အရိုးရှင်းဆုံးနည်းလမ်းမှာ မကြာခဏ အတိုကောက် VIF ကွဲလွဲမှု ငွေကြေးဖောင်းပွမှုအချက်ဟု လူသိများသော မက်ထရစ်ကို တွက်ချက်ခြင်းဖြစ်သည်။
VIF သည် မော်ဒယ်တစ်ခုရှိ ခန့်မှန်းသူ ကိန်းရှင်များကြား ဆက်နွယ်မှု၏ အားကို တိုင်းတာသည်။ ၎င်းသည် 1 နှင့် positive infinity ကြားတန်ဖိုးတစ်ခုယူသည်။
VIF တန်ဖိုးများကို ဘာသာပြန်ရန် အောက်ဖော်ပြပါ စည်းမျဉ်းများကို ကျွန်ုပ်တို့အသုံးပြုသည်-
- VIF = 1- ပေးထားသော ခန့်မှန်းပေးသူ ကိန်းရှင်နှင့် မော်ဒယ်ရှိ အခြားသော ခန့်မှန်းသူ ကိန်းရှင်ကြား ဆက်စပ်မှု မရှိပါ။
- VIF 1 နှင့် 5 အကြား- ပေးထားသော ခန့်မှန်းသူကိန်းရှင်နှင့် မော်ဒယ်ရှိ အခြားသော ခန့်မှန်းသူကိန်းရှင်များအကြား အလယ်အလတ်ဆက်စပ်မှုရှိပါသည်။
- VIF > 5 : ပေးထားသော ခန့်မှန်းပေးသူ ကိန်းရှင်နှင့် မော်ဒယ်ရှိ အခြားသော ခန့်မှန်းသူ ကိန်းရှင်များကြား ခိုင်မာသော ဆက်စပ်မှု ရှိပါသည်။
အောက်ပါဥပမာသည် Python ရှိ ဆုတ်ယုတ်မှုပုံစံတွင် multicollinearity ကို မော်ဒယ်ရှိ ကြိုတင်တွက်ဆမှုတစ်ခုစီအတွက် VIF တန်ဖိုးများကို တွက်ချက်ခြင်းဖြင့် ပြထားသည်။
ဥပမာ- Python တွင် multicollinearity စမ်းသပ်မှု
အမျိုးမျိုးသော ဘတ်စကတ်ဘောကစားသမားများအကြောင်း အချက်အလက်ပါရှိသော အောက်ပါပန်ဒါ DataFrame ရှိသည်ဆိုပါစို့။
import pandas as pd #createDataFrame df = pd. DataFrame ({' rating ': [90, 85, 82, 88, 94, 90, 76, 75, 87, 86], ' points ': [25, 20, 14, 16, 27, 20, 12, 15, 14, 19], ' assists ': [5, 7, 7, 8, 5, 7, 6, 9, 9, 5], ' rebounds ': [11, 8, 10, 6, 6, 9, 6, 10, 10, 7]}) #view DataFrame print (df) rating points assists rebounds 0 90 25 5 11 1 85 20 7 8 2 82 14 7 10 3 88 16 8 6 4 94 27 5 6 5 90 20 7 9 6 76 12 6 6 7 75 15 9 10 8 87 14 9 10 9 86 19 5 7
ကျွန်ုပ်တို့သည် တုံ့ပြန်မှုကိန်းရှင်နှင့် အမှတ်များ ၊ assists ၊ နှင့် ကြိုတင်ခန့်မှန်းကိန်းရှင်များအဖြစ် တုံ့ပြန်မှုကိန်း ရှင်များ အဖြစ် အမှတ်ပေးခြင်း ဖြင့် များစွာသောမျဉ်းကြောင်းဆုတ်ယုတ်မှုပုံစံကို အံဝင်ခွင်ကျဖြစ်စေလိုသည်ဆိုကြပါစို့။
မော်ဒယ်ရှိ ခန့်မှန်းပေးသူ variable တစ်ခုစီအတွက် VIF ကို တွက်ချက်ရန်၊ ကျွန်ုပ်တို့သည် statsmodels စာကြည့်တိုက်မှ variance_inflation_factor() လုပ်ဆောင်ချက်ကို အသုံးပြုနိုင်ပါသည်။
from patsy import damatrices from statsmodels. stats . outliers_influence import variance_inflation_factor #find design matrix for regression model using 'rating' as response variable y , #create DataFrame to hold VIF values vive_df = pd. DataFrame () vive_df[' variable '] = X.columns #calculate VIF for each predictor variable vive_df[' VIF '] = [variance_inflation_factor(X. values , i) for i in range(X. shape [1])] #view VIF for each predictor variable print (viv_df) Variable VIF 0 101.258171 Intercept 1 1.763977 points 2 1.959104 assists 3 1.175030 rebounds
ကြိုတင်ခန့်မှန်းကိန်းရှင်တစ်ခုစီအတွက် VIF တန်ဖိုးများကို ကျွန်ုပ်တို့မြင်နိုင်သည်-
- အမှတ်- ၁.၇၆
- ကူညီပေးသည်- 1.96
- ပြန်တက်သည်- ၁.၁၈
မှတ်ချက်- ဤတန်ဖိုးသည် မသက်ဆိုင်သောကြောင့် ပုံစံပလိတ်ရှိ “ ကြားဖြတ်” အတွက် VIF ကို လျစ်လျူရှုပါ။
မော်ဒယ်ရှိ ကြိုတင်ခန့်မှန်းကိန်းရှင်များ၏ VIF တန်ဖိုးတစ်ခုစီသည် 1 နှင့်နီးစပ်သောကြောင့်၊ multicollinearity သည် မော်ဒယ်အတွက် ပြဿနာမဟုတ်ပါ။
ထပ်လောင်းအရင်းအမြစ်များ
အောက်ပါ သင်ခန်းစာများသည် Python တွင် အခြားသော အသုံးများသော အလုပ်များကို မည်သို့လုပ်ဆောင်ရမည်ကို ရှင်းပြသည်-
Python တွင် ရိုးရှင်းသော linear regression လုပ်နည်း
Python တွင် မျဉ်းကြောင်း ဆုတ်ယုတ်မှု အများအပြား လုပ်ဆောင်နည်း
Python တွင် Residual Plot ဖန်တီးနည်း