Cook's distance ကို အသုံးပြု၍ သြဇာကြီးမားသော ဒေတာအမှတ်များကို ခွဲခြားသတ်မှတ်နည်း
Cook ၏ အကွာအဝေးကို D i ဟု ရည်ညွှန်းလေ့ရှိပြီး ဆုတ်ယုတ်မှု ခွဲခြမ်းစိတ်ဖြာမှုတွင် သင်၏ ဆုတ်ယုတ်မှုပုံစံကို ထိခိုက်စေနိုင်သည့် သြဇာကြီးမားသော ဒေတာအချက်များကို ခွဲခြားသတ်မှတ်ရန် အသုံးပြုပါသည်။
Cook ၏ အကွာအဝေးအတွက် ဖော်မြူလာမှာ-
d i = (r i 2 / p*MSE) * (h ii / (1-h ii ) 2 )
ရွှေ-
- r i သည် i th အကြွင်းဖြစ်သည်။
- p သည် regression model တွင် coefficients အရေအတွက်ဖြစ်သည်။
- MSE သည် mean square error ဖြစ်သည်။
- h ii သည် ith leverage တန်ဖိုးဖြစ်သည်။
ဖော်မြူလာက အနည်းငယ် ရှုပ်ထွေးပုံရသော်လည်း သတင်းကောင်းမှာ စာရင်းအင်းဆော့ဖ်ဝဲအများစုသည် ၎င်းကို သင့်အတွက် အလွယ်တကူ တွက်ချက်နိုင်သောကြောင့် ဖြစ်သည်။
အခြေခံအားဖြင့် Cook ၏အကွာအဝေးသည် တစ်ချက်လုပ်ဆောင်သည်- i th data point ကိုဖယ်ရှားလိုက်သောအခါတွင် model ၏တပ်ဆင်ထားသောတန်ဖိုးများမည်မျှပြောင်းလဲသည်ကိုတိုင်းတာသည်။
Cook ၏ အကွာအဝေးအတွက် တန်ဖိုးမြင့်သော ဒေတာအမှတ်သည် တပ်ဆင်ထားသော တန်ဖိုးများကို ပြင်းထန်စွာ လွှမ်းမိုးကြောင်း ညွှန်ပြသည်။ ယေဘူယျစည်းမျဉ်းတစ်ခုသည် 4/n ထက်ကြီးသော Cook အကွာအဝေးရှိ မည်သည့်အမှတ်ကိုမဆို ( n သည် ဒေတာစုစုပေါင်းအရေအတွက်ဖြစ်သည့် ) ကို သာလွန်သည်ဟု ယူဆပါသည်။
Cook ၏ အကွာအဝေးကို သြဇာကြီးမားသော ဒေတာအချက်များ ဖော်ထုတ်ရန် မကြာခဏ အသုံးပြုကြောင်း သတိပြုရန် အရေးကြီးပါသည်။ ဒေတာအချက်သည် လွှမ်းမိုးမှုရှိသောကြောင့် ၎င်းကို ဖယ်ရှားသင့်သည်ဟု မဆိုလိုပါ။ ဒေတာပွိုင့်ကို ရိုးရှင်းစွာ မှားယွင်းစွာ မှတ်တမ်းတင်ထားခြင်း ရှိ၊ မရှိ သို့မဟုတ် စိတ်ဝင်စားစရာကောင်းသည့် ရှာဖွေတွေ့ရှိမှုကို ညွှန်ပြနိုင်သည့် ဒေတာအချက်နှင့် ပတ်သက်၍ ထူးဆန်းမှုတစ်စုံတစ်ရာ ရှိ၊ မရှိ စစ်ဆေးသင့်သည်။
R ဖြင့် Cook ၏ အကွာအဝေးကို တွက်နည်း
အောက်ဖော်ပြပါ ဥပမာသည် Cook ၏ အကွာအဝေးကို R ဖြင့် တွက်ချက်ပုံကို ဖော်ပြသည်။
ပထမဦးစွာ၊ ဤဥပမာအတွက် ကျွန်ုပ်တို့လိုအပ်မည့် စာကြည့်တိုက်နှစ်ခုကို တင်ပါမည်။
library(ggplot2) library(gridExtra)
ထို့နောက်၊ ကျွန်ုပ်တို့သည် ဒေတာဘောင်နှစ်ခုကို သတ်မှတ်ပါမည်- တစ်ခုသည် အစွန်းနှစ်ခုရှိသော၊ တစ်ခုနှင့် အစွန်းမပါသောတစ်ခု။
#create data frame with no outliers no_outliers <- data.frame(x = c(1, 2, 2, 3, 4, 5, 7, 3, 2, 12, 11, 15, 14, 17, 22), y = c(22, 23, 24, 23, 19, 34, 35, 36, 36, 34, 32, 38, 41, 42, 44)) #create data frame with two outliers outliers <- data.frame(x = c(1, 2, 2, 3, 4, 5, 7, 3, 2, 12, 11, 15, 14, 17, 22), y = c( 190 , 23, 24, 23, 19, 34, 35, 36, 36, 34, 32, 38, 41, 42, 180 ))
ထို့နောက်၊ ကျွန်ုပ်တို့သည် ဒေတာဘောင်နှစ်ခုကို ဘေးချင်းယှဉ်ပြသရန် ဖြန့်ခွဲကွက်တစ်ခုကို ဖန်တီးပါမည်-
#create scatterplot for data frame with no outliers no_outliers_plot <- ggplot(data = no_outliers, aes(x = x, y = y)) + geom_point() + geom_smooth(method = lm) + ylim(0, 200) + ggtitle("No Outliers") #create scatterplot for data frame with outliers outliers_plot <- ggplot(data = outliers, aes(x = x, y = y)) + geom_point() + geom_smooth(method = lm) + ylim(0, 200) + ggtitle("With Outliers") #plot the two scatterplots side by side gridExtra::grid.arrange(no_outliers_plot, outliers_plot, ncol=2)
ဒုတိယဂရပ်တွင် ဆုတ်ယုတ်မှုမျဉ်း၏ အံဝင်ခွင်ကျဖြစ်မှုအပေါ် အစွန်းထွက်သူများသည် မည်ကဲ့သို့ အကျိုးသက်ရောက်သည်ကို ကျွန်ုပ်တို့မြင်နိုင်သည်။
ဒုတိယဒေတာအတွဲတွင် သြဇာရှိအချက်များကို ခွဲခြားသတ်မှတ်ရန်၊ ကျွန်ုပ်တို့သည် ဒေတာအတွဲရှိ စောင့်ကြည့်မှုတစ်ခုစီအတွက် Cook အကွာအဝေးကို တွက်ချက်နိုင်ပြီး 4/n ၏ သမားရိုးကျ တိုင်းတာမှုအဆင့်ထက် မည်သည့်အရာများကို မှတ်သားထားသည်ကို သိရှိရန် ဤအကွာအဝေးများကို တွက်ချက်နိုင်သည်-
#fit the linear regression model to the dataset with outliers model <- lm(y ~ x, data = outliers) #find Cook's distance for each observation in the dataset cooksD <- cooks.distance(model) # Plot Cook's Distance with a horizontal line at 4/n to see which observations #exceed this threshold n <- nrow(outliers) plot(cooksD, main = "Cooks Distance for Influential Obs") abline(h = 4/n, lty = 2, col = "steelblue") # add cutoff line
ဒေတာအတွဲတွင် ပထမဆုံးနှင့် နောက်ဆုံးကြည့်ရှုမှုမှာ 4/n အဆင့်ထက်ကျော်လွန်ကြောင်း ရှင်းရှင်းလင်းလင်း သိမြင်နိုင်ပါသည်။ ထို့ကြောင့်၊ ဤလေ့လာတွေ့ရှိချက်နှစ်ခုကို ဆုတ်ယုတ်မှုပုံစံကို အပျက်သဘောဆောင်သော သက်ရောက်မှုရှိသော သြဇာရှိသော ဒေတာအချက်များအဖြစ် ခွဲခြားသတ်မှတ်ပါမည်။
အကယ်၍ ကျွန်ုပ်တို့သည် 4/n သတ်မှတ်ချက်ထက်ကျော်လွန်သော စောင့်ကြည့်မှုအားလုံးကို ဖယ်ရှားလိုပါက အောက်ပါကုဒ်ကို အသုံးပြု၍ လုပ်ဆောင်နိုင်သည်-
#identify influential points influential_obs <- as.numeric(names(cooksD)[(cooksD > (4/n))]) #define new data frame with influential points removed outliers_removed <- outliers[-influential_obs, ]
ထို့နောက် ကျွန်ုပ်တို့သည် အပိုင်းနှစ်ပိုင်းကို နှိုင်းယှဉ်ကြည့်နိုင်သည်- တစ်ခုက လွှမ်းမိုးမှုအမှတ်များနှင့် ဆုတ်ယုတ်မှုမျဉ်းကို ပြသပြီး နောက်တစ်ခုက သြဇာလွှမ်းမိုးမှုအမှတ်များကို ဖယ်ရှားပြီး ဆုတ်ယုတ်မှုမျဉ်းကို ပြသသည်-
#create scatterplot with outliers present outliers_present <- ggplot(data = outliers, aes(x = x, y = y)) + geom_point() + geom_smooth(method = lm) + ylim(0, 200) + ggtitle("Outliers Present") #create scatterplot with outliers removed outliers_removed <- ggplot(data = outliers_removed, aes(x = x, y = y)) + geom_point() + geom_smooth(method = lm) + ylim(0, 200) + ggtitle("Outliers Removed") #plot both scatterplots side by side gridExtra::grid.arrange(outliers_present, outliers_removed, ncol = 2)
သြဇာကြီးမားသော ဒေတာအချက်နှစ်ခုကို ဖယ်ရှားလိုက်သည်နှင့် ဆုတ်ယုတ်မှုမျဉ်းသည် ဒေတာနှင့် အံဝင်ခွင်ကျ မည်မျှ ပိုကောင်းသည်ကို ကျွန်ုပ်တို့ ရှင်းရှင်းလင်းလင်း သိမြင်နိုင်ပါသည်။
နည်းပညာမှတ်စုများ
- စာရင်းအင်းဆော့ဖ်ဝဲလ်အများစုသည် ဒေတာအစုတစ်ခုအတွင်း ကြည့်ရှုမှုတစ်ခုစီအတွက် Cook ၏ အကွာအဝေးကို အလွယ်တကူ တွက်ချက်နိုင်စွမ်းရှိသည်။
- Cook’s Distance သည် သြဇာလွှမ်းမိုးမှုရှိသော အမှတ်များကို ခွဲခြားသတ်မှတ်ရန် နည်းလမ်းတစ်ခုဖြစ်ကြောင်း သတိရပါ။
- သြဇာညောင်းသောအချက်များကို ကိုင်တွယ်ဖြေရှင်းရန် နည်းလမ်းများစွာရှိပါသည်- ဤအချက်များကို ဖယ်ရှားခြင်း၊ ပျမ်းမျှ သို့မဟုတ် အလယ်အလတ်ကဲ့သို့သော တန်ဖိုးတစ်ခုဖြင့် အစားထိုးခြင်း၊ သို့မဟုတ် စံပြအမှတ်များကို ရိုးရှင်းစွာသိမ်းဆည်းထားသော်လည်း ရလဒ်များဆုတ်ယုတ်မှုကို အစီရင်ခံသောအခါ ၎င်းတို့ကို ဂရုတစိုက်မှတ်သားခြင်း အပါအဝင် သြဇာညောင်းသောအချက်များကို ကိုင်တွယ်ဖြေရှင်းရန် နည်းလမ်းများစွာရှိပါသည်။