Chỉ số thống kê cơ bản

Đặc trưng trung tâm

Trung bình (Mean)

Trung bình của một biến ngẫu nhiên (X), thường được tính theo công thức:

  • Trung bình số học: Thường áp dụng khi tính với số dạng tuyệt đố
  • Trung bình nhân: Thường áp dụng khi tính trung bình của tỷ lệ, tốc độ tăng …

\[ \bar{X} = \frac{1}{n} \sum_{i=1}^{n} X_{i}\]

\[\bar{X} = (\prod_i r_{i})^\frac{1}{n} \]

  • Ví dụ
# Tính trung bình cộng
x <-  1:20
mean(x)
## [1] 10.5
# Tính trung bình nhân
set.seed(158)
r <-  runif(10, min = 0)
exp(sum(log(r)) / length(r))
## [1] 0.5164973
# So sánh kết quả với package psych
psych::geometric.mean(r)
## [1] 0.5164973
# So sánh với trung bình cộng
mean(r)
## [1] 0.5812491

Trung vị (Median)

Trung vị là giá trị nằm giữa các giá trị của biến ngẫu nhiên, đặc trưng này thường chỉ có ý nghĩa khi các giá trị có thể có rời rạc, hữu hạn

  • Nếu dãy quan sát có 2n+1 quan sát xếp theo thứ tự tăng dần thì giá trị thứ n+1 là trung vị, nếu có 2n quan sát thì trung vị là trung bình của giá trị thứ (2n-1)/2 và (2n+1)/2

  • Ví dụ:

#Ví dụ với dãy có 2n+1 quan sát
y <- 1:21
median(y)
## [1] 11
# Ví dụ với dãy có 2n quan sát
median(x)
## [1] 10.5

Mốt (Mode)

Mốt của biến ngẫu nhiên X là giá trị tương ứng với xác suất lớn nhất. Một biến có thể có nhiều mốt và như vậy số giá trị mốt càng ít thì ý nghĩa của mốt càng lớn

  • Ví dụ:
m <- sample(c('a', 'b', 'c', 'd'), size = 20, replace = T)

m %>% table() %>% sort()
## .
## b d a c 
## 4 4 5 7

Đặc trưng về độ phân tán

Phương sai (Variance)

Là trung bình của bình phương khoảng cách của mỗi điểm dữ liệu tới trung bình. Hay trung bình bình phương các độ lệch

Phương sai tổng thể: \[\sigma^2 = \frac{1}{n} \sum_{i=1}^{n} (X_{i} - \bar{X})^2\]

Do mất đi 1 bậc tự do nên Phương sai mẫu: \[ S^2 = \frac{1}{n-1} \sum_{i=1}^{n} (X_{i} - \bar{X})^2\]

Độ lệch chuẩn (Standard error)

Độ lệch chuẩn tổng thể: \[\sigma =\sqrt{\frac{1}{n} \sum_{i=1}^{n} (X_{i} - \bar{X})^2}\]

Độ lệch chuẩn mẫu: \[S = \sqrt{\frac{1}{n-1} \sum_{i=1}^{n} (X_{i} - \bar{X})^2} \]

Sai số trung bình tuyệt đối

\[ ASD = \frac{1}{n} \sum_{i=1}^{n} |X_{i} - \bar{X}|\]

Tứ phân vị

  • Sắp xếp số liệu quan sát theo chiều tăng dần, các giá trị tương ứng với các tần suất tích luỹ 25%, 50%, 75% gọi là tứ phân vị thứ nhất, thứ hai và thứ 3; ký hiệu Q1, Q2, và Q3. Khoảng từ giá trị nhỏ nhất đến Q1 gọi là khoảng tứ phân vị thứ nhất (SQ1); khoảng từ Q1 đến Q2 gọi là khoảng tứ phân vị thứ 2 (SQ2) …

  • Thông thường các giá trị quan sát tập trung trong khoảng (Q1, Q3) khoảng này gọi là khoảng giá trị chuẩn hay còn gọi là khoảng tứ phân vị (IQR)

  • Q1 là giá trị quan sát thứ i(1) xác định theo công thức i(1)=(n+1)/4. Nếu n+1 không chia hết cho 4, chẳng hạn n=22, (n+1)/4=5 người ta chọn Q1 là giá trị nằm ở vị trí 3/4 của khoảng X5 và X6. Tứ phân vị thứ 3 cũng tính tương tự như vậy. Chẳng hạn vẫn với n=22 thì i(3)=3(n+1)/4=17 .

Khoảng biến thiên (range)

Được tính bảng độ lớn của hiệu hai giá trị quan sát lớn nhất và nhỏ nhất

Hạng của dãy quan sát (rank)

  • Hạng của dãy quan sát là số quan sát khác nhau.

  • Nếu hay dãy quan sát có khoảng biến thiên như nhau thì có thể so sánh hạng của chúng để so sánh độ phân tán.

Hệ số biến thiên

Hệ số biến thiên là tỷ số giữa độ lệch tiêu chuẩn và giá trị trung bình

Các đặc trưng dạng phân phối

Hai đặc trưng cơ bản về dạng phân phối là độ bất đối xứng và độ nhọn

Độ bất đối xứng (độ xiên) (skewness)

  • Công thức tính: wiki

\[ Skew = \frac{\frac{1}{n} \sum_{i=1}^{n} (X_{i} - \bar{X})^3}{\sqrt{\frac{1}{n-1} \sum_{i=1}^{n} (X_{i} - \bar{X})^2}^3} \]

  • Negative skew: đuôi bên trái dài hơn ~ phân phối lệch trái
  • mean < median < mode
negative_skew <- data.frame(negative_skew = rbeta(10000,50,2))

negative_skew %>% 
  ggplot() +
  geom_density(aes(x = negative_skew), fill = 'red', alpha= 0.2) +
  geom_vline(aes(xintercept = mean(negative_skew)), color = 'green', size = 2) +
  geom_vline(aes(xintercept = median(negative_skew)), color = 'blue', size = 2) +
  geom_text(aes(x = mean(negative_skew), y = 0, label = "mean"), angle=90, hjust = -1, vjust = -0.5) +
  geom_text(aes(x = median(negative_skew), y = 0, label = "median"), angle=90, hjust = -1.5, vjust = 2)

describeBy(negative_skew)
## Warning in describeBy(negative_skew): no grouping variable requested
##    vars     n mean   sd median trimmed  mad min max range  skew kurtosis
## X1    1 10000 0.96 0.03   0.97    0.96 0.02 0.8   1   0.2 -1.26     2.27
##    se
## X1  0
  • Positive skew: đuôi bên phải dài hơn ~ phân phối lệch phải
  • Trong trường hợp này mode < median < mean
positive_skew <- data.frame(positive_skew = rbeta(10000, 2, 50))

positive_skew %>% 
  ggplot() +
  geom_density(aes(x = positive_skew), fill = 'red', alpha= 0.2) +
  geom_vline(aes(xintercept = mean(positive_skew)), color = 'green', size = 1.5) +
  geom_vline(aes(xintercept = median(positive_skew)), color = 'blue', size = 1.5) +
  geom_text(aes(x = mean(positive_skew), y = 0, label = "mean"), angle=90, hjust = -1, vjust = 1) +
  geom_text(aes(x = median(positive_skew), y = 0, label = "median"), angle=90, hjust = -1.5, vjust = -0.5)

describeBy(positive_skew)
## Warning in describeBy(positive_skew): no grouping variable requested
##    vars     n mean   sd median trimmed  mad min  max range skew kurtosis
## X1    1 10000 0.04 0.03   0.03    0.04 0.02   0 0.22  0.21 1.29     2.42
##    se
## X1  0

Độ nhọn (Kurtosis)

  • Công thức tính: wiki

\[ Kurt = \frac{\frac{1}{n} \sum_{i=1}^{n} (X_{i} - \bar{X})^4}{(\frac{1}{n} \sum_{i=1}^{n} (X_{i} - \bar{X})^2)^2} \]

  • So sánh độ nhọn của 2 phân phối
set.seed(158)
df <- data.frame(x1 = rnorm(1000, mean = 0, sd = 3),
                 x2 = rnorm(1000, mean = 0, sd = 1),
                 x3 = rnorm(1000, mean = 5, sd = 1)) 
                 
df %>% 
ggplot() +
  geom_density(aes(x = x1), fill = 'red', alpha = 0.2) +
  geom_density(aes(x = x2), fill = 'blue', alpha = 0.2)+
  geom_text(aes(x = mean(x1), y = 0.1), 
            label = paste('Kurtosis', round(kurtosi(df$x1), 2)), 
            color = 'red') +
  geom_text(aes(x = mean(x1), y = 0.4), 
            label = paste('Kurtosis',round(kurtosi(df$x2), 2)), 
            color = 'blue') +
  labs(x = 'Range x')

Phân phối

Give an introduction to section 1

Phân phối chuẩn: wiki

set.seed(158)

df2 <- data.frame(x = rnorm(1000, mean = 10, sd = 3),
                 y = rnorm(1000, mean = 10, sd = 8),
                 z = rbeta(1000, 5, 2)) 

df2 %>% 
  ggplot() +
  geom_density(aes(x), alpha = 0.3, fill = '#C42E26') +
  geom_density(aes(y), alpha = 0.3, fill = 'Yellow') 

df2 %>% describe()
##   vars    n  mean   sd median trimmed  mad    min   max range  skew
## x    1 1000  9.81 3.01   9.87    9.77 3.09   1.50 19.29 17.79  0.14
## y    2 1000 10.27 7.89  10.15   10.27 7.93 -12.62 37.55 50.17  0.06
## z    3 1000  0.71 0.16   0.73    0.73 0.16   0.17  0.99  0.82 -0.58
##   kurtosis   se
## x    -0.04 0.10
## y     0.18 0.25
## z    -0.07 0.00

Phân phối T-student

  • wiki

  • Là phân phối đơn giản nhất, hàm phân phối chỉ có tham số duy nhất là số bậc tự do

set.seed(158)

df3 <- data.frame(k1 = rt(1000, 1),
                  k2 = rt(1000, 2),
                  k3 = rt(1000, 3),
                  k5 = rt(1000, 5),
                  k10 = rt(1000, 10),
                  k30 = rt(1000, 10))

df3 %>% gather() %>% 
  mutate(key = fct_relevel(key, "k1", "k2", "k3", "k5", "k10", "k30"))  %>% 
  ggplot() +
  geom_density(aes(x = value, color = key), alpha = 0, size = 1) +
  scale_x_continuous(limits = c(-6, 6)) +
  facet_wrap( ~key)
## Warning: Removed 128 rows containing non-finite values (stat_density).

df3 %>% gather() %>% 
  mutate(key = fct_relevel(key, "k1", "k2", "k3", "k5", "k10", "k30"))  %>% 
  ggplot() +
  geom_density(aes(x = value, color = key), alpha = 0) +
  scale_x_continuous(limits = c(-4, 4)) 
## Warning: Removed 253 rows containing non-finite values (stat_density).

  • So sánh phân phối chuẩn và T-student k = 30
df4 <- data.frame(x = rnorm(1000, 0, 1),
                  y = rnorm(1000, 5, 1),
                  z = rt(1000, 30))


p1 <- df4 %>% ggplot() +
  geom_density(aes(x), alpha = 0.3, fill = '#C42E26')+
  geom_density(aes(z), alpha = 0.2, fill = 'blue') +
  geom_text(aes(x = 0, y = 0.1), label = paste('Normal, mean = 0, sd = 1')) +
  geom_text(aes(x = 0, y = 0.2), label = paste('T-student, k = 30')) +
  labs(x = 'x-z')



p2 <-df4 %>% ggplot() +
  geom_density(aes(y), alpha = 0.3, fill = '#C42E26')+
  geom_density(aes(z), alpha = 0.2, fill = 'blue') +
  geom_text(aes(x = 5, y = 0.1), label = paste('Normal, mean = 5, sd = 1')) +
  geom_text(aes(x = 0, y = 0.2), label = paste('T-student, k = 30')) +
  labs(x = 'y-z')

stable<- df4 %>% 
  describe() %>% 
  mutate_if(is.numeric, function(x){round(x, digits = 2)}) %>% 
  mutate(vars = c("x", "y", "z"))

stable.p <- ggtexttable(stable, rows = NULL,
                        theme = ttheme("mRed"))

ggarrange(
  ggarrange(p1, p2, ncol = 2),
  stable.p,
  nrow = 2)

Phân phối khác

xxx

Ước lượng khoảng tin cậy

Khoảng tin cậy của trung bình

Khoảng tin cậy của phương sai