Bảng số liệu

Bảng số liệu là một phương tiện tóm tắt dữ liệu rất có ích trong thống kê mô tả. Ngoài việc trình bày dữ liệu tóm tắt dưới dạng bảng, chúng ta có thể tùy biến dữ liệu bằng cách thêm một số nội dung thống kê khác. Trong R chúng ta sử dụng 2 package là gmodelstables để sử dụng hai phương thức là CrossTable() và tabular(). * Hàm CrossTable() có thể tóm tắt nội dung của hai biến phân loại (Categorical Variables) * Hàm tabular() có thể tóm tắt dữ liệu của hai hay nhiều biến phân loại hoặc biến liên tục (Continuous Variables)

Để áp dụng, trong bài viết này tôi sử dụng lại bộ dữ liệu của Giáo sư Nguyễn Văn Tuấn, có tên là PISA (PROGRAM FOR INTERNATIONAL STUDENT ASSESSMENT). Bộ dữ liệu về đánh giá năng lực học dành cho học sinh, sinh viên quốc tế. Để tìm hiểu kỹ hơn về bộ dữ liệu này, bạn có thể tham khảo bộ dữ liệu PISA

Miêu tả thông tin một số biến trong bộ dữ liệu này:

library(dplyr)
library(DT)
mydata <- read.csv("C:/Users/Admin/OneDrive/Desktop/Data Analysis with R/R basic/R_Statistics/Dataset/PISA DATA.csv", header = TRUE)
str(mydata)
## 'data.frame':    4959 obs. of  7 variables:
##  $ REGION : chr  "CENTRAL" "CENTRAL" "CENTRAL" "CENTRAL" ...
##  $ TYPE   : chr  "PUBLIC" "PUBLIC" "PUBLIC" "PUBLIC" ...
##  $ AREA   : chr  "URBAN" "URBAN" "URBAN" "URBAN" ...
##  $ GENDER : chr  "Male" "Male" "Female" "Male" ...
##  $ MATH   : num  605 565 536 623 545 ...
##  $ READING: num  506 535 510 599 584 ...
##  $ SCIENCE: num  540 542 547 621 549 ...
mydata %>% datatable()

Lập bảng số liệu thống kê tóm tắt

Bảng số liệu cho một biến phân nhóm

Bảng tóm tắt đơn giản nhất là thống kê cho một biến phân nhóm, ví dụ ở đây chúng ta muốn thống kê số học sinh cho từng vùng, vì biến REGION là một biến phân loại với 3 levels. Muốn vậy chúng ta cần hoán chuyển biến REGION thành biến factor (categorical)

library(tables)
library(knitr)
library(dplyr)
mydata$REGION <- as.factor(mydata$REGION)
# Để biết số lượng học sinh cho từng vùng
tabular(mydata$REGION ~ 1)
mydata$REGION All
CENTRAL 1591
NORTH 1751
SOUTH 1617
# Để biết tỷ lệ phần trăm cho từng vùng, tham số n=1 yêu cầu R cho ta biết số học sinh
tabular(mydata$REGION ~ 1 * (n=1 + Percent("col")))
  All
  n
mydata$REGION All Percent
CENTRAL 1591 32.08
NORTH 1751 35.31
SOUTH 1617 32.61

Bảng dữ liệu cho hai hay nhiều biến phân nhóm

Ví dụ khi chúng ta muốn biết số học sinh cho từng vùng và từng miền

library(tables)
mydata$AREA <- as.factor(mydata$AREA)
attach(mydata)
tabular(REGION ~ AREA)
  AREA
REGION REMOTE RURAL URBAN
CENTRAL 121 771 699
NORTH 141 865 745
SOUTH 62 642 913
# Thêm phần trăm theo từng dòng
tabular(REGION ~ AREA*(n=1 + Percent("row")))
  AREA
  REMOTE RURAL URBAN
  n n n
REGION All Percent All Percent All Percent
CENTRAL 121 7.605 771 48.46 699 43.93
NORTH 141 8.053 865 49.40 745 42.55
SOUTH 62 3.834 642 39.70 913 56.46
# Thêm phần trăm theo từng cột
tabular(REGION ~ AREA*(n=1 + Percent("col")))
  AREA
  REMOTE RURAL URBAN
  n n n
REGION All Percent All Percent All Percent
CENTRAL 121 37.35 771 33.85 699 29.66
NORTH 141 43.52 865 37.97 745 31.61
SOUTH 62 19.14 642 28.18 913 38.74

Bảng dữ liệu cho nhiều hơn hai biến số phân loại

Hàm tabular() có khả năng tạo thống kê bảng cho nhiều hơn hai biến số phân loại. Hàm này rất tiện lợi và hữu ích trong trường hợp chúng ta có nhiều hơn hai biến số phân loại trong tập dữ liệu, giả sử chúng ta thêm một biến thống kê nữa ở đây là biến TYPE, tức là ngoài việc thống kê theo Miền, Vùng chúng ta thêm kiểu trường Công hay trường Tư. Chúng ta sử dụng thêm toán tử * trong hàm này để thêm kiểu biến

library(tables)
mydata$TYPE <- as.factor(mydata$TYPE)
attach(mydata)
tabular(REGION * AREA ~ TYPE)
    TYPE
REGION AREA PRIVATE PUBLIC
CENTRAL REMOTE 0 121
  RURAL 68 703
  URBAN 69 630
NORTH REMOTE 12 129
  RURAL 68 797
  URBAN 102 643
SOUTH REMOTE 0 62
  RURAL 44 598
  URBAN 64 849

Giới thiệu kiểm định Chi bình phương

Kiểm định chi bình phương cho tính độc lập, còn được gọi là kiểm định chi bình phương của Pearson hoặc kiểm định chi bình phương của sự liên kết, được sử dụng để khám phá xem có mối quan hệ giữa hai biến phân loại hay không.

Kiểm định Chi bình phương được sử dụng khi chúng ta muốn xem liệu có mối quan hệ giữa hai biến phân loại (categorical variables) trong một tổng thể.

Về mặt công thức thì kiểm định Chi-Square có công thức sau: \[\chi^{2} = \sum_{i}\frac{(O-E)^{2}}{E}\] Trong đó:

Chúng ta có thể tham khảo thêm về kiểm định Chi bình phương tại đây

Thủ tục kiểm tra giá trị Chi bình phương

Một nhà nghiên cứu cần đánh giá xem giới tính và hiến máu tự nguyện của sinh viên đại học có quan hệ với nhau không. Một tập dữ liệu gồm 50 sinh viên được thu thập. Biến giới tính được chia làm các mức giá trị 1 = nam, 2 = nữ, và biến hiến máu tự nguyện (bạn đã từng tham gia hiến máu tự nguyện chưa?) được chia làm các mức giá trị 1= yes (có), 2 = no (không).

Giả thuyết thống kê \(H_{0}\): Không có mối quan hệ giữa yếu tố giới tính và sự hiến máu tự nguyện của các sinh viên? Mức alpha được chọn là 5%.

Kiểm tra \(\chi^{2}\) so sánh tần số đếm được trong mỗi ô trong bảng phát sinh với tần số đếm kỳ vọng cho mỗi ô (chúng ta phải ước tính tần số kỳ vọng). Số lượng ô kỳ vọng được ước lượng theo giả định rằng giả thuyết vô hiệu là đúng, tức là không có sự liên kết giữa các biến hàng và cột.

Dữ liệu khảo sát đếm tần suất được trình bày trong bảng dưới đây:

Fig 1: Bảng khảo sát

Các bước kiểm tra \(\chi^{2}\)

  • Bước 1: Tính giá trị kì vọng cho mỗi ô từ A đến D

    • ô A: EA= (25×30)/50 = 15
    • ô B: EB= (25×30)/50 = 15
    • ô C: EC= (25×20)/50 = 10
    • ô D: ED= (25×20)/50 = 10
  • Bước 2: Tính giá trị \(\chi^{2}\) cho mỗi ô từ A đến D

    • ô A: χ2 = (18 – 15)2/ 15 = 0.6
    • ô B: χ2 = (12 – 15)2/ 15 = 0.6
    • ô C: χ2 = (7 – 10)2/ 10 = 0.9
    • ô D: χ2 = (13 – 10)2/ 10 = 0.9

- Bước 3: Tính tổng tất cả \(\chi^{2}\)

Tổng \(\chi^{2}\) = 0.6 + 0.6 + 0.9 + 0.9 = 3.00

Fig 2: χ2

Cách suy luận kết quả: Để đánh giá ý nghĩa thống kê của thống kê χ2 được ước lượng ở trên, chúng ta cần tính toán bậc tự do thích hợp cho bảng phát sinh, ở đây df = 1. Tra bảng phân phối các giá trị χ2 tới hạn, vui lòng xem bảng phân phối χ2, mức alpha được chọn đầu tiên là p≤0.05, giá trị χ2 tới hạn là 3.841, là giao điểm của cột alpha ở 0.05 và hàng df là 1. Vì giá trị χ2 được tính toán (3.00) nhỏ hơn giá trị χ2 tới hạn (điều sẽ được mong đợi theo giả thuyết vô hiệu là không tương tác giữa các biến hàng và cột) nên chúng ta không thể bác bỏ giả thuyết vô hiệu và kết luận rằng hai biến số, sự hiến máu tự nguyện và giới tính là không liên quan với nhau. Mặc dù tỷ lệ nam giới của 60% (18/30 × 100) so với nữ giới 40% (12/30 × 100) có sự khác biệt chút ít, nhưng sự khác biệt này là không có ý nghĩa thống kê ở mức ý nghĩa p≤0.05, có nghĩa rằng sự hiến máu tự nguyện và giới tính là không liên quan với nhau.

Sử dụng hàm CrossTable()

Chỉ số thống kê Chi bình phương khi sử dụng hàm CrossTable() - package gmodels sẽ được cung cấp

library(gmodels)
CrossTable(REGION, TYPE, prop.c = T, prop.r = T, prop.t = F, prop.chisq = F, chisq = T)
## 
##  
##    Cell Contents
## |-------------------------|
## |                       N |
## |           N / Row Total |
## |           N / Col Total |
## |-------------------------|
## 
##  
## Total Observations in Table:  4959 
## 
##  
##              | TYPE 
##       REGION |   PRIVATE |    PUBLIC | Row Total | 
## -------------|-----------|-----------|-----------|
##      CENTRAL |       137 |      1454 |      1591 | 
##              |     0.086 |     0.914 |     0.321 | 
##              |     0.321 |     0.321 |           | 
## -------------|-----------|-----------|-----------|
##        NORTH |       182 |      1569 |      1751 | 
##              |     0.104 |     0.896 |     0.353 | 
##              |     0.426 |     0.346 |           | 
## -------------|-----------|-----------|-----------|
##        SOUTH |       108 |      1509 |      1617 | 
##              |     0.067 |     0.933 |     0.326 | 
##              |     0.253 |     0.333 |           | 
## -------------|-----------|-----------|-----------|
## Column Total |       427 |      4532 |      4959 | 
##              |     0.086 |     0.914 |           | 
## -------------|-----------|-----------|-----------|
## 
##  
## Statistics for All Table Factors
## 
## 
## Pearson's Chi-squared test 
## ------------------------------------------------------------
## Chi^2 =  14.74409     d.f. =  2     p =  0.0006285803 
## 
## 
## 

Biến liên tục

Trong bộ dữ liệu PISA, biến MATH (điểm Toán) là một biến số liên tục, sử dụng các chỉ số thống kê như giá trị trung bình, độ lệch chuẩn cùng với học sinh từng vùng.

library(tables)
tabular(REGION ~ MATH *(n=1 + mean + sd))
  MATH
  n
REGION All mean sd
CENTRAL 1591 513.1 75.99
NORTH 1751 519.1 90.54
SOUTH 1617 498.9 81.38
# Tính toán các chỉ số thống kê mô tả cho từng vùng và từng loại trường với điểm toán
tabular(REGION * TYPE~MATH*(n=1+mean+sd))
    MATH
    n
REGION TYPE All mean sd
CENTRAL PRIVATE 137 467.9 60.12
  PUBLIC 1454 517.4 75.96
NORTH PRIVATE 182 471.4 63.36
  PUBLIC 1569 524.7 91.60
SOUTH PRIVATE 108 486.3 52.51
  PUBLIC 1509 499.8 83.00
# Tính toán thêm cho biến READING
tabular(REGION *TYPE~(MATH+READING)*(n=1+mean+sd))
    MATH READING
    n n
REGION TYPE All mean sd All mean sd
CENTRAL PRIVATE 137 467.9 60.12 137 464.5 58.14
  PUBLIC 1454 517.4 75.96 1454 516.3 67.65
NORTH PRIVATE 182 471.4 63.36 182 474.6 54.19
  PUBLIC 1569 524.7 91.60 1569 514.6 76.67
SOUTH PRIVATE 108 486.3 52.51 108 491.0 46.00
  PUBLIC 1509 499.8 83.00 1509 503.2 72.39

Tài liệu tham khảo

[1]. Phân tích dữ liệu với R, GS. Nguyễn Văn Tuấn

[2]. Phân phối Chi bình phương