Point clouds အတွက် r တွင် jitter လုပ်ဆောင်ချက်ကို မည်သို့အသုံးပြုရမည်နည်း။
ဤသင်ခန်းစာသည် point clouds အတွက် R တွင် တုန်လှုပ်ဖွယ်ရာ လုပ်ဆောင်ချက်ကို အချိန်နှင့်မည်သို့အသုံးပြုရမည်ကို ရှင်းပြထားသည်။
တုန်လှုပ်ခြင်းကို ဘယ်အချိန်မှာ သုံးမလဲ။
ဆက်တိုက်ကိန်းရှင်နှစ်ခုကြားရှိ ဆက်နွယ်မှုကို မြင်ယောင်နိုင်စေရန် Scatter plot များသည် အကောင်းဆုံးဖြစ်သည်။ ဥပမာအားဖြင့်၊ အောက်ဖော်ပြပါ အပိုင်းအစသည် အားကစားသမား 100 အတွက် အရပ်နှင့် ကိုယ်အလေးချိန်ကြား ဆက်စပ်မှုကို မြင်ယောင်နိုင်ရန် ကူညီပေးသည်-
#define vectors of heights and weights weights <- runif(100, 160, 240) heights <- (weights/3) + rnorm(100) #create data frame of heights and weights data <- as.data.frame(cbind(weights, heights)) #view first six rows of data frame head(data) # weights heights #1 170.8859 57.20745 #2 183.2481 62.01162 #3 235.6884 77.93126 #4 231.9864 77.12520 #5 200.8562 67.93486 #6 169.6987 57.54977 #create scatterplot of heights vs weights plot(data$weights, data$heights, pch = 16, col = 'steelblue')
သို့သော်၊ တစ်ခါတစ်ရံတွင် ကျွန်ုပ်တို့သည် စဉ်ဆက်မပြတ်ကိန်းရှင်တစ်ခုနှင့် အခြားအဆက်မပြတ် နီးပါး ကိန်းရှင်ကြားရှိ ဆက်ဆံရေးကို မြင်ယောင်ကြည့်ချင်ပေမည်။
ဥပမာအားဖြင့်၊ ရာသီတစ်ခု၏ ပထမဆုံး 10 ဂိမ်းတွင် ဘတ်စကက်ဘောကစားသမားတစ်ဦး စတင်ကစားခဲ့သည့် ဂိမ်းအရေအတွက်ကို ဖော်ပြသည့် အောက်ပါဒေတာအစုံရှိသည်ဆိုပါစို့။
#create data frame games_started <- sample(1:10, 300, TRUE) points_per_game <- 3*games_started + rnorm(300) data <- as.data.frame(cbind(games_started, points_per_game)) #view first six rows of data frame head(data) # games_started points_per_game #1 9 25.831554 #2 9 26.673983 #3 10 29.850948 #4 4 12.024353 #5 4 11.534192 #6 1 4.383127
ဂိမ်းတစ်ခုလျှင် ရမှတ်များသည် စဉ်ဆက်မပြတ် ပြောင်းလဲနိုင်သော ကိန်းရှင်တစ်ခုဖြစ်သော်လည်း စတင်သည့်ဂိမ်းများသည် သီးခြားကွဲပြားသည့် ကွဲပြားမှုတစ်ခုဖြစ်သည်။ ဤ variable နှစ်ခု၏ scatterplot တစ်ခုကို ဖန်တီးရန် ကြိုးစားပါက၊ ၎င်းသည် ပုံသဏ္ဌာန် ဖြစ်သည်-
#create scatterplot of games started vs average points per game
plot(data$games_started, data$points_per_game, pch = 16, col = 'steelblue')
ဤအပိုင်းအစမှ ဂိမ်းများစတင်ချိန် နှင့် ဂိမ်းတစ်ခုလျှင် ပျမ်းမျှရမှတ်များသည် အပြုသဘောဆောင်သော ဆက်ဆံရေးရှိသည်ဟု ဆိုနိုင်သော်လည်း အများအပြားသည် ထပ်နေသောကြောင့် ဇာတ်ကွက်အတွင်းရှိ အမှတ်များကို မြင်ရန် အနည်းငယ်ခက်ခဲပါသည်။
Jitter လုပ်ဆောင်ချက်ကိုအသုံးပြုခြင်းဖြင့်၊ ကျွန်ုပ်တို့သည် ပစ်ထားသော X-axis variable set များသို့ “ noise” အချို့ကို ပေါင်းထည့်နိုင်သည်၊ သို့မှသာ ဇာတ်ကွက်ပေါ်ရှိ အမှတ်များကို ပိုမိုရှင်းလင်းစွာမြင်နိုင်စေရန်-
#add jitter to games started plot( jitter (data$games_started), data$points_per_game, pch = 16, col = 'steelblue')
ဒေတာသို့ ပို၍ဆူညံသံများထည့်ရန် ကိန်းဂဏာန်းအငြင်းအခုံတစ်ခုကို စိတ်ကြိုက်ထည့်သွင်းနိုင်သည်-
#add jitter to games started plot( jitter (data$games_started, 2 ), data$points_per_game, pch = 16, col = 'steelblue')
မူရင်းဒေတာကို အလွန်အကျွံ ကမောက်ကမဖြစ်စေနိုင်သောကြောင့် အလွန်တုန်လှုပ်ခြင်းကို မထည့်မိစေရန် သတိထားရပါမည်။
plot( jitter (data$games_started, 20 ), data$points_per_game, pch = 16, col = 'steelblue')
Jittering သည် ဒေတာကို ပိုမိုကောင်းမွန်သော အမြင်ကို ပေးသည်။
discrete variable ၏ အဆင့်များထဲမှ တစ်ခုသည် အခြားအဆင့်များထက် တန်ဖိုးများစွာ ပိုရှိနေသောအခါ မတည်ငြိမ်မှုသည် အထူးအသုံးဝင်သည်။
ဥပမာအားဖြင့်၊ အောက်ပါဒေတာအတွဲတွင်၊ ရာသီ၏ပထမ 5 ပွဲတွင် 2 ပွဲကိုစတင်သည့်ဘတ်စကက်ဘောကစားသမားသုံးရာရှိသော်လည်း 1၊ 3၊ 4 သို့မဟုတ် 5 ဂိမ်းစသည့်ကစားသမား 100 ခန့်သာရှိသည်-
games_started <- sample(1:5, 100, TRUE) points_per_game <- 3*games_started + rnorm(100) data <- as.data.frame(cbind(games_started, points_per_game)) games_twos <- rep(2, 200) points_twos <- 3*games_twos + rnorm(200) data_twos <- as.data.frame(cbind(games_twos, points_twos)) names(data_twos) <- c('games_started', 'points_per_game') all_data <- rbind(data, data_twos)
ဂိမ်းတစ်ခုလျှင် ပျမ်းမျှရမှတ်များနှင့် နှိုင်းယှဉ်လျှင် ကစားသည့်ဂိမ်းအရေအတွက်ကို မြင်ယောင်ကြည့်သောအခါ၊ ဂိမ်း 2 ခု ကစားဖူးသည့် ကစားသမား ပိုများသည်ဟု ပြောနိုင်သော်လည်း အခြားဂိမ်း 2 ခု ကစားဖူးသူမည်မျှရှိသည်ကို အတိအကျပြောရန် ခက်ခဲသည်-
plot(all_data$games_started, all_data$points_per_game, pch = 16, col = 'steelblue')
သို့သော်၊ ဂိမ်းစတင်သည့် variable တွင် တုန်လှုပ်ခြင်းကို ပေါင်းထည့်လိုက်သည်နှင့်၊ ဂိမ်း 2 ခုကို နောက်ထပ်ကစားသမား မည်မျှစတင်ခဲ့သည်ကို ကျွန်ုပ်တို့ မြင်တွေ့နိုင်သည်-
plot( jitter (all_data$games_started), all_data$points_per_game,
pch=16, col='steelblue')
တုန်လှုပ်မှု ပမာဏ အနည်းငယ် တိုးလာခြင်းသည် ဤခြားနားချက်ကို ပို၍ပင် ထင်ရှားစေသည်။
plot( jitter (all_data$games_started, 1.5 ), all_data$points_per_game, pch=16, col='steelblue')
အမြင်အာရုံအတွက်သာ တုန်လှုပ်ခြင်း။
အစောပိုင်းတွင်ဖော်ပြခဲ့သည့်အတိုင်း၊ တုန်လှုပ်ခြင်းသည် point cloud တွင်ဒေတာကိုမြင်ယောင်လိုသောအခါတွင်အကျိုးရှိသောဒေတာအတွက်ကျပန်းဆူညံသံကိုထပ်လောင်းပေးသည်။ jitter function ကိုအသုံးပြုခြင်းဖြင့် data set တစ်ခုရှိ variable နှစ်ခုကြားရှိ စစ်မှန်သောအရင်းခံဆက်နွယ်မှု၏ ပိုမိုကောင်းမွန်သောရုပ်ပုံလွှာကို ကျွန်ုပ်တို့ရရှိနိုင်ပါသည်။
သို့သော်၊ ဆုတ်ယုတ်မှုကဲ့သို့သော ကိန်းဂဏန်းဆိုင်ရာ ခွဲခြမ်းစိတ်ဖြာမှုကို အသုံးပြုသည့်အခါ၊ ခွဲခြမ်းစိတ်ဖြာမှု၏ရလဒ်များကို သက်ရောက်မှုရှိနိုင်သောကြောင့် ဒေတာအတွဲတစ်ခုအတွင်းရှိ ကိန်းရှင်များထံ ကျပန်းဆူညံသံများထည့်ခြင်းသည် အဓိပ္ပာယ်မရှိပေ။
ထို့ကြောင့် jitter သည် data analysis အတွက်မဟုတ်ဘဲ data visualization အတွက်သာ အသုံးပြုရန် ရည်ရွယ်ပါသည်။