1. Phân tích thống kê mô tả(Descriptive Statistics)

Khi nói đến thống kê mô tả, chúng ta thường nghĩ đến tính toán các đại lượng đặc trưng cho thống kê như giá trị trung bình(mean), giá trị trung vị(median), phương sai(variance), độ lệch chuẩn(sd-standard deviation)….cho các biến số liên tục và tính tỉ số ước lượng phần trăm cho các biến số không liên tục. Trước khi đến với các đơn vị này, chúng ta cần nhắc tới lại hai khái niệm quan trọng trong thống kê, đó chính là mẫu(sample) và tổng thể(population).

1.1. Khái niệm tổng thể và mẫu

Mục tiêu của khoa học thực nghiệm chính là nghiên cứu, khám phá những thứ mà chúng ta chưa biết được. Để khám phá chúng ta sử dụng đến các phương pháp như phân loại, so sánh và phỏng đoán. Tất cả các phương pháp trên đều sử dụng mô hình thống kê học.

Trong thống kê học, tất cả các mô hình thống kê học cần phải có tham số. Muốn có được chúng ta cần phải tiến hành đo lường, sau đó ước tính thông số từ đo lường. Ví dụ: Muốn biết IQ của sinh viên nữ trường Đại học Công nghệ Thông tin & Truyền thông Thái Nguyên(ICTU) có bằng IQ của sinh viên nam hay không, chúng ta có thể tiến hành nghiên cứu theo hai phương án:

  1. Lập một danh sách tất cả các sinh viên nam và sinh viên nữ của ICTU, đo IQ của từng người, sau đó so sánh giữa hai nhóm.
  2. Lựa chọn ngẫu nhiên một mẫu gồm \(n\) đối tượng là nam sinh viên và \(m\) nữ sinh viên, đo IQ của từng người, sau đó so sánh giữa 2 nhóm.

Chúng ta nhận thấy rằng phương án \(a\) rất tốn kém và không thực tế, vì rất khó chúng ta có thể thu thập được hết tất cả IQ của các bạn sinh viên nam và nữ trong trường. Có người bỏ học, có người nghỉ, có người về quê, có sinh viên không đến trường….Tuy nhiên nếu thực hiện được phương pháp này thì thống kê học không còn ý nghĩa gì nữa. Giá trị so sánh chiều cao của nam và nữ trong phương án này luôn là phương án tối ưu và cuối cùng, khi đó chúng ta không cần suy luận và cũng không cần đến kiểm định thống kê nữa

Ở phương án \(b\) đòi hỏi chúng ta phải lựa chọn \(n\)\(m\) sao cho 2 số này mang tính đại diện cho hai đối tượng nam và nữ của ICTU(representative). Tính đại diện ở đây có nghĩa là số sinh viên nam, nữ này phải có cùng đặc tính như độ tuổi, trình độ học vấn, thành phần kinh tế, xã hội, nơi sinh sống…so với tổng thể sinh viên của trường ICTU. Bởi vì chúng ta không thể biết hết được tất cả các đặc tính này trong tổng thể sinh viên của trường, một phương pháp rất hiệu quả được đưa ra, đó là: Lấy mẫu ngẫu nhiên. Chúng ta cần nhấn mạnh lại rằng, nếu không lấy mẫu ngẫu nhiên thì các ước số từ mẫu sẽ không có giá trị khoa học cao, bởi vì các phương pháp phân tích thống kê dựa vào giả định rằng mẫu phải được chọn một cách ngẫu nhiên.

Lấy một ví dụ cụ thể về tổng thể và mẫu trong R. Ví dụ: Chúng ta có một tổng thể gồm 20 người và biết rằng chiều cao của 20 người này(tính bằng cm) được đo như sau: 162,160,157,155,167,160,161,153,149,157,159,164,150,162,168,165,156,157,154,157. Như vậy chúng ta biết rằng chiều cao trung bình của tổng thể là 158, 65 cm.

Vì một lý do nào đó mà chúng ta không thể nghiên cứu trên toàn tổng thể được mà chỉ có thể trích xuất mẫu từ tổng thể để ước tính chiều cao. Trong R, có thể sử dụng hàm sample() cho phép chúng ta lấy mẫu. Chọn 5 người từ tổng thể:

set.seed(123)
height <- c(162,160,157,155,167,160,161,153,149,157,159,164,150,162,168,165,156,157,154,157)
sample51 <- sample(height, 5)
# Ước tính chiều cao trung bình của mẫu
mean(sample51)
## [1] 159.6
# Lấy một mẫu khác
sample52 <- sample(height, 5)
mean(sample52)
## [1] 161
# Chọn 10 mẫu 
sample101 <- sample(height, 10)
mean(sample101)
## [1] 157.9
sample102 <- sample(height, 10)
mean(sample102)
## [1] 159.5
sample103 <- sample(height, 10)
mean(sample103)
## [1] 158.2
sample104 <- sample(height, 10)
mean(sample104)
## [1] 158.5
sample105 <- sample(height, 10)
mean(sample105)
## [1] 160.7
# Độ dao động từ[155,6 ; 158,9]

Lần lượt lấy mẫu cho 15 và 20 đối tượng chúng ta thấy số trung bình mẫu dao động ít hơn và càng tiến tới giá trị của trung bình tổng thể. Chúng ta có thể rút ra được một nhận xét sau:

Nhận xét: Ước số từ các mẫu được chọn một cách ngẫu nhiên sẽ khác với thông số của tổng thể, nhưng khi số cỡ mẫu tăng lên thì độ khác biệt sẽ nhỏ dần lại. Do đó một trong những vấn đề then chốt của thiết kế nghiên cứu là phải ước tính cỡ mẫu sao cho ước số mà chúng ta thu được từ mẫu gần nhất so với tham số của tổng thể. Trong thống kê học, số trung bình của tổng thể gọi là thông số và các ước số tính được từ mẫu của tổng thể đó gọi là ước số mẫu. Mục tiêu chính của thống kê là sử dụng ước số mẫu để suy luận ra thông số.

1.2. Phân loại biến đo lường

1.2.1. Biến đo lường liên tục (Continuous measurement)

Biến ngẫu nhiên là một thuật ngữ được dùng trong toán học và thống kê. Trong một phép thử ngẫu nhiên (Randomness tests), đầu ra (outcome) của nó có thể là giá trị số hoặc không phải. Ví dụ phép thử ngẫu nhiên là tung một đồng xu lên và xét mặt nào của đồng xu ở phía trên, thì kết quả đầu ra có thể là {sấp, ngửa} (đầu ra không phải là số). Ví dụ phép thử ngẫu nhiên là tung con súc sắc và xem mặt nằm phía trên là có mấy chấm, thì kết quả đầu ra có thể là \({1,2,3,4,5,6}\) (đầu ra là số). Tuy nhiên, trong các ứng dụng của thống kê, người ta muốn mỗi đầu ra đều gắn với một đại lượng đo đạc được, hay còn gọi là thuộc tính có giá trị là số. Để thực hiện điều này, người ta định ra biến ngẫu nhiên để ánh xạ mỗi đầu ra của một phép thử ngẫu nhiên với một giá trị số. Biến ngẫu nhiên có hai loại chính bao gồm biến ngẫu nhiên liên tục và biến ngẫu nhiên rời rạc.

Biến ngẫu nhiên là một hàm toán học với đặc điểm: nó gán một giá trị cho kết quả (đầu ra) của một phép thử ngẫu nhiên (thực nghiệm). \[X(\zeta)=x\]

với \(\zeta\) là đại diện cho đầu ra của một thực nghiệm, \(x\) là một số thực, \(X\) là hàm ánh xạ (hay là biến ngẫu nhiên). Vì thế, người ta còn gọi \(X\)biến ngẫu nhiên giá trị thực(real-valued random variable) Biến liên tục (continuous variable) là biến số có thể nhận bất kỳ giá trị nào trong một khoảng nhất định, tức biến thiên mà không bị gián đoạn.

Ví dụ: Nhiệt độ trong ngày là một biến ngẫu nhiên liên tục, không thể liệt kê hết tất cả các giá trị có thể, và thường nói giá trị nhỏ nhất và giá trị lớn nhất: chẳng hạn như nhiệt độ trong khoảng 20 độ C đến 30 độ C; khi đó \(X\) đơn vị là độ \(C\), và \(X\) nằm trong khoảng (20; 30).

1.2.2. Biến đo lường rời rạc (Discrete measurement)

Ngược với biến liên tục là biến rời rạc.

Biến rời rạc (discrete variable) là biến số chỉ nhận các giá trị nguyên.

Ví dụ: Số con, số người trong gia đình, số lần xét nghiệm, số công nhân trong một doanh nghiệp, số sản phẩm sản xuất ra trong một ngày của 1 phân xưởng may.

1.3. Ước số

Ước số thông dụng nhất để mô tả một biến số liên tục là số trung bình (mean). Ví dụ: Chiều cao của nhóm I gồm 5 đối tượng là \(160,160,167,156,161\). Do đó số trung bình là \(160,8\). Xét 5 đối tượng khác ở nhóm 2: \(142,150,187,180,145\), số trung bình vẫn là \(160,8\). Như vậy số trung bình là như nhau, không thể phản ánh được hết đầy đủ sự phân phối của biến liên tục, dù trung bình bằng nhau như độ khác biệt nhóm 2 lớn hơn nhóm 1 rất nhiều. Khi đó chúng ta dùng phương sai (variance). Phương sai của nhóm 1 là \(15.7cm^{2}\) và nhóm 2 là \(443.7cm^{2}\).

Với một biến số không liên tục như 0 và 1 thì ước số trung bình không có ý nghĩa, khi đó chúng ta dùng ước số tỉ lệ (proportion). Ví dụ trong số 10 người có 2 người tử vong, thì tỉ lệ tử vong là 2/10(0,2%) và kết hợp với phương sai.

2. Áp dụng thống kê mô tả

2.1. Độ lệch chuẩn (SD)

Trước tiên, chúng ta cần phân biệt hai khái niệm là độ lệch chuẩn và sai số chuẩn:

  • Độ lệch chuẩn của một mẫu đo lường mức độ phân tán của bộ dữ liệu trong mẫu đó, độ lệch chuẩn, hay độ lệch tiêu chuẩn (tiếng Anh: standard deviation) là một đại lượng thống kê mô tả dùng để đo mức độ phân tán của một tập dữ liệu đã được lập thành bảng tần số. Có thể tính ra độ lệch chuẩn bằng cách lấy căn bậc hai của phương sai.

Khi hai tập dữ liệu có cùng giá trị trung bình cộng, tập nào có độ lệch chuẩn lớn hơn là tập có dữ liệu biến thiên nhiều hơn. Trong trường hợp hai tập dữ liệu có giá trị trung bình cộng không bằng nhau, thì việc so sánh độ lệch chuẩn của chúng không có ý nghĩa.

Độ lệch chuẩn còn được sử dụng khi tính sai số chuẩn. Khi lấy độ lệch chuẩn chia cho căn bậc hai của số lượng quan sát trong tập dữ liệu, sẽ có giá trị của sai số chuẩn.

Độ lệch chuẩn chính là căn bận hai của phương sai. Do đó, công thức của độ lệch chuẩn cho tổng thể/quần thể sẽ là: \[\sigma=\sqrt{\sigma^{2}} = \sqrt{\sum_{i=1}^{N}\bigg(\frac{X_{i}-\mu}{N}\bigg)}\] Trong đó \(\sigma\) là độ lệch chuẩn của tổng thể/quần thể, \(\mu\) là trung bình của tổng thể/quần thể. \(X_{i}\) là phần tử thứ \(i\) của tổng thể/quần thể và \(N\) là số lượng phần tử của tổng thể/quần thể.

Tương tự, độ lệch chuẩn của mẫu được tính bằng công thức: \[s=\sqrt{s^{2}} = \sqrt{\sum_{i=1}^{n-1}\bigg(\frac{x_{i}-\overline{x}}{N}\bigg)}\] Ta cần phân biệt rõ 2 ký hiệu:

  • σ: Dùng khi nói về quần thể
  • s: Dùng khi nói về mẫu
Ý nghĩa của độ lệch chuẩn:

Độ lệch chuẩn đo tính biến động của giá trị mang tính thống kê. Nó cho thấy sự chênh lệch về giá trị của từng thời điểm đánh giá so với giá trị trung bình. Tính biến động cũng như độ lệch chuẩn sẽ cao hơn nếu giá đóng cửa và giá đóng cửa trên trung bình khác nhau đáng kể. Nếu sự chênh lệch không đáng kể thì độ lệch chuẩn và tính biến động ở mức thấp. Sự đảo chiều xu thế tạo các vùng đáy hoặc đỉnh của thị trường được xác định thời cơ bằng các mức độ biến động cao. Những xu thế mới của giá sau thời kỳ thoái trào của thị trường (tức là giai đoạn điều chỉnh) thường được xác định thời cơ bằng những mức độ biến động thấp. Sự thay đổi đáng kể về dữ liệu giá đem lại giá trị độ lệch chuẩn cao và dữ liệu giá ổn định hình thành độ lệch chuẩn ở mức thấp.

2.2. Sai số chuẩn (SE)

Mặc định trong R không cung cấp hàm tính toán sai số chuẩn, tuy nhiên chúng ta có thể xây dựng một \(function\) đơn giản để tính toán tham số này: \[SE = \frac{s}{\sqrt{n}}\] trong đó s là độ lệc chuẩn và n là số lượng phần tử trong mẫu. Tuy nhiên, để biết được tham số này có ý nghĩa gì, chúng ta cần xem lại một số nội dung.

Nếu chúng ta chọn mẫu \(N\) lần, mỗi lần với \(n\) đối tượng thì chúng ta sẽ có \(N\) số trung bình. Độ lệch chuẩn của \(N\) số trung bình này chính là sai số chuẩn. Lưu ý, \(N\) ở đây là hàng triệu hay tỉ lần. Do đó, sai số chuẩn phản ảnh độ dao động hay biến thiên của các số trung bình mẫu (sample averages).

Tuy nhiên, không có cái gọi là “standard error of the mean”, mà chỉ có “standard deviation of the means”. Chữ means có “s” là số nhiều vì tính từ nhiều số trung bình. Thay vì gọi dài dòng là standard deviation of the means, người ta gọi ngắn gọn bằng một thuật ngữ mới: standard error.

Như chúng ta đã viết, thông số trung bình của quần thể là \(\mu\) (chúng ta không biết giá trị thật của \(\mu\)). Chúng ta chỉ có thể ước lượng gián tiếp \(\mu\) thông qua số trung bình của mẫu là \(\overline{x}\) và độ lệch chuẩn của mẫu là \(s\). Theo lý thuyết xác suất của phân phối chuẩn, chúng ta có thể phát biểu rằng:

  • 68% quan sát trong tổng thể có giá trị từ \(\overline{x}-s\) đến \(\overline{x}+s\)
  • 95% quan sát trong tổng thể có giá trị từ \(\overline{x}-1.96*s\) đến \(\overline{x}+1.96*s\)
  • 99% quan sát trong tổng thể có giá trị từ \(\overline{x}-3*s\) đến \(\overline{x}+3*s\)

Nếu gọi theo sai số chuẩn - SE, chúng ta có thể phát biểu rằng:

  • 68% số trung bình từ mẫu có giá trị từ \(\overline{x}-SE\) đến \(\overline{x}+SE\)

  • 95% số trung bình từ mẫu có giá trị từ \(\overline{x}-1.96*SE\) đến \(\overline{x}+1.96*SE\)

  • 99% số trung bình từ mẫu có giá trị từ \(\overline{x}-3*SE\) đến \(\overline{x}+3*SE\)

    *Độ lệch chuẩn – SD phản ánh độ biến thiên của các quan sát trong một tổng thể.

    *Sai số chuẩn – SE phản ánh độ dao động của các số trung bình mẫu được chọn từ tổng thể.

    *Sai số chuẩn – SE không cung cấp thông tin về độ biến thiên của một tổng thể mà chỉ mô tả dự dao động của các số trung bình mẫu.

    *Sai số chuẩn – SE thấp hơn độ lệch chuẩn, bởi vì nó chính bằng độ lệch chuẩn chia cho căn bậc 2 của cở mẫu.

Để minh họa cho việc áp dụng ngôn ngữ R trong thống kê mô tả, chúng ta sẽ sử dụng một dữ liệu nghiên cứu, đó là bộ dữ liệu \(igfdata\). Các biến được liệt kê ở đây, đó là biến giới tính, độ tuổi, trọng lượng, chiều cao, chúng ta còn đo lường chỉ số \(hormone\) liên quan như \(igfi\), \(igfbp3\). Bộ dữ liệu thu thập của 100 đối tượng nghiên cứu. Bộ dữ liệu được trích xuất từ tài liệu của trong bộ sách Phân tích dữ liệu với R của GS. Nguyễn Văn Tuấn. Đo lường một số chỉ số về hormone liên quan đến tình trạng tằng trưởng và các chỉ số khác liên quan đến sự chuyển hóa xương khớp.

igfdata <- read.table("igf.txt", header = TRUE, na.strings = ".")
names(igfdata) # Xem các cột dữ liệu
##  [1] "id"        "sex"       "age"       "weight"    "height"    "ethnicity"
##  [7] "igfi"      "igfbp3"    "als"       "pinp"      "ictp"      "p3np"
attach(igfdata)
summary(age) # Thống kê biến age trong bộ dữ liệu
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   13.00   16.00   19.00   19.17   21.25   34.00
se_fun <- function(x){
  return(sd(x)/sqrt(length(x)))
}

se_fun(igfdata$weight) #Tính sai số chuẩn cho biến weight, để áp dụng tính các tham số thống kê cho các biến liên tục có giá trị số (numeric), khi đó chúng ta cần sử dụng họ hàm apply(), mình sẽ đề cập sau về họ hàm này trong một bài viết khác.
## [1] 0.3928901
# Sử dụng package "psych" để sử dụng phương thức descirbe() tính các tham số thống kê
#install.packages("psych")
library(psych)
library(knitr)
library(dplyr)
describe(igfdata, skew = FALSE, range = FALSE) %>% kable()
vars n mean sd se
id 1 100 50.500000 29.0114920 2.9011492
sex* 2 100 1.310000 0.4648232 0.0464823
age 3 100 19.170000 3.9159219 0.3915922
weight 4 100 49.910000 3.9289009 0.3928901
height 5 100 163.080000 7.8812910 0.7881291
ethnicity* 6 100 2.260000 0.6295742 0.0629574
igfi 7 100 165.592120 50.1321043 5.0132104
igfbp3 8 100 3.617095 0.5528295 0.0552830
als 9 100 301.841120 58.9871886 5.8987189
pinp 10 100 167.166230 157.6746850 15.7674685
ictp 11 100 7.420106 3.7476175 0.3747617
p3np 12 100 6.341167 2.7665524 0.2766552
# Bộ dữ liệu cũng phân thành hai nhóm là nam và nữ, chúng ta tính các chỉ số thống kê này riêng cho 2 nhóm nam và nữ. Tuy nhiên, cần xem xét kiểu dạng của biến giới tính (sex)
typeof(igfdata$sex)
## [1] "character"
# Kết quả chỉ ra là biến character, chúng ta cần đưa nó về dạng biến factor()- đây là một dạng biến phân loại trong R, xếp theo levels và có tác dụng thống kê, mã hóa biến
igfdata$sex <- as.factor(igfdata$sex)
# Kiểm tra lại 
str(igfdata) # Biến giới tính đã được chuyển thành factor và mã hóa thành 1,2.
## 'data.frame':    100 obs. of  12 variables:
##  $ id       : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ sex      : Factor w/ 2 levels "Female","Male": 1 2 1 1 1 1 1 1 1 1 ...
##  $ age      : int  15 16 15 15 16 25 19 18 15 24 ...
##  $ weight   : int  42 44 43 42 47 45 45 43 41 45 ...
##  $ height   : int  162 160 157 155 167 160 161 153 149 157 ...
##  $ ethnicity: chr  "Asian" "Caucasian" "Asian" "Asian" ...
##  $ igfi     : num  189 160 147 186 192 ...
##  $ igfbp3   : num  4 3.75 3.43 3.4 4.23 ...
##  $ als      : num  324 334 248 251 322 ...
##  $ pinp     : num  354 376 200 484 105 ...
##  $ ictp     : num  11.29 10.43 8.36 13.33 7.92 ...
##  $ p3np     : num  8.34 6.75 12.5 14.28 4.5 ...
# Thống kê mô tả theo nhóm với describeBy()
describeBy(igfdata, group = sex, skew = FALSE, range = FALSE)
## 
##  Descriptive statistics by group 
## group: Female
##            vars  n   mean    sd    se
## id            1 69  48.20 29.54  3.56
## sex*          2 69   1.00  0.00  0.00
## age           3 69  19.59  3.90  0.47
## weight        4 69  49.35  3.98  0.48
## height        5 69 161.94  7.94  0.96
## ethnicity*    6 69   2.26  0.56  0.07
## igfi          7 69 167.97 55.83  6.72
## igfbp3        8 69   3.70  0.56  0.07
## als           9 69 311.54 61.31  7.38
## pinp         10 69 108.74 88.91 10.70
## ictp         11 69   6.18  2.29  0.28
## p3np         12 69   5.64  2.24  0.27
## ------------------------------------------------------------ 
## group: Male
##            vars  n   mean     sd    se
## id            1 31  55.61  27.57  4.95
## sex*          2 31   2.00   0.00  0.00
## age           3 31  18.23   3.84  0.69
## weight        4 31  51.16   3.57  0.64
## height        5 31 165.61   7.25  1.30
## ethnicity*    6 31   2.26   0.77  0.14
## igfi          7 31 160.29  34.44  6.19
## igfbp3        8 31   3.44   0.51  0.09
## als           9 31 280.24  47.57  8.54
## pinp         10 31 297.21 196.97 35.38
## ictp         11 31  10.17   4.80  0.86
## p3np         12 31   7.90   3.20  0.57

Chúng ta có thể xem qua phân phối của các hormones và các chỉ số sinh hóa trên cùng 1 trang của biểu đồ, sử dụng tham số mfrow(nrow, ncol) để chia cột và dòng, sau đó sử dụng hàm hist() để vẽ biểu đồ tần suất cho từng biến trong bộ dữ liệu

option <- par(mfrow = c(2,3))
attach(igfdata)
## The following object is masked _by_ .GlobalEnv:
## 
##     height
## The following objects are masked from igfdata (pos = 6):
## 
##     age, als, ethnicity, height, ictp, id, igfbp3, igfi, p3np, pinp,
##     sex, weight
hist(igfi)
hist(igfbp3)
hist(als)
hist(pinp)
hist(ictp)
hist(p3np)