Python တွင် vif တွက်နည်း
ဆုတ်ယုတ်မှုခွဲခြမ်းစိတ်ဖြာမှုတွင် Multicollinearity သည် ဆုတ်ယုတ်မှုပုံစံတွင် ထူးခြားသော သို့မဟုတ် အမှီအခိုကင်းသော အချက်အလက်များကို ပေးဆောင်ခြင်းမရှိသည့် နှစ်ခု သို့မဟုတ် ထို့ထက်ပိုသော ရှင်းပြချက်တစ်ခုနှင့်တစ်ခု တစ်ခုနှင့်တစ်ခု အလွန်ဆက်စပ်နေသောအခါတွင် ဖြစ်ပေါ်သည်။
ကိန်းရှင်များကြားတွင် ဆက်စပ်ဆက်စပ်မှုဒီဂရီသည် လုံလောက်စွာမြင့်မားပါက၊ ၎င်းသည် ဆုတ်ယုတ်မှုပုံစံကို အံဝင်ခွင်ကျဖြစ်စေပြီး အနက်ပြန်ဆိုရာတွင် ပြဿနာများဖြစ်စေနိုင်သည်။
multicollinearity ကို ဖော်ထုတ်ရန် နည်းလမ်းတစ်ခုမှာ regression model ရှိ explanatory variables များကြား ဆက်စပ်မှု နှင့် အင်အားကို တိုင်းတာသည့် variance inflation factor (VIF) ဟုခေါ်သော မက်ထရစ်ကို အသုံးပြုခြင်း ဖြစ်သည်။
ဤသင်ခန်းစာတွင် Python တွင် VIF တွက်ချက်နည်းကို ရှင်းပြထားသည်။
ဥပမာ- Python တွင် VIF ကို တွက်ချက်ပါ။
ဤဥပမာအတွက်၊ ကျွန်ုပ်တို့သည် ဘတ်စကတ်ဘောကစားသမား 10 ဦး၏ အရည်အချင်းများကို ဖော်ပြသည့် ဒေတာအတွဲကို အသုံးပြုပါမည်-
import numpy as np import pandas as pd #create dataset 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 dataset 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
ကျွန်ုပ်တို့သည် တုံ့ပြန်မှုကိန်းရှင်နှင့် အမှတ်များအဖြစ်၊ ရှင်းပြချက်ကိန်းရှင်များအဖြစ် အမှတ်ပေးခြင်း၊ ကူညီပံ့ပိုးခြင်းနှင့် ပြန်လည်ခုန်ထွက်ခြင်းတို့ကို အသုံးပြု၍ များစွာသောမျဉ်းကြောင်းဆုတ်ယုတ်မှုပုံစံကို အံဝင်ခွင်ကျဖြစ်စေလိုသည်ဆိုပါစို့။
မော်ဒယ်ရှိ ရှင်းပြချက်တစ်ခုစီအတွက် VIF ကိုတွက်ချက်ရန်၊ ကျွန်ုပ်တို့သည် statsmodels စာကြည့်တိုက်မှ variance_inflation_factor() လုပ်ဆောင်ချက်ကို အသုံးပြုနိုင်ပါသည်။
from patsy import damatrices from statsmodels.stats.outliers_influence import variance_inflation_factor #find design matrix for linear regression model using 'rating' as response variable y, X = dmatrices('rating ~ points+assists+rebounds', data=df, return_type='dataframe') #calculate VIF for each explanatory variable vivid = pd.DataFrame() vive['VIF'] = [variance_inflation_factor(X.values, i) for i in range(X.shape[1])] vivid['variable'] = X.columns #view VIF for each explanatory variable lively Variable VIF 0 101.258171 Intercept 1 1.763977 points 2 1.959104 assists 3 1.175030 rebounds
ရှင်းပြချက်တစ်ခုစီအတွက် VIF တန်ဖိုးများကို ကျွန်ုပ်တို့ ကြည့်ရှုနိုင်သည်-
- အမှတ်- ၁.၇၆
- ကူညီပေးသည်- 1.96
- ပြန်တက်သည်- ၁.၁၈
မှတ်ချက်- ဤတန်ဖိုးသည် မသက်ဆိုင်သောကြောင့် ပုံစံပလိတ်ရှိ “ ကြားဖြတ်” အတွက် VIF ကို လျစ်လျူရှုပါ။
VIF တန်ဖိုးတွေကို ဘယ်လိုအဓိပ္ပာယ်ဖွင့်မလဲ။
VIF တန်ဖိုးသည် 1 မှစတင်ပြီး အထက်ကန့်သတ်ချက်မရှိပါ။ VIF များကို ဘာသာပြန်ခြင်းအတွက် ယေဘူယျစည်းမျဉ်းမှာ-
- 1 ၏တန်ဖိုးသည် ပေးထားသောရှင်းပြချက်ကိန်းရှင်တစ်ခုနှင့် မော်ဒယ်ရှိ အခြားရှင်းပြကိန်းရှင်ကြားတွင် ဆက်စပ်မှုမရှိဟု ဖော်ပြသည်။
- 1 နှင့် 5 အကြားတန်ဖိုးသည် ပေးထားသောရှင်းပြချက်ကိန်းရှင်တစ်ခုနှင့် မော်ဒယ်ရှိ အခြားရှင်းပြကိန်းရှင်များကြားတွင် အလယ်အလတ်ဆက်စပ်မှုကို ညွှန်ပြသော်လည်း အထူးသတိထားရန် လိုအပ်လောက်အောင် မပြင်းထန်ပါ။
- 5 ထက်ကြီးသောတန်ဖိုးသည် ပေးထားသောရှင်းပြချက်ကိန်းရှင်နှင့် မော်ဒယ်ရှိ အခြားရှင်းပြကိန်းရှင်များအကြား ပြင်းထန်စွာဆက်စပ်မှုကို ညွှန်ပြသည်။ ဤကိစ္စတွင်၊ ဆုတ်ယုတ်မှုရလဒ်များတွင် ကိန်းဂဏန်းခန့်မှန်းချက်များနှင့် p-တန်ဖိုးများသည် ယုံကြည်စိတ်ချရဖွယ်မရှိပေ။
ကျွန်ုပ်တို့၏ ဆုတ်ယုတ်မှုပုံစံတွင် ရှင်းပြထားသော ကိန်းရှင်များ၏ VIF တန်ဖိုးတစ်ခုစီသည် 1 သို့ ပိတ်ထားသောကြောင့်၊ multicollinearity သည် ကျွန်ုပ်တို့၏ဥပမာတွင် ပြဿနာမဟုတ်ပါ။