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à gmodels và tables để 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:
- REGION là biến vùng miền, bao gồm các giá trị Central, North và South;
- TYPE là kiểu loại trường học, trường công hay trường tư (PUBLIC or PRIVATE);
- AREA là địa điểm của trường học, với các giá trị REMOVE(vùng sâu vùng xa), RURAL(vùng nông thôn), URBAN(Thành thị);
- GENDER là biến giới tính, với hai giá trị là MALE và FEMALE của học sinh;
- MATH là điểm học về môn Toán, là một biến liên tục, có giá trị từ 200 đến 850 theo thang đo quốc tế;
- READING là điểm môn đọc và hiểu, là một biến liên tục, có giá trị từ 200 đến 850 theo thang đo quốc tế;
- SCIENCE là điểm môn khoa học, là một biến liên tục, có giá trị từ 200 đến 850 theo thang đo quốc tế; Xem nhanh bộ dữ liệu và cấu trúc:
library(dplyr)
library(DT)
<- read.csv("C:/Users/Admin/OneDrive/Desktop/Data Analysis with R/R basic/R_Statistics/Dataset/PISA DATA.csv", header = TRUE)
mydata 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 ...
%>% datatable() mydata
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)
$REGION <- as.factor(mydata$REGION)
mydata# Để 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)
$AREA <- as.factor(mydata$AREA)
mydataattach(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)
$TYPE <- as.factor(mydata$TYPE)
mydataattach(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 đó:
O = mỗi giá trị quan sát (thực tế)
E = mỗi giá trị kỳ vọng Khi đó, giả thuyết của kiểm định chi bình phương được phát biểu như sau:
Ví dụ 1, trong một cuộc bài kiểm tra trên lớp có thể được phân loại theo giới tính (nam hoặc nữ) về các môn học (Quản trị kinh doanh, Toán cao cấp hoặc Xác suất thống kê). Chúng ta có thể sử dụng kiểm định Chi-Square để xác định xem giới tính có liên quan đến sở thích môn học nào không như ví dụ bên dưới:
Ví dụ 2, chúng ta quan tâm liệu có mối quan hệ giữa giới tính (gender) và loại hình doanh nghiệp (section) mà người lao động tham gia làm việc.
\(H_{0}\): Biến gender và biến section là hai biến độc lập, không liên quan.
\(H_{1}\): Biến gender và biến section không phải là hai biến độc lập, có sự liên quan tới nhau. Giả thuyết \(H_{0}\) sẽ bị bác bỏ nếu giá trị \(sig\). của Chi-Square test < 0.05, với độ tin cậy là 95% Để sử dụng kiểm định chi bình phương thì dữ liệu phải thỏa mãn 3 điều kiện sau:
Chọn mẫu theo phương pháp ngẫu nhiên,
Biến nghiên cứu là các biến phân loại từ 2 mức trở lên, chẳng hạn biến giới tính (nam/nữ), loại hình doanh nghiệp (DNNN, DNTN, FDI, HTX-hộ cá thể)…
Tần suất kì vọng trong mỗi ô là từ 5 trở lên.
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.00Fig 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 |