R တွင် outliers ကိုမည်သို့ဖယ်ရှားရမည်နည်း
Outlier သည် ဒေတာအတွဲတစ်ခုရှိ အခြားတန်ဖိုးများနှင့် ပုံမှန်မဟုတ်စွာ ဝေးကွာနေသော စူးစမ်းမှုတစ်ခုဖြစ်သည်။ ခွဲခြမ်းစိတ်ဖြာမှု၏ရလဒ်များကို ထိခိုက်စေနိုင်သောကြောင့် အစွန်းထွက်သူများသည် ပြဿနာရှိနိုင်သည်။
ဤသင်ခန်းစာတွင် R တွင် အစွန်းအထင်းများကို ခွဲခြားပြီး ဖယ်ရှားနည်းကို ရှင်းပြထားသည်။
R တွင် outliers ခွဲခြားနည်း
အစွန်းကွက်များကို ဖယ်ရှားခြင်းမပြုမီ၊ သင်သည် အစွန်းထွက်တစ်ခုဟု သင်ယူဆသောအရာကို ဦးစွာဆုံးဖြတ်ရပါမည်။ ဒီလိုလုပ်ဖို့ ဘုံနည်းလမ်းနှစ်ခုရှိပါတယ်
1. ကြားကာလအပိုင်းအခြားကို အသုံးပြုပါ။
interquartile အကွာအဝေး (IQR) သည် ဒေတာအတွဲတစ်ခုတွင် 75th ရာခိုင်နှုန်း (Q3) နှင့် 25th percentile (Q1) အကြား ကွာခြားချက်ဖြစ်သည်။ ၎င်းသည် ပျမ်းမျှတန်ဖိုးများ၏ 50% ခွဲဝေမှုကို တိုင်းတာသည်။
တတိယ quartile (Q3) ထက် 1.5 ဆ သို့မဟုတ် ပထမ quartile (Q1) အောက်ရှိ interquartile အပိုင်းအခြား 1.5 ဆ အထက်ရှိ ကြားခံအကွာအဝေး၏ 1.5 ဆ ဖြစ်ပါက စောင့်ကြည့်မှုတစ်ခုကို အကြမ်းဖျင်းအဖြစ် သတ်မှတ်နိုင်သည်။
Outliers = အကဲဖြတ်ချက်များ > Q3 + 1.5*IQR သို့မဟုတ် < Q1 – 1.5*IQR
2. z-ရမှတ်များကိုသုံးပါ။
z-score သည် သင့်အား ပေးထားသောတန်ဖိုးမှ စံသွေဖည်မည်မျှရှိသည်ကို ပြောပြသည်။ z-score ကိုတွက်ချက်ရန် အောက်ပါဖော်မြူလာကို ကျွန်ုပ်တို့အသုံးပြုသည်-
z = (X – μ) / σ
ရွှေ-
- X သည် ဒေတာအကြမ်းတစ်ခုတည်းတန်ဖိုးဖြစ်သည်။
- µ သည် လူဦးရေကို ဆိုလိုသည်။
- σ သည် လူဦးရေစံသွေဖည်သည်။
၎င်း၏ z-score သည် -3 ထက်နည်းပါက သို့မဟုတ် 3 ထက်ကြီးပါက စောင့်ကြည့်မှုတစ်ခုအား အကြမ်းဖျင်းအဖြစ် သတ်မှတ်နိုင်သည်။
Outliers = z-scores > 3 သို့မဟုတ် < -3 ပါသော စောင့်ကြည့်မှုများ
R တွင် outliers ကိုမည်သို့ဖယ်ရှားနည်း
သာလွန်သည်ဟု သင်ယူဆသောအရာကို သင်ဆုံးဖြတ်ပြီးသည်နှင့် ၎င်းတို့ကို ဒေတာအတွဲတစ်ခုမှ ဖော်ထုတ်ပြီး ဖယ်ရှားနိုင်သည်။ ၎င်းကိုပြုလုပ်ပုံကို သရုပ်ဖော်ရန်၊ ကျွန်ုပ်တို့သည် အောက်ပါဒေတာဘောင်ကို အသုံးပြုပါမည်-
#make this example reproducible set.seed(0) #create data frame with three columns A', 'B', 'C' df <- data.frame(A=rnorm(1000, mean=10, sd=3), B=rnorm(1000, mean=20, sd=3), C=rnorm(1000, mean=30, sd=3)) #view first six rows of data frame head(df) ABC 1 13.78886 19.13945 31.33304 2 9.02130 25.52332 30.03579 3 13.98940 19.52971 29.97216 4 13.81729 15.83059 29.09287 5 11.24392 15.58069 31.47707 6 5.38015 19.79144 28.19184
ထို့နောက် z-score method သို့မဟုတ် interquartile range method ကို အသုံးပြု၍ outliers များကို သတ်မှတ်ပြီး ဖယ်ရှားနိုင်သည်-
Z-ရမှတ် နည်းလမ်း-
အောက်ပါကုဒ်သည် data frame ကော်လံတစ်ခုစီရှိ တန်ဖိုးတစ်ခုစီ၏ z-score ကို တွက်ချက်နည်းကို ပြသပြီး 3 ထက်ကြီးသော ပကတိတန်ဖိုး အနည်းဆုံး z-ရမှတ်တစ်ခုရှိသော အတန်းများကို ဖယ်ရှားသည်-
#find absolute value of z-score for each value in each column z_scores <- as.data.frame (sapply(df, function(df) (abs(df-mean(df))/sd(df)))) #view first six rows of z_scores data frame head(z_scores) ABC 1 1.2813403 0.25350805 0.39419878 2 0.3110243 1.80496734 0.05890232 3 1.3483190 0.12766847 0.08112630 4 1.2908343 1.32044506 0.38824414 5 0.4313316 1.40102642 0.44450451 6 1.5271674 0.04327186 0.70295309 #only keep rows in dataframe with all z-scores less than absolute value of 3 no_outliers <- z_scores[!rowSums(z_scores>3), ] #view row and column count of new data frame dim(no_outliers) [1] 994 3
မူရင်းဒေတာဘောင်တွင် အတန်း 1000 နှင့် ကော်လံ 3 ခုရှိသည်။ ဒေတာဘောင်အသစ်တွင် အတန်း 994 တန်းနှင့် ကော်လံ 3 ခုပါရှိသည်၊ ၎င်းတို့တွင် ကော်လံတစ်ခုတွင် 3 ထက်ကြီးသော ပကတိတန်ဖိုး အနည်းဆုံး z-ရမှတ်တစ်ခုရှိသောကြောင့် အတန်း 6 တန်းကို ဖယ်ရှားခဲ့ကြောင်း ကျွန်ုပ်တို့ကိုပြောပြသည်။
Interquartile အပိုင်းအခြားနည်းလမ်း-
အချို့ကိစ္စများတွင်၊ ကျွန်ုပ်တို့သည် ဒေတာဘောင်တစ်ခု၏ ကော်လံတစ်ခုတွင် အစွန်းထွက်များကိုသာ ခွဲခြားသတ်မှတ်လိုပေမည်။ ဥပမာအားဖြင့်၊ ကျွန်ုပ်တို့သည် ကျွန်ုပ်တို့၏ဒေတာဘောင်၏ကော်လံ “ A” ရှိ အစွန်းတစ်ခုပါသော အတန်းများကိုသာ ဖယ်ရှားလိုသည်ဆိုကြပါစို့။
အောက်ပါကုဒ်သည် ကော်လံ “ A” ရှိ တန်ဖိုးသည် တတိယ quartile (Q3) ထက် 1.5 ဆ သို့မဟုတ် ပထမ quartile (Q1) အောက်ရှိ interquartile အပိုင်းအခြား 1.5 ဆ ရှိသော ဒေတာဘောင်မှ အတန်းများကို ဖယ်ရှားနည်းကို ပြသသည်။ .
#find Q1, Q3, and interquartile range for values in column A Q1 <- quantile(df$A, .25) Q3 <- quantile(df$A, .75) IQR <- IQR(df$A) #only keep rows in dataframe that have values within 1.5*IQR of Q1 and Q3 no_outliers <- subset(df, df$A> (Q1 - 1.5*IQR) & df$A< (Q3 + 1.5*IQR)) #view row and column count of new data frame dim(no_outliers) [1] 994 3
မူရင်းဒေတာဘောင်တွင် အတန်း 1000 နှင့် ကော်လံ 3 ခုရှိသည်။ ဒေတာဘောင်အသစ်တွင် အတန်း 994 တန်းနှင့် ကော်လံ 3 ခုပါရှိပြီး ၎င်းတို့တွင် ကော်လံ A တွင် အနည်းဆုံး အကွာအဝေးတစ်ခုပါဝင်သောကြောင့် အတန်း 6 တန်းကို ဖယ်ရှားလိုက်ကြောင်း ပြောပြသည်။
အစွန်းအထင်းတွေကို ဘယ်အချိန်မှာ ဖယ်ရှားရမလဲ
တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော အစွန်းအထင်းများရှိနေပါက၊ ၎င်းတို့သည် ဒေတာထည့်သွင်းမှုအမှား၏ရလဒ်မဟုတ်ကြောင်း ဦးစွာစစ်ဆေးရပါမည်။ တစ်ခါတစ်ရံတွင် တစ်ဦးတစ်ယောက်သည် ဒေတာကိုသိမ်းဆည်းစဉ်တွင် မှားယွင်းသောဒေတာတန်ဖိုးကို ရိုးရှင်းစွာထည့်သွင်းပါသည်။
အကြမ်းဖျင်းသည် ဒေတာထည့်သွင်းမှု အမှားတစ်ခု၏ ရလဒ်ဖြစ်လာပါက၊ ဒေတာအစု၏ ပျမ်းမျှ သို့မဟုတ် အလယ်တန်း ကဲ့သို့ တန်ဖိုးအသစ်တစ်ခု သတ်မှတ်ရန် သင်ဆုံးဖြတ်နိုင်သည်။
တန်ဖိုးသည် အမှန်တကယ် သာလွန်နေပါက၊ ၎င်းသည် သင်၏ အလုံးစုံခွဲခြမ်းစိတ်ဖြာမှုအပေါ် သိသာထင်ရှားသော သက်ရောက်မှုရှိမည်ဆိုပါက ၎င်းကို ဖယ်ရှားရန် သင်ရွေးချယ်နိုင်ပါသည်။ သာဓကတစ်ခုကို သင်ဖယ်ရှားလိုက်သော သင်၏နောက်ဆုံးအစီရင်ခံစာ သို့မဟုတ် ခွဲခြမ်းစိတ်ဖြာမှုတွင် သေချာစွာဖော်ပြပါ။
ထပ်လောင်းအရင်းအမြစ်များ
ဤသင်ခန်းစာတွင်၊ ကျွန်ုပ်တို့သည် vector length n ၊ လူဦးရေပျမ်းမျှ μ နှင့် လူဦးရေစံသွေဖည် σ တို့အား ပေးသော ပုံမှန်ဖြန့်ဝေထားသော ကျပန်းကိန်းရှင်များ၏ vector များကို ဖန်တီးရန်အတွက် rnorm() ကိုအသုံးပြုထားပါသည်။ ဤအင်္ဂါရပ်အကြောင်းကို ဤနေရာတွင် သင်ပိုမိုလေ့လာနိုင်ပါသည်။
z-score များကိုတွက်ချက်သည့်ဒေတာဘောင်တစ်ခုရှိ ကော်လံတစ်ခုစီတွင် လုပ်ဆောင်ချက်တစ်ခုကို အသုံးချရန်အတွက်လည်း sapply() ကို အသုံးပြုပါသည်။ ဤအင်္ဂါရပ်အကြောင်းကို ဤနေရာတွင် သင်ပိုမိုလေ့လာနိုင်ပါသည်။