library(webshot2)
## Warning: package 'webshot2' was built under R version 4.3.1
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.1
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(graphics)
https://drive.google.com/drive/u/0/folders/136sYvt2qSOLphFjTep0AIhUcqRpW4dy3
Đề tài: PHÂN TÍCH CÁC YẾU TỐ TÁC ĐỘNG ĐẾN TÌNH TRẠNG SỨC KHỎE
Lời đầu tiên, em xin gửi lời cảm ơn chân thành nhất đến Giảng viên – ThS.Trần Mạnh Tường. Trong quá trình học tập và tìm hiểu bộ môn “Phân tích dữ liệu định tính”, em đã nhận được sự quan tâm giúp đỡ, hướng dẫn rất tận tình, tâm huyết của thầy. Thầy đã giúp em tích lũy thêm nhiều kiến thức để có cái nhìn sâu sắc và hoàn thiện hơn về bộ môn này. Từ những kiến thức mà thầy truyền tải, chúng em đã dần hiểu được tầm quan trọng của các mô hình trong kinh tế mà bấy lâu nay còn nhiều thắc mắc và chưa rõ. Nhận nhiệm vụ của thầy, thông qua bài tiểu luận này em xin trình bày những gì mà em đã tìm hiểu về môn học, và cụ thể hơn ở đây em lựa chọn đề tài “Phân tích các yếu tố tác động đến tình trạng sức khỏe”.
Có lẽ kiến thức là vô hạn mà sự tiếp nhận kiến thức của bản thân mỗi người luôn tồn tại những hạn chế nhất định. Do đó, trong quá trình hoàn thành bài tiểu luận, chắc chắn em không tránh khỏi những thiếu sót. Vì vậy, em rất mong nhận được những đóng góp đến từ thầy để bài tiểu luận của nhóm được hoàn thiện hơn.
Kính chúc thầy sức khỏe, hạnh phúc và thành công trên con đường sự nghiệp giảng dạy của mình.
Tôi chọn đề tài về tình trạng sức khỏe con người vì tôi quan tâm đến các yếu tố ảnh hưởng đến sức khỏe của mỗi cá nhân và cộng đồng. Sức khỏe con người là một khái niệm phức tạp, bao gồm các khía cạnh về thể chất, tinh thần và xã hội. Sức khỏe con người không chỉ phụ thuộc vào việc tiếp cận và sử dụng dịch vụ y tế, mà còn bị ảnh hưởng bởi nhiều nhân tố khác như nơi sống, môi trường, di truyền, thu nhập, trình độ học vấn, mối quan hệ với bạn bè và gia đình. Sức khỏe con người cũng là một quyền con người căn bản, được công nhận trong Hiến chương WHO (1946) và các hiệp ước quốc tế về nhân quyền. Việc nghiên cứu về tình trạng sức khỏe con người có thể giúp ta hiểu rõ hơn về các thách thức và cơ hội để cải thiện sức khỏe cho mọi người, đặc biệt là những nhóm dân cư bị bất lợi và bị loại trừ. Qua đề tài này, tôi mong muốn đóng góp vào việc xây dựng một xã hội công bằng, bền vững và phát triển, nơi mà mọi người đều có thể sống khỏe mạnh và hạnh phúc bằng cách phân tích ra các tác động có thể ảnh hưởng đến tình trạng sức khỏe của con người.
Phân tích các yếu tố tác động đến tình trạng sức khỏe của con người dựa trên tập dữ liệu HealthInsurance trong gói AER.
Tập dữ liệu chứa thông tin về chi phí y tế của các hộ gia đình tại Hoa Kỳ gồm 8.802 quan sát trên 11 biến.
Chương 1: Tổng quan về cơ sở lí thuyết
Chương 2: Phương pháp và kết quả nghiên cứu
Chương 3: Kết luận
Thống kê là một hệ thống các phương pháp sử dụng mô hình, là sự biểu diễn và tóm tắt định lượng một tập dữ liệu thực nghiệm hoặc nghiên cứu thực tế nhất định nhằm phục vụ cho quá trình phân tích, dự đoán và ra quyết định. Thống kê giúp chúng ta có cái nhìn tổng quan và chính xác về những hiện tượng và sự kiện xảy ra trong thực tế, cũng như khám phá những mối quan hệ, xu hướng và đặc điểm của chúng.
Thống kê có thể được chia thành hai loại: thống kê mô tả và thống kê suy luận. Thống kê mô tả nhằm mục đích tổng hợp và trình bày dữ liệu bằng các số liệu hoặc biểu đồ. Thống kê mô tả giúp chúng ta hiểu được bản chất và phân bố của dữ liệu, cũng như so sánh và đánh giá các nhóm dữ liệu khác nhau. Thống kê suy luận nhằm mục đích rút ra những kết luận hoặc kiểm định các giả thuyết dựa trên dữ liệu mẫu. Thống kê suy luận giúp chúng ta suy diễn về tổng thể dựa trên một phần của nó, cũng như ước lượng và kiểm tra tính tin cậy của các kết quả.
Thống kê được ứng dụng rộng rãi trong nhiều lĩnh vực như kinh tế, khoa học, công nghiệp, xã hội, y tế, giáo dục,… Thống kê giúp chúng ta có được những thông tin quan trọng và cần thiết để hỗ trợ cho việc ra quyết định, lập kế hoạch, điều tra, nghiên cứu và giải quyết các vấn đề trong thực tế. Ví dụ, trong kinh tế, thống kê được sử dụng để theo dõi và đánh giá các chỉ số kinh tế như GDP, lạm phát, thất nghiệp,… Trong khoa học, thống kê được sử dụng để thiết kế và phân tích các thí nghiệm, kiểm tra các giả thuyết khoa học và khảo sát các hiện tượng tự nhiên. Trong công nghiệp, thống kê được sử dụng để kiểm soát chất lượng, cải tiến quy trình sản xuất và tối ưu hóa nguồn lực. Trong xã hội, thống kê được sử dụng để khảo sát ý kiến công chúng, nghiên cứu các vấn đề xã hội như giáo dục, an ninh, môi trường, vv. Trong y tế, thống kê được sử dụng để nghiên cứu các bệnh lý, đánh giá hiệu quả của các phương pháp điều trị và phòng ngừa.
Gói AER là một gói trong RStudio, dùng để thực hiện các phân tích kinh tế lượng với R. Gói AER bao gồm các hàm để ước lượng các mô hình hồi quy tuyến tính, hồi quy phi tuyến, hồi quy đa biến, hồi quy đa cấp, hồi quy bảng, hồi quy đếm, hồi quy nhị phân, hồi quy định lượng, hồi quy cắt ngang, hồi quy dòng thời gian và hồi quy không gian. Gói AER cũng cung cấp các hàm để kiểm tra các giả thiết của các mô hình, xây dựng các khoảng tin cậy và kiểm định các giả thuyết. Ngoài ra, gói AER còn có các tập dữ liệu được sử dụng trong sách Applied Econometrics with R, ví dụ như dữ liệu về thu nhập, giá cả, tiêu dùng, xuất khẩu, nhập khẩu, sản xuất, lao động, giáo dục, y tế và môi trường.
Phân phối Poisson là một phân phối xác suất rời rạc, có nghĩa là biến chỉ có thể nhận các giá trị cụ thể trong một danh sách các số nhất định, có thể là vô hạn.
Phân phối Poisson đo lường số lần một sự kiện có khả năng xảy ra trong khoảng thời gian “x”.
Phân phối Poisson còn được gọi là luật số nhỏ vì nó là xác suất phân phối của số lần xuất hiện của một sự kiện xảy ra trong một khoảng thời gian hoặc không gian cho trước.
Xác suất để biến ngẫu nhiên này nhận một giá trị cụ thể được tính bằng công thức:
\(P(X=k) = \frac{e^{-λ}λ^k}{k!}\)
Phân phối nhị thức là một phân phối xác suất rời rạc, có nghĩa là biến chỉ có thể nhận một trong hai giá trị độc lập.
Phân phối nhị thức được sử dụng để tính xác suất thành công của Biến ngẫu nhiên X gồm n sự việc độc lập nhau và xác suất Thành công là bằng nhau và bằng p cho từng sự việc.
Giả định cơ bản của phân phối nhị thức là chỉ có một kết quả cho mỗi thử nghiệm, rằng mỗi thử nghiệm có xác suất thành công như nhau và mỗi thử nghiệm là loại trừ lẫn nhau hoặc độc lập với nhau.
Khi đó xác suất để X nhận một giá trị cụ thể là
\(P(X=k) = C_k^np^k(1-p)^{n-k}\)
Bảng tần số là một bảng thống kê cho biết số lần xuất hiện của các giá trị của một dấu hiệu trong một tập dữ liệu. Bảng tần số còn được gọi là bảng ngẫu nhiên.
Đối với bảng tần số chúng ta quy ước biến phụ thuộc được xắp xếp theo cột, biến độc lập được xắp xếp theo hàng.
Độ nhạy (sensitivity) của một thí nghiệm: Là tỷ lệ (%) của số ca bị bệnh thực sự khi xét nghiệm và cho kết quả dương tính với tổng số ca bị bệnh. Công thức để tính độ nhạy:
\(Độ nhạy = \frac{số dương tính thật}{(số đương tính thật + số âm tính giả)}\)
Độ đặc hiệu (specificity) của một thí nghiệm: Là tỷ lệ (%) của số ca không bị bệnh và kết quả xét nghiệm không bị bệnh với tổng số người không bị bệnh. Công thức tính độ đặc hiệu:
\(Độ đặc hiệu = \frac{Số trường hợp âm tính thật}{(số trường hợp âm tính thật + số trường hợp dương tính giả)}\)
Ký hiệu \(π_i\) là tỷ lệ “thành công” của biến phụ thuộc (response variable) tương ứng với từng biểu hiện của biến độc lập.
Từ bảng tần xuất, chúng ta tính \(\frac{π_1}{π_2}\), phân số này gọi là Rủi ro tương đối (Relative risk) giữa 2 biểu hiện khác nhau của biến phụ thuộc.
Tỷ lệ chênh là tỉ số giữa hai tỷ lệ. Tỷ lệ là một mối quan hệ giữa hai số cho biết số đầu tiên chiếm số thứ hai bao nhiêu lần.
Nếu gọi xác suất “thành công” của biểu hiện thứ \(i\) của biến độc lập là \(π_i\) thì chúng ta kí hiệu Tỷ lệ cược (odd) của biểu hiện này là \(odd_i\) và được định nghĩa như sau:
\(oddi=\frac{πi}{1−πi}\)
Nghĩa là chúng ta tính tỷ lệ thành công theo từng hàng trong bảng ngẫu nhiên.
Tỷ lệ chênh của biểu hiện thứ i và biểu hiện thứ j được kí hiệu là θij và được định nghĩa:
\(θ=\frac{odd_i}{odd_j}=\frac{π_i(1−π_j)}{π_j(1−π_i)}\)
Khoảng ước lượng cho tỉ lệ trong RStudio là một khoảng chứa giá trị của tỉ lệ tổng thể dựa trên mẫu dữ liệu, với một mức độ tin cậy nhất định. Có công thức tổng thể như sau:
\(p−Z_{α/2} \sqrt{ \frac{p(1-p)}{n}}\)
Trong đó: p là tỉ lệ mẫu, \(Z_{α/2}\) là giá trị phân vị của phân phối chuẩn tại mức ý nghĩa α, n là kích thước mẫu.
Để đánh giá các mô hình hồi cổ điển chúng ta thường dựa vào hệ số xác định mô hình (R2), nhưng đối với mô các mô hình hồi quy tuyến tính tổng quát chúng ta sử dụng các tiêu chí sau:
AIC được đề xuất bởi Akaike Hirotugu, một nhà thống kê học người Nhật. AIC là một tiêu chí được sử dụng một cách phổ biến để đánh giá một mô hình hồi quy được ước lượng bởi phương pháp MaximumLikekihood (ML). Một cách chung chung giá trị của AIC càng nhỏ thì mô hình càng tốt. AIC được tính bằng công thức sau:
\(AIC=−2ln(L)+2k\)
Với L là giá trị cực đại của hàm hợp lý (likelihood function) và k là số tham số của mô hình.
Khi thực hiện việc ước lượng mô hình hồi quy bằng lệnh glm thì chỉ số AIC đã được tính toán và thể hiện trên bảng kết quả ( bằng lệnh summary)
Deviance cũng là một tiêu chí rất phổ biến được sử dụng để đánh giá một mô hình hồi quy được ước lượng bởi phương pháp Hợp lý cực đại (ML). Một cách tổng quá, cũng giống như chỉ tiêu AIC, giá trị của Deviance càng nhỏ thì mô hình càng tốt.
Lưu ý: Khi thực hiện việc ước lượng mô hình hồi quy bằng lệnh glm thì chỉ số AIC và Deviance đã được tính toán và thể hiện trên bảng kết quả ( bằng lệnh summary).
Là chỉ tiêu dùng để đánh giá mô hình hồi quy logistic, Brier Score được tính như sau:
\(B= \frac{1}{n}\sum_{i=1}^{n}p_i -o_i\)
Trong đó: \(p_i\),\(o_i\) lần lượt là giá trị xác suất quan sát được, và giá trị xác suất tính ra từ mô hình.
library(AER)
## Warning: package 'AER' was built under R version 4.3.1
## Loading required package: car
## Warning: package 'car' was built under R version 4.3.1
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.3.1
##
## Attaching package: 'car'
## The following object is masked from 'package:dplyr':
##
## recode
## Loading required package: lmtest
## Warning: package 'lmtest' was built under R version 4.3.1
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.3.1
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
## Loading required package: sandwich
## Warning: package 'sandwich' was built under R version 4.3.1
## Loading required package: survival
data("HealthInsurance")
DLDT <- HealthInsurance
library(DT)
## Warning: package 'DT' was built under R version 4.3.1
DLDT %>% DT::datatable(DLDT)
Giải thích các bộ dữ liệu:
Tập dữ liệu HealthInsurance trong gói AER là một tập dữ liệu chứa thông tin về chi phí y tế của các hộ gia đình tại Hoa Kỳ. Tập dữ liệu này bao gồm 8.802 quan sát trên 11 biến. Các biến bao gồm:
health: Chỉ số sức khỏe của người được khảo sát.
age: Tuổi của người được khảo sát.
limit: Chỉ số giới hạn sức khỏe của người được khảo sát.
gender: Giới tính của người được khảo sát.
insurance: Chỉ số bảo hiểm y tế của người được khảo sát.
married: Tình trạng hôn nhân của người được khảo sát.
selfemp: Tình trạng tự làm chủ của người được khảo sát.
family: Kích thước gia đình của người được khảo sát.
region: Vùng địa lý của người được khảo sát.
ethnicity: Dân tộc của người được khảo sát.
education: Trình độ học vấn của người được khảo sát.
str(HealthInsurance)
## 'data.frame': 8802 obs. of 11 variables:
## $ health : Factor w/ 2 levels "no","yes": 2 2 2 2 2 2 1 2 2 2 ...
## $ age : num 31 31 54 27 39 32 56 60 62 52 ...
## $ limit : Factor w/ 2 levels "no","yes": 1 1 1 1 1 1 2 1 1 1 ...
## $ gender : Factor w/ 2 levels "female","male": 2 1 2 2 2 1 1 1 2 1 ...
## $ insurance: Factor w/ 2 levels "no","yes": 2 2 2 2 2 1 2 2 2 1 ...
## $ married : Factor w/ 2 levels "no","yes": 2 2 2 1 2 1 2 2 2 2 ...
## $ selfemp : Factor w/ 2 levels "no","yes": 2 1 1 1 1 1 1 1 1 1 ...
## $ family : num 4 4 5 5 5 3 2 2 2 2 ...
## $ region : Factor w/ 4 levels "northeast","midwest",..: 3 3 4 4 4 3 4 3 3 1 ...
## $ ethnicity: Factor w/ 3 levels "other","afam",..: 3 3 3 3 3 2 3 3 3 2 ...
## $ education: Factor w/ 7 levels "none","ged","highschool",..: 4 3 2 3 1 4 3 3 3 3 ...
Các biến định tính gồm: health, limit, gender, insurance, married, selfemp, region, ethnicity và education. Trong đó:
health: Nhận hai giá trị là “yes” và “No”, thể hiện người khảo sát có sức khỏe tốt hoặc là không có sức khỏe tốt.
limit: Nhận hai giá trị là “yes” và “No”, thể hiện người khảo sát có giới hạn về sức khỏe hoặc không có giới hạn về sức khỏe.
gender: Nhận hai giá trị là “female” và “male”, thể hiện người khảo sát là nữ hay là nam.
insurance: Nhận hai giá trị là “yes” và “No”, thể hiện người khảo sát có bảo hiểm y tế hoặc không có bảo hiểm y tế.
married: Nhận hai giá trị là “yes” và “No”, thể hiện người khảo sát có tình trạng hôn nhân hoặc không có tình trạng hôn nhân.
selfemp: Nhận hai giá trị là “yes” và “No”, thể hiện người khảo sát có tự chủ tài chính hoặc không có tự chủ tài chính.
region: Nhận 4 giá trị, cụ thể là giá trị “northeast” cho biết người được khảo sát sống ở vùng Đông Bắc Hoa Kỳ, giá trị “south” cho biết người được khảo sát sống ở vùng Nam Hoa Kỳ, giá trị “midwest” cho biết người được khảo sát sống ở vùng Trung Tây Hoa Kỳ và giá trị “West” cho biết người được khảo sát sống ở vùng Tây Hoa Kỳ.
ethnicity: Nhận 3 giá trị, cụ thể là giá trị “Afam” cho biết người được khảo sát là người Mỹ gốc Phi, giá trị “Cauc” cho biết người được khảo sát là người Mỹ gốc Châu Âu và giá trị “other” cho biết người được khảo sát là người thuộc các dân tộc khác.
education: Nhận 7 giá trị, cụ thể là giá trị “none” cho biết người được khảo sát không có bằng cấp, giá trị “ged” cho biết người được khảo sát có bằng tương đương với trung học phổ thông, giá trị “high school” cho biết người được khảo sát đã tốt nghiệp trung học phổ thông và giá trị “bachelor”, “master”, “PhD” và “other” cho biết người được khảo sát có bằng cấp đại học hoặc cao hơn.
age: Thể hiện độ tuổi của người khảo sát.
family: Thể hiện kích thước thành viên trong gia đình của người khảo sát.
Tôi chọn health làm biến phụ thuộc, vì tôi muốn đánh giá mức độ ảnh hưởng của các yếu tố trên đến sức khỏe của những người tham gia khảo sát.
Tôi chọn family làm biến phụ thuộc, vì biến này sẽ cho tôi biết được số thành viên của 1 gia đình sẽ có tác động thể nào đối với sức khỏe của những người tham gia khảo sát.
## Bảng tần suất của biến insurance
table(DLDT$insurance)
##
## no yes
## 1750 7052
## Bảng tần suất của biến insurance theo tỉ lệ %
table(DLDT$insurance)/sum(table(DLDT$insurance))
##
## no yes
## 0.1988185 0.8011815
## Biểu đồ hình tròn của biến insurance
library("ggplot2")
## Warning: package 'ggplot2' was built under R version 4.3.1
DLDT |> ggplot(aes(x = insurance, y = after_stat(count))) + geom_bar(fill = 'lightpink') + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'red', vjust = - .5) + theme_classic() + labs(x = 'Sở hữu bảo hiểm', y = 'Tỷ trọng')
Từ bảng tần suất và biểu đồ cột của biến insurance, ta thu được kết quả sau: số người sở hữu bảo hiểm chiếm tỉ lệ cao nhất là 80% và tỉ lệ người không sở hữu bảo hiểm chiếm 20% trong tổng số người tham gia khảo sát.
## Bảng tần suất của biến health
table(DLDT$health)
##
## no yes
## 629 8173
## Bảng tần suất của biến health theo tỉ lệ %
table(DLDT$health)/sum(table(DLDT$health))
##
## no yes
## 0.07146103 0.92853897
## Biểu đồ hình tròn của biến health
library("ggplot2")
DLDT |> ggplot(aes(x = health, y = after_stat(count))) + geom_bar(fill = 'lightpink') + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'red', vjust = - .5) + theme_classic() + labs(x = 'Tình trạng sức khỏe', y = 'Tỷ trọng')
Từ bảng tần suất và biểu đồ cột của biến health, ta thu được kết quả sau: số người có tình trạng sức khỏe tốt chiếm tỉ lệ cao nhất là 93% và tỉ lệ người tình trạng sức khỏe không tốt chiếm 7% trong tổng số người tham gia khảo sát.
## Bảng tần suất của biến limit
table(DLDT$limit)
##
## no yes
## 7571 1231
## Bảng tần suất của biến limit theo tỉ lệ %
table(DLDT$limit)/sum(table(DLDT$limit))
##
## no yes
## 0.8601454 0.1398546
## Biểu đồ cột của biến limit
library("ggplot2")
DLDT |> ggplot(aes(x = limit, y = after_stat(count))) + geom_bar(fill = 'lightpink') + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'red', vjust = - .5) + theme_classic() + labs(x = 'Giới hạn về tình trạng sức khỏe', y = 'Tỷ trọng')
Từ bảng tần suất và biểu đồ cột của biến limit, ta thu được kết quả sau: số người không có giới hạn về trình trạng sức khỏe chiếm tỉ lệ cao nhất là 86% và tỉ lệ người có giới hạn về tình trạng sức khỏe chiếm 14% trong tổng số người tham gia khảo sát.
## Bảng tần suất của biến selfemp
table(DLDT$selfemp)
##
## no yes
## 7731 1071
## Bảng tần suất của biến selfemp theo tỉ lệ %
table(DLDT$selfemp)/sum(table(DLDT$selfemp))
##
## no yes
## 0.8783231 0.1216769
## Biểu đồ cột của biến selfemp
library("ggplot2")
DLDT |> ggplot(aes(x = selfemp, y = after_stat(count))) + geom_bar(fill = 'lightpink') + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'red', vjust = - .5) + theme_classic() + labs(x = 'Tình trạng tự chủ tài chính ', y = 'Tỷ trọng')
Từ bảng tần suất và biểu đồ cột của biến selfemp, ta thu được kết quả sau: số người không tự chủ về tài chính chiếm tỉ lệ cao nhất là 88% và tỉ lệ người tự chủ về tài chính chiếm 12% trong tổng số người tham gia khảo sát.
## Bảng tần suất của biến gender
table(DLDT$gender)
##
## female male
## 4169 4633
## Bảng tần suất của biến gender theo tỉ lệ %
table(DLDT$gender)/sum(table(DLDT$gender))
##
## female male
## 0.4736424 0.5263576
## Biểu đồ cột của biến gender
library("ggplot2")
DLDT |> ggplot(aes(x = gender, y = after_stat(count))) + geom_bar(fill = 'lightpink') + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'red', vjust = - .5) + theme_classic() + labs(x = 'Giới tính', y = 'Tỷ trọng')
Từ bảng tần suất và biểu đồ cột của biến gender, ta thu được kết quả sau: giới tính nam chiếm tỉ lệ cao nhất là 52.6% và tỉ lệ giới tính nữ chiếm 47.4% trong tổng số người tham gia khảo sát.
## Bảng tần suất của biến region
table(DLDT$region)
##
## northeast midwest south west
## 1682 2023 3075 2022
## Bảng tần suất của biến region theo tỉ lệ %
table(DLDT$region)/sum(table(DLDT$region))
##
## northeast midwest south west
## 0.1910929 0.2298341 0.3493524 0.2297205
## Biểu đồ cột của biến region
library("ggplot2")
DLDT |> ggplot(aes(x = region, y = after_stat(count))) + geom_bar(fill = 'lightpink') + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'red', vjust = - .5) + theme_classic() + labs(x = 'Vị trí địa lí', y = 'Tỷ trọng')
Từ bảng tần suất và biểu đồ cột của biến region, ta thu được kết quả sau: số người tham gia khảo sát ở vùng south chiếm tỉ lệ cao nhất là 34.935% và tỉ lệ người tham gia khảo sát thấp nhât ở vùng northeast là 19.109%.
Tôi tiến hành mã hóa biến region thành 2 vùng chung được gọi là vùng 1 và vùng 2, vùng 1 gồm northeast (Đông Bắc Hoa Kỳ) và midwest (Trung tây Hoa Kỳ); vùng 2 gồm south (Nam Hoa Kỳ) và west (Tây Hoa Kỳ).
region <- factor(DLDT$region, levels = c("northeast", "midwest", "south","west"), labels = c("vung1", "vung1", "vung2", "vung2"))
## Bảng tần suất của biến ethnicity
table(DLDT$ethnicity)
##
## other afam cauc
## 365 1083 7354
## Bảng tần suất của biến ethnicity theo tỉ lệ %
table(DLDT$ethnicity)/sum(table(DLDT$ethnicity))
##
## other afam cauc
## 0.04146785 0.12304022 0.83549193
## Biểu đồ cột của biến ethnicity
library("ggplot2")
DLDT |> ggplot(aes(x = ethnicity, y = after_stat(count))) + geom_bar(fill = 'lightpink') + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'red', vjust = - .5) + theme_classic() + labs(x = 'Nguồn gốc của người khảo sát', y = 'Tỷ trọng')
Từ bảng tần suất và biểu đồ cột của biến ethnicity, ta thu được kết quả sau: số người có nguồn gốc ở cauc (gốc châu âu) chiếm tỉ lệ cao nhất là 83.5% và tỉ lệ người tham gia khảo sát thấp nhât có nguồn gốc khác (other) là 4.1%.
Tôi tiến hành mã hóa biến ethnicity từ 3 nguồn gốc của người khảo sát thành 2 nguồn gốc chính, là other gồm other và afam (Mỹ gốc Phi) và cauc (Châu âu).
ethnicity <- factor(DLDT$ethnicity, levels = c("other", "afam", "cauc"), labels = c("other", "other", "cauc"))
## Bảng tần suất của biến education
table(DLDT$education)
##
## none ged highschool bachelor master phd other
## 1119 374 4434 1549 524 135 667
## Bảng tần suất của biến educationt theo tỉ lệ %
table(DLDT$education)/sum(table(DLDT$education))
##
## none ged highschool bachelor master phd other
## 0.12713020 0.04249034 0.50374915 0.17598273 0.05953192 0.01533742 0.07577823
## Biểu đồ hình tròn của biến education
library("ggplot2")
DLDT |> ggplot(aes(x = education, y = after_stat(count))) + geom_bar(fill = 'lightpink') + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'red', vjust = - .5) + theme_classic() + labs(x = 'Trình độ học vấn', y = 'Tỷ trọng')
Từ bảng tần suất và biểu đồ cột của biến education, ta thu được kết quả sau: số người có trình độ học vấn ở mức highschool chiếm tỉ lệ cao nhất là 50.4% và tỉ lệ người có trình độ học vấn phd ở mức thấp nhât là 1.5%.
Tôi tiến hành mã hóa biến education, gồm 7 trình độ học vấn khác nhau thành 2 mức là trình độ cao (higheducation) gồm bachelor, master, pdh, other và trình độ thấp (loweducattion) gồm none, ged, highschool.
educated <- factor(DLDT$education, levels = c("none", "ged", "highschool", "bachelor", "master", "phd", "other"), labels = c("loweducattion", "loweducattion", "loweducattion", "higheducation", "higheducation", "higheducation","higheducation"))
total <- data.frame(DLDT$family,DLDT$age)
summary(total)
## DLDT.family DLDT.age
## Min. : 1.000 Min. :18.00
## 1st Qu.: 2.000 1st Qu.:30.00
## Median : 3.000 Median :39.00
## Mean : 3.094 Mean :38.94
## 3rd Qu.: 4.000 3rd Qu.:48.00
## Max. :14.000 Max. :62.00
sd(DLDT$family)
## [1] 1.559633
sd(DLDT$age)
## [1] 11.11082
Từ kết quả trên, ta xác định được như sau:
Biến family có số thành viên trong gia đình trung bình là 38.94, trung vị là 3 và số thành viên trong gia đình dao động từ nhỏ nhất là 1 thành viên đến lớn nhất là 14 thành viên, với độ lệch chuẩn là 1.559633.
Biến age có độ tuổi trung bình là 3.094, trung vị là 39 và độ tuổi dao động từ nhỏ nhất là 18 tuổi cho đến lớn nhất là 62 tuổi, với độ lệch chuẩn là 11.11082.
hist(DLDT$family, col='lightpink')
Dựa vào biểu đồ histogram của biến family cho thấy số thành viên được phân bổ nhiều nhất là từ 1 cho đến 2 người và từ 6 người trở lên thì dần trở nên thấp hơn.
Tôi tiến hành mã hóa biến family thành 2 giá trị chính là ít người và nhiều người thể hiện số lượng thành viên của 1 gia đình là ít hay là nhiều. Tôi cho rằng số thành viên trong giá đình từ 1 cho đến 4 là ít người và từ 4 trở lên là nhiều người.
family1 <-cut(DLDT$family, breaks=c(0,4,14), labels=c('itnguoi' , 'nhieunguoi'))
table(family1)
## family1
## itnguoi nhieunguoi
## 7413 1389
Dựa vào biểu đồ
hist(DLDT$age, col='lightpink')
Dựa vào biểu đồ histogram của biến age cho thấy độ tuổi từ 35 đến 40 chiếm tỉ lệ nhiều nhất và độ tuổi từ 60 có tỉ lệ thấp nhất.
Tôi tiến hành mã hóa biến age thành 2 giá trị chính là dưới 40 tuổi và lớn hơn 40 tuổi.
age1 <-cut(DLDT$age, breaks=c(1,40,70), labels=c('duoi40' , 'tren40'))
Việc mã hóa các biến độc lập thành 2 giá trị giúp tôi có thể dễ dàng hơn trong việc đánh giá mức độ tác động của các biến độc lập đến biến phụ định tính phụ thuộc (health). Tôi tiến hành gom các biến vào data mới đặt tên là z.
z <- data.frame(DLDT$health, DLDT$limit, DLDT$gender, DLDT$insurance, DLDT$married, DLDT$selfemp, DLDT$region, DLDT$ethnicity, DLDT$education, DLDT$age, age1, family1, ethnicity, educated, region)
Age <- table(DLDT$health, z$age1 )
Age
##
## duoi40 tren40
## no 286 343
## yes 4594 3579
ggplot(z, aes(DLDT$health, fill = z$age1)) + geom_bar(position = 'dodge')
## Warning: Use of `z$age1` is discouraged.
## ℹ Use `age1` instead.
Dựa vào biểu đồ cột trên của biến health và age, ta thu được kết quả sau:
Tỉ lệ người có tình trạng sức khỏe không được tốt chiếm tỉ lệ cao ở mức trên 40 tuổi.
Tỉ lệ người có tình trạng sức khỏe tốt chiếm tỉ lệ cao ở mức dưới 40 tuổi.
=> Và đây là sự thật hiển nhiên vì yếu tố độ tuổi có ảnh hưởng lớn đến sức khỏe, thể hiện thông qua sự lão hóa của con người.
Family2 <- table(DLDT$health, z$family1 )
Family2
##
## itnguoi nhieunguoi
## no 501 128
## yes 6912 1261
ggplot(z, aes(DLDT$health, fill = z$family1)) + geom_bar(position = 'dodge')
## Warning: Use of `z$family1` is discouraged.
## ℹ Use `family1` instead.
Dựa vào biểu đồ cột trên của biến health và family, ta thu được kết quả sau:
limit1 <- table(DLDT$health, DLDT$limit )
limit1
##
## no yes
## no 401 228
## yes 7170 1003
ggplot(z, aes(DLDT$health, fill = DLDT$limit)) + geom_bar(position = 'dodge')
Dựa vào biểu đồ cột trên của biến health và limit, ta thu được kết quả sau:
gender1 <- table(DLDT$health, DLDT$gender )
gender1
##
## female male
## no 323 306
## yes 3846 4327
ggplot(z, aes(DLDT$health, fill = DLDT$gender)) + geom_bar(position = 'dodge')
Dựa vào biểu đồ cột trên của biến health và gender, ta thu được kết quả sau:
Tỉ lệ người có tình trạng sức khỏe không được tốt chiếm tỉ lệ cao ở giới tính nữ, tuy nhiên tỉ lệ chênh lệch không quá cao.
Tỉ lệ người có tình trạng sức khỏe tốt chiếm tỉ lệ cao ở giới tính nam.
insurance1 <- table(DLDT$health, DLDT$insurance )
insurance1
##
## no yes
## no 171 458
## yes 1579 6594
ggplot(z, aes(DLDT$health, fill = DLDT$insurance)) + geom_bar(position = 'dodge')
Dựa vào biểu đồ cột trên của biến health và insurance, ta thu được kết quả sau:
married1 <- table(DLDT$health, DLDT$married )
married1
##
## no yes
## no 231 398
## yes 3138 5035
ggplot(z, aes(DLDT$health , fill = DLDT$married)) + geom_bar(position = 'dodge')
Dựa vào biểu đồ cột trên của biến health và married, ta thu được kết quả sau:
selfemp1 <- table(DLDT$health, DLDT$selfemp )
selfemp1
##
## no yes
## no 562 67
## yes 7169 1004
ggplot(z, aes(DLDT$health, fill = DLDT$selfemp)) + geom_bar(position = 'dodge')
Dựa vào biểu đồ cột trên của biến health và selfemp, ta thu được kết quả sau:
ethnicity1 <- table(DLDT$health, ethnicity )
ethnicity1
## ethnicity
## other cauc
## no 134 495
## yes 1314 6859
ggplot(z, aes(DLDT$health, fill = ethnicity)) + geom_bar(position = 'dodge')
Dựa vào biểu đồ cột trên của biến health và ethnicity, ta thu được kết quả sau:
education1 <- table(DLDT$health, z$educated)
education1
##
## loweducattion higheducation
## no 506 123
## yes 5421 2752
ggplot(z, aes(DLDT$health, fill = z$educated)) + geom_bar(position = 'dodge')
## Warning: Use of `z$educated` is discouraged.
## ℹ Use `educated` instead.
Dựa vào biểu đồ cột trên của biến health và education, ta thu được kết quả sau:
region1 <- table(DLDT$health, z$region )
region1
##
## vung1 vung2
## no 226 403
## yes 3479 4694
ggplot(z, aes(DLDT$health, fill = z$region )) + geom_bar(position = 'dodge')
## Warning: Use of `z$region` is discouraged.
## ℹ Use `region` instead.
Dựa vào biểu đồ cột trên của biến health và region, ta thu được kết quả
sau:
library(epitools)
##
## Attaching package: 'epitools'
## The following object is masked from 'package:survival':
##
## ratetable
epitab(Age,method='riskratio', rev='c')
## $tab
##
## tren40 p0 duoi40 p1 riskratio lower upper
## no 343 0.5453100 286 0.4546900 1.000000 NA NA
## yes 3579 0.4379053 4594 0.5620947 1.236215 1.132422 1.349522
##
## p.value
## no NA
## yes 2.257472e-07
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
##Khi thêm tham số rev = “c” thì sẽ thực hiện việc đổi chỗ 2 cột trong bảng ngẫu nhiên
Bảng này cho tôi biết kết quả của phép tính rủi ro tương đối giữa với độ tuổi hai giá trị là tren40 và duoi40. Rủi ro tương đối bằng 1.236215, có nghĩa là người có sức khỏe tốt ở trên 40 tuổi có xác suất cao hơn 23.6% người có sức khỏe không tốt.
epitab(Family2,method='riskratio',rev='c')
## $tab
##
## nhieunguoi p0 itnguoi p1 riskratio lower upper
## no 128 0.2034976 501 0.7965024 1.000000 NA NA
## yes 1261 0.1542885 6912 0.8457115 1.061781 1.019565 1.105746
##
## p.value
## no NA
## yes 0.001466413
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Bảng này cho tôi biết kết quả của phép tính rủi ro tương đối giữa hai giá trị là gia đình có nhiều thành viên và ít thành viên. Rủi ro tương đối bằng 1.061781, có nghĩa là người có sức khỏe tốt ở gia đình ít người có xác suất cao hơn 6.17% người có sức khỏe không tốt.
epitab(limit1,method='riskratio',rev='c')
## $tab
##
## yes p0 no p1 riskratio lower upper p.value
## no 228 0.3624801 401 0.6375199 1.000000 NA NA NA
## yes 1003 0.1227212 7170 0.8772788 1.376081 1.296615 1.460417 1.124839e-48
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Bảng này cho tôi biết kết quả của phép tính rủi ro tương đối giữa hai giá trị là người có giới hạn về sức khỏe và người không có giới hạn về sức khỏe. Rủi ro tương đối bằng 1.37608, có nghĩa là người có sức khỏe tốt và có bị giới hạn về sức khỏe có xác suất cao hơn 37.6% người có sức khỏe không tốt.
epitab(gender1,method='riskratio',rev='c')
## $tab
##
## male p0 female p1 riskratio lower upper p.value
## no 306 0.4864865 323 0.5135135 1.0000000 NA NA NA
## yes 4327 0.5294262 3846 0.4705738 0.9163806 0.846379 0.9921719 0.03833366
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Bảng này cho tôi biết kết quả của phép tính rủi ro tương đối giữa hai giá trị là giới tính nam và giới tính nữ. Rủi ro tương đối bằng 0.9163806, có nghĩa là người có sức khỏe tốt là nam có xác suất bằng 91.6% người có sức khỏe không tốt.
epitab(married1,method='riskratio',rev='c')
## $tab
##
## yes p0 no p1 riskratio lower upper p.value
## no 398 0.6327504 231 0.3672496 1.000000 NA NA NA
## yes 5035 0.6160529 3138 0.3839471 1.045466 0.9401384 1.162595 0.4188503
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Bảng này cho tôi biết kết quả của phép tính rủi ro tương đối giữa hai giá trị là người đã lập gia đình và chưa lập gia đình. Rủi ro tương đối bằng 1.045466, có nghĩa là người có sức khỏe tốt đã lập gia đình có xác suất cao hơn 4.54% người có sức khỏe không tốt.
epitab(selfemp1,method='riskratio',rev='c')
## $tab
##
## yes p0 no p1 riskratio lower upper p.value
## no 67 0.1065183 562 0.8934817 1.0000000 NA NA NA
## yes 1004 0.1228435 7169 0.8771565 0.9817285 0.954453 1.009784 0.2543724
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Bảng này cho tôi biết kết quả của phép tính rủi ro tương đối giữa hai giá trị là đã tự chủ về tài chính hay là chưa tự chủ về tài chính. Rủi ro tương đối bằng 0.9817285, có nghĩa là người có sức khỏe tốt, tự chủ được tài chính có xác suất bằng 98.17% người có sức khỏe không tốt.
epitab(ethnicity1,method='riskratio',rev='c')
## $tab
## ethnicity
## cauc p0 other p1 riskratio lower upper p.value
## no 495 0.7869634 134 0.2130366 1.0000000 NA NA NA
## yes 6859 0.8392267 1314 0.1607733 0.7546746 0.6442772 0.8839886 0.0009689062
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Bảng này cho tôi biết kết quả của phép tính rủi ro tương đối giữa hai giá trị về nguồn gốc xuất xứ là cauc và other. Rủi ro tương đối bằng 0.7546746, có nghĩa là người có sức khỏe tốt nguồn gốc ở châu âu có xác suất bằng 75.46% người có sức khỏe không tốt.
epitab(education1,method='riskratio',rev='c')
## $tab
##
## higheducation p0 loweducattion p1 riskratio lower
## no 123 0.1955485 506 0.8044515 1.000000 NA
## yes 2752 0.3367185 5421 0.6632815 0.824514 0.7909881
##
## upper p.value
## no NA NA
## yes 0.8594609 4.279635e-14
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Bảng này cho tôi biết kết quả của phép tính rủi ro tương đối giữa hai giá trị là loweducation và higheducation. Rủi ro tương đối bằng 0.824514, có nghĩa là người có sức khỏe tốt ở trình độ học vấn cao có xác suất bằng 82.45% người có sức khỏe không tốt.
epitab(region1,method='riskratio',rev='c')
## $tab
##
## vung2 p0 vung1 p1 riskratio lower upper p.value
## no 403 0.6406995 226 0.3593005 1.000000 NA NA NA
## yes 4694 0.5743301 3479 0.4256699 1.184718 1.064125 1.318978 0.001236552
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Bảng này cho tôi biết kết quả của phép tính rủi ro tương đối giữa hai giá trị là vùng 2 và vùng 1. Rủi ro tương đối bằng 1.184718, có nghĩa là người có sức khỏe tốt ở vùng 2 có xác suất cao hơn 18.47% người có sức khỏe không tốt.
epitab(Age,method='oddsratio')
## $tab
##
## duoi40 p0 tren40 p1 oddsratio lower upper
## no 286 0.05860656 343 0.08745538 1.0000000 NA NA
## yes 4594 0.94139344 3579 0.91254462 0.6495949 0.5519379 0.7645309
##
## p.value
## no NA
## yes 2.257472e-07
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Bảng này cho tôi biết kết quả của tỷ lệ chênh giữa hai giá trị là tren40 và duoi40. Tỷ lệ chênh bằng 0.6495949, có nghĩa là người có sức khỏe tốt dưới 40 tuổi có xác suất bằng 64.95% người có sức khỏe không tốt.
epitab(Family2,method='oddsratio')
## $tab
##
## itnguoi p0 nhieunguoi p1 oddsratio lower upper
## no 501 0.06758397 128 0.09215263 1.0000000 NA NA
## yes 6912 0.93241603 1261 0.90784737 0.7140672 0.5827741 0.8749394
##
## p.value
## no NA
## yes 0.001466413
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Bảng này cho tôi biết kết quả của tỷ lệ chênh giữa hai giá trị là gia đình có nhiều thành viên và ít thành viên. Tỷ lệ chênh bằng 0.7140672, có nghĩa là người có sức khỏe tốt trong gia đình ít người có xác suất bằng 71.4% người có sức khỏe không tốt.
epitab(limit1,method='oddsratio')
## $tab
##
## no p0 yes p1 oddsratio lower upper p.value
## no 401 0.05296526 228 0.1852153 1.0000000 NA NA NA
## yes 7170 0.94703474 1003 0.8147847 0.2460318 0.2064336 0.2932258 1.124839e-48
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Bảng này cho tôi biết kết quả của tỷ lệ chênh giữa hai giá trị là người có giới hạn về sức khỏe và người không có giới hạn về sức khỏe. Tỷ lệ chênh bằng 0.246031, có nghĩa là người có sức khỏe tốt và không bị giới hạn sức khỏe có xác suất bằng 24.6% người có sức khỏe không tốt.
epitab(gender1,method='oddsratio')
## $tab
##
## female p0 male p1 oddsratio lower upper p.value
## no 323 0.07747661 306 0.06604792 1.000000 NA NA NA
## yes 3846 0.92252339 4327 0.93395208 1.187569 1.009679 1.3968 0.03833366
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Bảng này cho tôi biết kết quả của tỷ lệ chênh giữa hai giá trị là giới tính nam và giới tính nữ. Tỷ lệ chênh bằng 1.187569, có nghĩa là người có sức khỏe tốt là nữ có xác suất cao hơn 18,75% so người có sức khỏe không tốt.
epitab(married1,method='oddsratio')
## $tab
##
## no p0 yes p1 oddsratio lower upper p.value
## no 231 0.06856634 398 0.07325603 1.0000000 NA NA NA
## yes 3138 0.93143366 5035 0.92674397 0.9312696 0.7871476 1.10178 0.4188503
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Bảng này cho tôi biết kết quả của tỷ lệ chênh giữa hai giá trị là người đã lập gia đình và chưa lập gia đình. Tỷ lệ chênh bằng 0.9312696, có nghĩa là người có sức khỏe tốt và chưa lập gia đình có xác suất bằng 93.12% người có sức khỏe không tốt.
epitab(selfemp1,method='oddsratio')
## $tab
##
## no p0 yes p1 oddsratio lower upper p.value
## no 562 0.07269435 67 0.06255836 1.000000 NA NA NA
## yes 7169 0.92730565 1004 0.93744164 1.174726 0.9041571 1.526263 0.2543724
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Bảng này cho tôi biết kết quả của tỷ lệ chênh giữa hai giá trị là đã tự chủ về tài chính hay là chưa tự chủ về tài chính. Rủi ro tương đối bằng 1.174726, có nghĩa là người có sức khỏe tốt và chưa tự chủ được tài chính có xác suất cao hơn 17.47% người có sức khỏe không tốt.
epitab(ethnicity1,method='oddsratio')
## $tab
## ethnicity
## other p0 cauc p1 oddsratio lower upper p.value
## no 134 0.09254144 495 0.06731031 1.000000 NA NA NA
## yes 1314 0.90745856 6859 0.93268969 1.413074 1.157183 1.725552 0.0009689062
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Bảng này cho tôi biết kết quả của tỷ lệ chênhgiữa hai giá trị về nguồn gốc xuất xứ là cauc và other. Tỷ lệ chênh bằng 1.413074, có nghĩa là người có sức khỏe tốt và ở nguồn gốc khác có xác suất cao hơn 41.3% người có sức khỏe không tốt.
epitab(education1,method='oddsratio')
## $tab
##
## loweducattion p0 higheducation p1 oddsratio lower
## no 506 0.08537203 123 0.04278261 1.000000 NA
## yes 5421 0.91462797 2752 0.95721739 2.088404 1.705902
##
## upper p.value
## no NA NA
## yes 2.556671 4.279635e-14
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Bảng này cho tôi biết kết quả của tỷ lệ chênh giữa hai giá trị là loweducation và higheducation. Tỷ lệ chênh bằng 2.088404, có nghĩa là người có sức khỏe tốt học ở trình độ thấp có xác suất cao hơn 2.08 lần người có sức khỏe không tốt.
epitab(region1,method='oddsratio')
## $tab
##
## vung1 p0 vung2 p1 oddsratio lower upper p.value
## no 226 0.06099865 403 0.07906612 1.0000000 NA NA NA
## yes 3479 0.93900135 4694 0.92093388 0.7566448 0.639199 0.89567 0.001236552
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Bảng này cho tôi biết kết quả của tỷ lệ chênh giữa hai giá trị là vùng 1 và vùng 2. Tỷ lệ chênh bằng 0.7566448, có nghĩa là người có sức khỏe tốt ở vùng 1 có xác suất bằng 75.6% người có sức khỏe không tốt.
# Người có tình trạng sức khỏe tốt
Health<-z[z$DLDT.health == "yes",]
length(z$DLDT.health)
## [1] 8802
prop.test(length(Health$DLDT.health),length(z$DLDT.health),p= 0.75)
##
## 1-sample proportions test with continuity correction
##
## data: length(Health$DLDT.health) out of length(z$DLDT.health), null probability 0.75
## X-squared = 1495.4, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.75
## 95 percent confidence interval:
## 0.9229098 0.9337903
## sample estimates:
## p
## 0.928539
Đặt giả thuyết:
\(H_0\): Người có tình trạng sức khỏe tốt chiếm 75%
\(H_1\): Người có tình trạng sức khỏe tốt không chiếm 75%
Vì P-value < 2.2e-16 nên ta bác bỏ \(H_0\) và chấp nhận \(H_1\) đồng nghĩa với người có tình trạng sức khỏe tốt không chiếm 75%.
Khoảng ước lượng tỷ lệ người có tình trạng sức khỏe tốt với độ tin cậy 95% là \((0.9229098;0.9337903)\)
# Người có tình trạng sức khỏe không tốt
Health1<-z[z$DLDT.health == "no",]
length(z$DLDT.health)
## [1] 8802
prop.test(length(Health1$DLDT.health),length(z$DLDT.health),p= 0.4)
##
## 1-sample proportions test with continuity correction
##
## data: length(Health1$DLDT.health) out of length(z$DLDT.health), null probability 0.4
## X-squared = 3957.3, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.4
## 95 percent confidence interval:
## 0.06620974 0.07709016
## sample estimates:
## p
## 0.07146103
Đặt giả thuyết:
\(H_0\): Người có tình trạng sức khỏe tốt chiếm 40%
\(H_1\): Người có tình trạng sức khỏe tốt không chiếm 40%
Vì P-value < 2.2e-16 nên ta bác bỏ \(H_0\) và chấp nhận \(H_1\) đồng nghĩa với người có tình trạng sức khỏe không tốt không chiếm tới 40%.
Khoảng ước lượng tỷ lệ người có tình trạng sức khỏe không tốt với độ tin cậy 95% là \((0.06620974;0.07709016)\)
chisq.test(Age)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: Age
## X-squared = 26.84, df = 1, p-value = 2.21e-07
Đặt giả thiết:
\(H_0\): Biến health và Age có tính độc lập
\(H_1\): Biến health và Age không có tính độc lập
Vì p-value = 2.21e-07 < 0.05 nên ta bác bỏ \(H_0\) và chấp nhận \(H_1\), đồng nghĩa là Biến health và Age không có tính độc lập với nhau.
chisq.test(Family2)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: Family2
## X-squared = 10.275, df = 1, p-value = 0.001349
Đặt giả thiết:
\(H_0\): Biến health và family có tính độc lập
\(H_1\): Biến health và family không có tính độc lập
Vì p-value = 0.001349 < 0.05 nên ta bác bỏ \(H_0\) và chấp nhận \(H_1\), đồng nghĩa là Biến health và family không có tính độc lập với nhau.
chisq.test(limit1)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: limit1
## X-squared = 277.11, df = 1, p-value < 2.2e-16
Đặt giả thiết:
\(H_0\): Biến health và limit có tính độc lập
\(H_1\): Biến health và limit không có tính độc lập
Vì p-value < 2.2e-16 < 0.05 nên ta bác bỏ \(H_0\) và chấp nhận \(H_1\), đồng nghĩa là Biến health và limit không có tính độc lập với nhau.
chisq.test(gender1)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: gender1
## X-squared = 4.149, df = 1, p-value = 0.04166
Đặt giả thiết:
\(H_0\): Biến health và gender có tính độc lập
\(H_1\): Biến health và gender không có tính độc lập
Vì p-value = 0.04166 < 0.05 nên ta bác bỏ \(H_0\) và chấp nhận \(H_1\), đồng nghĩa là Biến health và gender không có tính độc lập với nhau.
chisq.test(insurance1)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: insurance1
## X-squared = 22.197, df = 1, p-value = 2.46e-06
Đặt giả thiết:
\(H_0\): Biến health và insurance có tính độc lập
\(H_1\): Biến health và insurance không có tính độc lập
Vì p-value = 2.46e-06 < 0.05 nên ta bác bỏ \(H_0\) và chấp nhận \(H_1\), đồng nghĩa là Biến health và insurance không có tính độc lập với nhau.
chisq.test(married1)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: married1
## X-squared = 0.62039, df = 1, p-value = 0.4309
Đặt giả thiết:
\(H_0\): Biến health và married có tính độc lập
\(H_1\): Biến health và married không có tính độc lập
Vì p-value = 2.21e-07 > 0.4309 nên ta chấp nhận \(H_0\) đồng nghĩa là Biến health và married có tính độc lập với nhau.
chisq.test(selfemp1)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: selfemp1
## X-squared = 1.3077, df = 1, p-value = 0.2528
Đặt giả thiết:
\(H_0\): Biến health và selfemp có tính độc lập
\(H_1\): Biến health và selfemp không có tính độc lập
Vì p-value = 0.2528 > 0.05 nên ta chấp nhận \(H_0\), đồng nghĩa là Biến health và selfemp có tính độc lập với nhau.
chisq.test(ethnicity1)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: ethnicity1
## X-squared = 11.23, df = 1, p-value = 0.000805
Đặt giả thiết:
\(H_0\): Biến health và ethnicity có tính độc lập
\(H_1\): Biến health và ethnicity không có tính độc lập
Vì p-value = 0.000805 < 0.05 nên ta bác bỏ \(H_0\) và chấp nhận \(H_1\), đồng nghĩa là Biến health và ethnicity không có tính độc lập với nhau.
chisq.test(education1)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: education1
## X-squared = 52.281, df = 1, p-value = 4.811e-13
Đặt giả thiết:
\(H_0\): Biến health và education có tính độc lập
\(H_1\): Biến health và education không có tính độc lập
Vì p-value = 4.811e-13 < 0.05 nên ta bác bỏ \(H_0\) và chấp nhận \(H_1\), đồng nghĩa là Biến health và education không có tính độc lập với nhau.
chisq.test(region1)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: region1
## X-squared = 10.284, df = 1, p-value = 0.001342
Đặt giả thiết:
\(H_0\): Biến health và region có tính độc lập
\(H_1\): Biến health và region không có tính độc lập
Vì p-value = 4.811e-13 < 0.05 nên ta bác bỏ \(H_0\) và chấp nhận \(H_1\), đồng nghĩa là Biến health và region không có tính độc lập với nhau.
Dựa vào kiểm định tính độc lập giữa biến định tính phụ thuộc là health với các biến độc lập khác ở trên. Có 2 biến thể hiện tính độc lập với biến phụ thuộc đó là married và selfemp nên tôi tiến hành hồi quy logistic các biến còn lại.
mohinh1 <- glm(DLDT.health ~ DLDT$limit + DLDT$gender +DLDT$insurance + educated + ethnicity + family1 , family = binomial(link = 'logit'), data = z)
summary(mohinh1)
##
## Call:
## glm(formula = DLDT.health ~ DLDT$limit + DLDT$gender + DLDT$insurance +
## educated + ethnicity + family1, family = binomial(link = "logit"),
## data = z)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 2.12170 0.12775 16.609 < 2e-16 ***
## DLDT$limityes -1.45076 0.09164 -15.832 < 2e-16 ***
## DLDT$gendermale 0.19247 0.08521 2.259 0.023894 *
## DLDT$insuranceyes 0.36124 0.09762 3.701 0.000215 ***
## educatedhigheducation 0.60443 0.10599 5.703 1.18e-08 ***
## ethnicitycauc 0.38450 0.10515 3.657 0.000255 ***
## family1nhieunguoi -0.40094 0.10744 -3.732 0.000190 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 4531.3 on 8801 degrees of freedom
## Residual deviance: 4221.4 on 8795 degrees of freedom
## AIC: 4235.4
##
## Number of Fisher Scoring iterations: 6
Với mô hình hồi quy logit của biến phụ thuộc health với 6 biến độc lập gồm limit, gender, insurance, educated, ethnicity và family, cho ta thấy rằng cả 6 biến đều có ý nghĩa thống kê ở mức ý nghĩa 5%. Mô hình như sau:
$logit(π) = 2.12170 -1.45076limityes + 0.19247gendermale + 0.36124insuranceyes + 0.60443educatedhigheducation +0.38450ethnicitycauc - 0.40094family1nhieunguoi $
mohinh2 <- glm(DLDT.health ~ DLDT$limit + DLDT$gender +DLDT$insurance + educated + ethnicity + family1 , family = binomial(link = 'probit'), data = z)
summary(mohinh2)
##
## Call:
## glm(formula = DLDT.health ~ DLDT$limit + DLDT$gender + DLDT$insurance +
## educated + ethnicity + family1, family = binomial(link = "probit"),
## data = z)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 1.23998 0.06509 19.051 < 2e-16 ***
## DLDT$limityes -0.74494 0.04880 -15.265 < 2e-16 ***
## DLDT$gendermale 0.08946 0.04210 2.125 0.033600 *
## DLDT$insuranceyes 0.18227 0.04951 3.682 0.000232 ***
## educatedhigheducation 0.28511 0.04972 5.734 9.82e-09 ***
## ethnicitycauc 0.18831 0.05317 3.541 0.000398 ***
## family1nhieunguoi -0.20038 0.05412 -3.703 0.000213 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 4531.3 on 8801 degrees of freedom
## Residual deviance: 4222.6 on 8795 degrees of freedom
## AIC: 4236.6
##
## Number of Fisher Scoring iterations: 5
Với mô hình hồi quy probit của biến phụ thuộc health với 6 biến độc lập gồm limit, gender, insurance, educated, ethnicity và family, cho ta thấy rằng cả 6 biến đều có ý nghĩa thống kê ở mức ý nghĩa 5%. Mô hình như sau:
$probit(π) = 1.23998 -0.74494limityes + 0.08946gendermale + 0.18227insuranceyes + 0.28511educatedhigheducation +0.18831ethnicitycauc -0.20038family1nhieunguoi $
mohinh3 <- glm(DLDT$health ~ DLDT$limit + DLDT$gender +DLDT$insurance + educated + ethnicity + family1 , family = binomial(link = 'cloglog'), data = z)
summary(mohinh3)
##
## Call:
## glm(formula = DLDT$health ~ DLDT$limit + DLDT$gender + DLDT$insurance +
## educated + ethnicity + family1, family = binomial(link = "cloglog"),
## data = z)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.80458 0.04909 16.391 < 2e-16 ***
## DLDT$limityes -0.56961 0.03973 -14.336 < 2e-16 ***
## DLDT$gendermale 0.06044 0.03064 1.972 0.048568 *
## DLDT$insuranceyes 0.13487 0.03714 3.631 0.000282 ***
## educatedhigheducation 0.19716 0.03467 5.687 1.3e-08 ***
## ethnicitycauc 0.13490 0.03968 3.399 0.000675 ***
## family1nhieunguoi -0.14726 0.04035 -3.649 0.000263 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 4531.3 on 8801 degrees of freedom
## Residual deviance: 4224.9 on 8795 degrees of freedom
## AIC: 4238.9
##
## Number of Fisher Scoring iterations: 5
Với mô hình hồi quy cloglog của biến phụ thuộc health với 6 biến độc lập gồm limit, gender, insurance, educated, ethnicity và family, cho ta thấy rằng cả 6 biến đều có ý nghĩa thống kê ở mức ý nghĩa 5%. Mô hình như sau:
$cloglog(π) = 0.80458 -0.56961limityes + 0.06044gendermale + 0.13487insuranceyes + 0.19716educatedhigheducation +0.13490ethnicitycauc -0.14726family1nhieunguoi $
AIC1 <- AIC(mohinh1)
AIC2 <- AIC(mohinh2)
AIC3 <- AIC(mohinh3)
AIC <-cbind(AIC1,AIC2,AIC3)
AIC
## AIC1 AIC2 AIC3
## [1,] 4235.435 4236.562 4238.889
=> Dựa vào bảng kết quả trên ta thu được giá trị AIC nhỏ nhất ở mô hình hồi quy logit tức là mô hình logit sẽ phù hợp hơn với 2 mô hình còn lại.
dev1 <- deviance(mohinh1)
dev2 <- deviance(mohinh2)
dev3 <- deviance(mohinh3)
deviance <-cbind(dev1,dev2,dev3)
deviance
## dev1 dev2 dev3
## [1,] 4221.435 4222.562 4224.889
=> Dựa vào bảng kết quả trên ta thu được giá trị deviance nhỏ nhất ở mô hình hồi quy logit tức là mô hình logit sẽ phù hợp hơn với 2 mô hình còn lại.
library(DescTools)
## Warning: package 'DescTools' was built under R version 4.3.1
##
## Attaching package: 'DescTools'
## The following object is masked from 'package:car':
##
## Recode
BrierScore(mohinh1)
## [1] 0.06336321
BrierScore(mohinh2)
## [1] 0.06338447
BrierScore(mohinh3)
## [1] 0.06342488
=> Dựa vào bảng kết quả trên ta thu được giá trị BrierScore nhỏ nhất ở mô hình hồi quy logit, tức là mô hình logit sẽ phù hợp hơn với 2 mô hình còn lại.
Kết luận, khi xét AIC, deviance và BrierScore thì mô hình hồi quy logit là tối ưu nhất.
Sau khi tiến hành hồi quy biến phụ thuộc định tính là health với 6 biến độc lập gồm limit, gender, insurance, educated, ethnicity và family thì tất cả các biến đều có ý nghĩa và đạt tối ưu ở mô hình logit. Với giả thuyết khi các yếu tố khác không đổi thì ở mức ý nghĩa 1%, các biến độc lập này sẽ có mức độ ảnh hưởng đối với tình trạng sức khỏe của người tham gia cuộc khảo sát.
Mô hình tối ưu có dạng sau:
$logit(π) = 2.12170 -1.45076limityes + 0.19247gendermale + 0.36124insuranceyes + 0.60443educatedhigheducation +0.38450ethnicitycauc - 0.40094family1nhieunguoi $
Hàm logistic có dạng:
\(logistic(x) = \frac{1}{(1 + e^{(-x)})}\)
Ta thu được kết quả nếu có một người là nam, có giới hạn về sức khỏe, có bảo hiểm, có trình độ cao học, thuộc dân tộc caucasian và sống trong gia đình có nhiều người, thì xác suất của sự kiện là:
\(logit(π) = 2.12170 - 1.45076 * 1 + 0.19247 * 1 + 0.36124 * 1 + 0.60443 * 1 + 0.38450 * 1 - 0.40094 * 1 logit(π) = 1.81264 π = logistic(1.81264) π = 0.859\)
Tức là xác suất của sự kiện là khoảng 86%.
Trong bài tiểu luân này, tôi đã tiến hành xử lí bộ dữ liệu “HealthInsurance” trong gói AER. Gồm có 11 biến trong đó có 9 biến định tính và 2 biến định lượng. Tôi chọn biến định tính health là biến phụ thuộc và tiến hành thống kê mô tả của từng biến độc lập khác để có cái nhìn khách quan hơn về bộ dữ liệu, sau đó tôi tiến hành thống kê mô 2 biến phụ thuộc với các biến định tính còn lại, điều này trên giả thiết sẽ giúp tôi thấy rõ các biến độc lập khác như độ tuổi, nguồn gốc, vùng miền, sở hữu bảo hiểm,… đều có tác động đến tình trạng sức khỏe và có 6 biến độc lập gồm limit, gender, insurance, educated, ethnicity và family thể hiện rõ sự tác động thông qua mô hình hồi quy tối ưu nhất là logit khi xét các yếu tố như AIC, Deviance, Brier.
Rstudio là một phần mềm lập trình và mới mẻ đối với tôi nên tôi cần có nhiều thời gian để tìm hiểu kiến thức về ngôn ngữ R để có thể sử dụng nó hiệu quả. Nếu tôi không quen với cú pháp và các hàm của R, tôi có thể gặp khó khăn trong việc nhập, xử lý và phân tích dữ liệu. Rstudio cũng có thể gặp một số vấn đề về hiệu năng khi xử lý các bộ dữ liệu lớn hoặc phức tạp có thể cần phải tối ưu hóa mã nguồn của mình hoặc sử dụng các gói bổ sung để giảm thiểu thời gian chạy và bộ nhớ. Rstudio cũng có thể không tương thích với một số định dạng dữ liệu hoặc phần mềm khác có thể cần phải chuyển đổi dữ liệu sang định dạng phù hợp hoặc sử dụng các công cụ liên kết để kết nối với các nguồn dữ liệu khác.
[1] T.K.Thanh, T.M.Tường, V.A.L.Duy, Bài giảng Phân tích dữ liệu định tính.
library(data.table)
## Warning: package 'data.table' was built under R version 4.3.1
##
## Attaching package: 'data.table'
## The following object is masked from 'package:DescTools':
##
## %like%
## The following objects are masked from 'package:dplyr':
##
## between, first, last
data.table(z)
## DLDT.health DLDT.limit DLDT.gender DLDT.insurance DLDT.married
## 1: yes no male yes yes
## 2: yes no female yes yes
## 3: yes no male yes yes
## 4: yes no male yes no
## 5: yes no male yes yes
## ---
## 8798: yes no female yes yes
## 8799: yes no male yes yes
## 8800: yes no male yes yes
## 8801: yes no female yes yes
## 8802: yes no male yes yes
## DLDT.selfemp DLDT.region DLDT.ethnicity DLDT.education DLDT.age age1
## 1: yes south cauc bachelor 31 duoi40
## 2: no south cauc highschool 31 duoi40
## 3: no west cauc ged 54 tren40
## 4: no west cauc highschool 27 duoi40
## 5: no west cauc none 39 duoi40
## ---
## 8798: no northeast cauc highschool 46 tren40
## 8799: no northeast cauc highschool 50 tren40
## 8800: no south cauc bachelor 27 duoi40
## 8801: no south cauc bachelor 27 duoi40
## 8802: no northeast cauc phd 35 duoi40
## family1 ethnicity educated region
## 1: itnguoi cauc higheducation vung2
## 2: itnguoi cauc loweducattion vung2
## 3: nhieunguoi cauc loweducattion vung2
## 4: nhieunguoi cauc loweducattion vung2
## 5: nhieunguoi cauc loweducattion vung2
## ---
## 8798: itnguoi cauc loweducattion vung1
## 8799: itnguoi cauc loweducattion vung1
## 8800: itnguoi cauc higheducation vung2
## 8801: itnguoi cauc higheducation vung2
## 8802: itnguoi cauc higheducation vung1