การวัดการกระจายของข้อมูล

สถิติเบื้องต้นใน R

Maggie Matsui

Content Developer, DataCamp

การกระจายคืออะไร?

ฮิสโทแกรมสองอัน: อันแรกแคบมีข้อมูลกระจายในช่วงแคบ อีกอันกว้างกว่ามีข้อมูลกระจายในช่วงกว้าง

สถิติเบื้องต้นใน R

ความแปรปรวน

ระยะห่างเฉลี่ยจากแต่ละจุดข้อมูลถึงค่าเฉลี่ย กราฟ dot plot ของ 7 จุดข้อมูล มีเส้นสีดำตรงกลางแทนค่าเฉลี่ย

สถิติเบื้องต้นใน R

การคำนวณความแปรปรวน

กราฟ dot plot ของ 7 จุดข้อมูล มีเส้นสีดำตรงกลางแทนค่าเฉลี่ย และลูกศรลากจากแต่ละจุดไปยังเส้นกลาง

dists <- msleep$sleep_total - mean(msleep$sleep_total)
dists
1.66626506  6.56626506 ... -4.13373494  2.06626506 -0.63373494
สถิติเบื้องต้นใน R

การคำนวณความแปรปรวน

squared_dists <- (dists)^2
2.776439251 43.115836841 ... 17.087764552  4.269451299  0.401619974
sum_sq_dists <- sum(squared_dists)
sum_sq_dists
1624.066
สถิติเบื้องต้นใน R

การคำนวณความแปรปรวน

sum_sq_dists/82
19.80568
var(msleep$sleep_total)
19.80568
สถิติเบื้องต้นใน R

ส่วนเบี่ยงเบนมาตรฐาน

sqrt(var(msleep$sleep_total))
4.450357
# Standard deviation of 'sleep_total'
sd(msleep$sleep_total)
4.450357
สถิติเบื้องต้นใน R

ค่าเบี่ยงเบนสัมบูรณ์เฉลี่ย

dists <- msleep$sleep_total - mean(msleep$sleep_total)
mean(abs(dists))
3.566701

 

ส่วนเบี่ยงเบนมาตรฐาน vs. ค่าเบี่ยงเบนสัมบูรณ์เฉลี่ย

  • SD ยกกำลังสองระยะห่าง ทำให้ระยะห่างที่มากถูกลงโทษหนักกว่า
  • MAD ลงโทษแต่ละระยะห่างเท่ากัน
  • ไม่มีค่าไหนดีกว่ากัน แต่ SD ใช้กันแพร่หลายกว่า MAD
สถิติเบื้องต้นใน R

ควอร์ไทล์

quantile(msleep$sleep_total)
   0%   25%   50%   75%  100% 
 1.90  7.85 10.10 13.75 19.90

ควอร์ไทล์ที่สอง/เปอร์เซ็นไทล์ที่ 50 = ค่ามัธยฐาน

สถิติเบื้องต้นใน R

Boxplot ใช้ควอร์ไทล์

ggplot(msleep, aes(y = sleep_total)) +
  geom_boxplot()

Boxplot แสดงเวลานอนรวมของสัตว์เลี้ยงลูกด้วยนม

สถิติเบื้องต้นใน R

ควอนไทล์

quantile(msleep$sleep_total, probs = c(0, 0.2, 0.4, 0.6, 0.8, 1))
   0%   20%   40%   60%   80%  100% 
 1.90  6.24  9.48 11.14 14.40 19.90

seq(from, to, by)

quantile(msleep$sleep_total, probs = seq(0, 1, 0.2))
   0%   20%   40%   60%   80%  100% 
 1.90  6.24  9.48 11.14 14.40 19.90
สถิติเบื้องต้นใน R

พิสัยควอร์ไทล์ (IQR)

ความสูงของกล่องใน boxplot

iqr = quantile(msleep$sleep_total, 0.75) - quantile(msleep$sleep_total, 0.25)
iqr
75%
5.9
สถิติเบื้องต้นใน R

ค่าผิดปกติ (Outliers)

ค่าผิดปกติ (Outlier): จุดข้อมูลที่แตกต่างจากจุดอื่นอย่างมีนัยสำคัญ

จะรู้ได้อย่างไรว่าต่างกันมากพอ? จุดข้อมูลจะถือเป็น outlier เมื่อ:

  • $\text{data} < \text{Q1} - 1.5\times\text{IQR}$    หรือ
  • $\text{data} > \text{Q3} + 1.5\times\text{IQR}$
สถิติเบื้องต้นใน R

การหาค่าผิดปกติ

iqr <- quantile(msleep$bodywt, 0.75) - quantile(msleep$bodywt, 0.25)

lower_threshold <- quantile(msleep$bodywt, 0.25) - 1.5 * iqr upper_threshold<- quantile(msleep$bodywt, 0.75) + 1.5 * iqr
msleep %>% filter(bodywt < lower_threshold | bodywt > upper_threshold ) %>% 
  select(name, vore, sleep_total, bodywt)
# A tibble: 11 x 4
   name                 vore  sleep_total bodywt
   <chr>                <chr>       <dbl>  <dbl> 
 1 Cow                  herbi         4      600 
 2 Asian elephant       herbi         3.9   2547 
 3 Horse                herbi         2.9    521 
 ...
สถิติเบื้องต้นใน R

มาฝึกกันเถอะ!

สถิติเบื้องต้นใน R

Preparing Video For Download...