library(DT)
library(dplyr)
library(tidyverse)
d<-d<- read.csv("C:/Users/LENOVO/Downloads/DoctorVisits.csv")
str(d)
## 'data.frame': 5190 obs. of 13 variables:
## $ rownames : int 1 2 3 4 5 6 7 8 9 10 ...
## $ visits : int 1 1 1 1 1 1 1 1 1 1 ...
## $ gender : chr "female" "female" "male" "male" ...
## $ age : num 0.19 0.19 0.19 0.19 0.19 0.19 0.19 0.19 0.19 0.19 ...
## $ income : num 0.55 0.45 0.9 0.15 0.45 0.35 0.55 0.15 0.65 0.15 ...
## $ illness : int 1 1 3 1 2 5 4 3 2 1 ...
## $ reduced : int 4 2 0 0 5 1 0 0 0 0 ...
## $ health : int 1 1 0 0 1 9 2 6 5 0 ...
## $ private : chr "yes" "yes" "no" "no" ...
## $ freepoor : chr "no" "no" "no" "no" ...
## $ freerepat: chr "no" "no" "no" "no" ...
## $ nchronic : chr "no" "no" "no" "no" ...
## $ lchronic : chr "no" "no" "no" "no" ...
datatable(d)
Bộ dữ liệu “DoctorVisits” có nguồn gốc từ Khảo sát Y tế Úc 1977–1978. với 12 biến và 5190 quan sát với mô tả các biến như sau:
summary(d$income)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.0000 0.2500 0.5500 0.5832 0.9000 1.5000
sd(d$income)
## [1] 0.3689067
ggplot(d, aes(x = income)) +
geom_density(fill = "red", color = "pink", alpha = 0.5) +
labs(x = "biểu đồ mức thu nhập")
Nhận xét:
summary(d$age)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.1900 0.2200 0.3200 0.4064 0.6200 0.7200
sd(d$age)
## [1] 0.2047818
ggplot(d, aes(x = age)) +
geom_density(fill = "darkgray", color = "white", alpha = 0.5) +
labs(x = "biểu đồ tuổi")
Nhận xét :
g<- table (d$gender)
addmargins(g)
##
## female male Sum
## 2702 2488 5190
prop.table(g)*100
##
## female male
## 52.06166 47.93834
d |> ggplot(aes(gender)) +
geom_bar()
Có 5190 quan sát trong đó :
bh<- table(d$private)
addmargins(bh)
##
## no yes Sum
## 2892 2298 5190
prop.table(bh)*100
##
## no yes
## 55.72254 44.27746
d |> ggplot(aes(private)) +
geom_bar(fill="blue")
Trong 5190 người tham gia khảo sát thì có :
gt<- table(d$income,d$gender)
gt
##
## female male
## 0 50 29
## 0.01 19 16
## 0.06 41 39
## 0.15 145 104
## 0.25 864 331
## 0.35 281 181
## 0.45 223 177
## 0.55 246 221
## 0.65 228 227
## 0.75 177 264
## 0.9 222 367
## 1.1 108 253
## 1.3 49 113
## 1.5 49 166
Ở các mức thu nhập thấp, số lượng nữ thường nhiều hơn nam. Ví dụ, ở mức thu nhập 0, có 50 nữ và 29 nam; ở mức 0.15, có 145 nữ và 104 nam. Điều này có thể cho thấy rằng tỷ lệ nữ có thu nhập thấp cao hơn nam.
Ở các mức thu nhập trung bình, sự chênh lệch giữa số lượng nữ và nam không quá lớn nhưng vẫn có xu hướng nữ nhiều hơn nam. Ví dụ, ở mức thu nhập 0.25, có 864 nữ và 331 nam; ở mức 0.65, có 228 nữ và 227 nam. Mức thu nhập 0.75 là ngoại lệ, nơi có 177 nữ và 264 nam, cho thấy ở mức thu nhập này nam nhiều hơn nữ.
Ở các mức thu nhập cao, số lượng nam thường nhiều hơn nữ. Ví dụ, ở mức thu nhập 0.9, có 222 nữ và 367 nam; ở mức 1.5, có 49 nữ và 166 nam. Điều này có thể cho thấy rằng tỷ lệ nam có thu nhập cao hơn nữ. => Nhận xét chung:
Phân bố thu nhập: Bảng tần số cho thấy một xu hướng rõ ràng rằng nữ thường chiếm ưu thế ở các mức thu nhập thấp và trung bình, trong khi nam thường chiếm ưu thế ở các mức thu nhập cao.
Chênh lệch giới tính: Sự chênh lệch giới tính rõ rệt nhất ở mức thu nhập 0.25, nơi số lượng nữ gấp hơn hai lần số lượng nam (864 nữ so với 331 nam).
Tính đa dạng: Ở các mức thu nhập trung bình (0.25 - 0.65), có sự phân bố khá đều giữa nam và nữ, nhưng sự phân bố này thay đổi khi tiến tới các mức thu nhập cao hơn, nơi nam chiếm ưu thế.
prop.table(gt)
##
## female male
## 0 0.009633911 0.005587669
## 0.01 0.003660886 0.003082852
## 0.06 0.007899807 0.007514451
## 0.15 0.027938343 0.020038536
## 0.25 0.166473988 0.063776493
## 0.35 0.054142582 0.034874759
## 0.45 0.042967245 0.034104046
## 0.55 0.047398844 0.042581888
## 0.65 0.043930636 0.043737958
## 0.75 0.034104046 0.050867052
## 0.9 0.042774566 0.070712909
## 1.1 0.020809249 0.048747592
## 1.3 0.009441233 0.021772640
## 1.5 0.009441233 0.031984586
bhtn<- ftable(d$private,d$gender,d$income)
bhtn
## 0 0.01 0.06 0.15 0.25 0.35 0.45 0.55 0.65 0.75 0.9 1.1 1.3 1.5
##
## no female 25 15 18 88 642 174 116 118 84 54 58 22 15 4
## male 17 14 24 69 276 129 111 146 130 157 189 106 46 45
## yes female 25 4 23 57 222 107 107 128 144 123 164 86 34 45
## male 12 2 15 35 55 52 66 75 97 107 178 147 67 121
Xu hướng bảo hiểm y tế tư nhân theo giới tính và thu nhập:
Nữ giới:
Ở mức thu nhập thấp, tỷ lệ nữ không có bảo hiểm y tế tư nhân cao hơn tỷ lệ nữ có bảo hiểm y tế tư nhân. Ở mức thu nhập trung bình, tỷ lệ này có xu hướng cân bằng hơn.
Ở mức thu nhập cao, tỷ lệ nữ có bảo hiểm y tế tư nhân tăng lên, nhưng vẫn thấp hơn so với nam ở các mức thu nhập cao nhất.
Nam giới:
Ở mức thu nhập thấp và trung bình, tỷ lệ nam không có bảo hiểm y tế tư nhân cao hơn tỷ lệ nam có bảo hiểm y tế tư nhân.
Ở mức thu nhập cao, tỷ lệ nam có bảo hiểm y tế tư nhân tăng lên đáng kể và vượt qua tỷ lệ nữ có bảo hiểm y tế tư nhân.
Nhận xét chung:
library(ggplot2)
tmp <- d
tmp <- table(d$gender)
tmp <- d |> group_by(gender) |> summarise(freq = n()) |> mutate(tmp, per = freq/sum(freq))
tmp |> ggplot(aes(x = '', y = per, fill = gender)) +
geom_bar(stat = 'identity') +
coord_polar('y')
Từ đồ thị trên ta có thể thấy số lượng nữ nhiều hơn nam, nhưng sự chênh lệch này không đáng kể.
ggplot(data = d, aes(x = gender, y = income)) +
geom_bar(stat = "identity") +geom_col(fill = 'green')+
theme_minimal() +
labs(title = "Income by Gender",
x = "Gender",
y = "Income")
Từ đồ thị có thể thấy thu nhập ở nữ giới thấp hơn ở nam đáng kể, tổng
thu nhập ở nữ ở khoảng hơn 1250 trong khi thu nhập ở nam lên đến gần
1700.
ggplot(d, aes(gender, fill = private)) + geom_bar(position = 'dodge')
Số lượng người không có bảo hiểm tư nhân ở nam và nữ gần như ngang bằng
nhau, trong khi đó số lượng người sở hữu bảo hiểm ở nữ nhiêu hơn nam
đang kể. Điều này cho thấy giới tính có ảnh hưởng phần nào đến các quyết
định mua bảo hiểm.
tmp <- d[d$income>0.5,]
prop.test(length(tmp$income), length(d$income), p = 0.36)
##
## 1-sample proportions test with continuity correction
##
## data: length(tmp$income) out of length(d$income), null probability 0.36
## X-squared = 563.82, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.36
## 95 percent confidence interval:
## 0.5046057 0.5319759
## sample estimates:
## p
## 0.5183044
Với giả thuyết: \[H_{o}: \text{Tỷ lệ thực tế của những người có thu nhập > 0.5 = 0.36.}\\ H_{1}: \text{Tỷ lệ thực tế của những người có thu nhập > 0.5 không ≠ 0.36.}\]
Từ kết quả trên ta đưa ra một số nhận xét sau: - p-value < 2.2e-16: Giá trị p-value rất nhỏ, nhỏ hơn mức ý nghĩa thông thường (0.05), cho thấy rằng chúng ta có đủ bằng chứng để bác bỏ giả thuyết \(H_{0}\). Nghĩa là, tỷ lệ thực tế của những người có thu nhập lớn hơn 0.5 trong dữ liệu của bạn khác biệt đáng kể so với tỷ lệ 0.36 đã đưa ra. - Khoảng tin cậy cho tỷ lệ thực tế nằm trong khoảng từ 0.5046 đến 0.5320, nghĩa là chúng ta tự tin 95% rằng tỷ lệ thực tế của những người có thu nhập lớn hơn 0.5 nằm trong khoảng này. - Tỷ lệ thực tế của những người có thu nhập lớn hơn 0.5 trong dữ liệu của bạn là khoảng 51.83%.
tmpm <- d[d$gender == 'male',]
tmpf <- d[d$gender == 'female',]
tmpm3 <- tmpm[tmpm$income> 0.5,]
tmpf3 <- tmpf[tmpf$income > 0.5,]
a <- c(nrow(tmpm), nrow(tmpf))
b <- c(nrow(tmpm3), nrow(tmpf3))
prop.test(b,a)
##
## 2-sample test for equality of proportions with continuity correction
##
## data: b out of a
## X-squared = 318.55, df = 1, p-value < 2.2e-16
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## 0.2214553 0.2748932
## sample estimates:
## prop 1 prop 2
## 0.6475080 0.3993338
Với giả thuyết: \[H_{o}: \text{Không có sự khác biệt về tỷ lệ thu nhập >0.5 giữa nam và nữ}\\ H_{1}: \text{Có sự khác biệt về tỷ lệ thu nhập >0.5 giữa nam và nữ}\]
Từ kết quả trên ta đưa ra một số nhận xét sau:
library(epitools)
library(DescTools)
tmp <- table(d$gender, d$private)
addmargins(tmp)
##
## no yes Sum
## female 1433 1269 2702
## male 1459 1029 2488
## Sum 2892 2298 5190
RelRisk(tmp)
## [1] 0.9043904
m <- matrix(c(1433,1459,1269,1029),nrow = 2)
RelRisk(m, conf.level = .95)
## rel. risk lwr.ci upr.ci
## 0.9043904 0.8615773 0.9492873
Kết quả RR = 0.904 cho thấy lượng nữ giới không có bảo hiểm tư nhân gấp 0.904 lần lượng nam không có bảo hiểm. Điều này có thể được hiểu là trong dữ liệu , việc không có bảo hiểm tư nhân có thể liên quan đến các yếu tố khác (không phải giới tín). Và với khoảng tin cậy 95% thì tỷ lệ nguy cơ tương đối này nằm trong khoảng (0.8616;0.9493).
riskratio(tmp)
## $data
##
## no yes Total
## female 1433 1269 2702
## male 1459 1029 2488
## Total 2892 2298 5190
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## female 1.0000000 NA NA
## male 0.8806204 0.8280106 0.9365729
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## female NA NA NA
## male 4.853326e-05 4.997577e-05 4.856833e-05
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Tỷ lệ risk ratio ở nam = 0.8806204, điều này cho thấy lượng nam giới sở hữu bảo hiểm tư nhân gấp 0.88 lượng nữ sở bảo hiểm tư nhân, đồng thời với độ tin cậy 95% thì tỷ lệ này biến động trong khoảng (0.8280106;0.9365729).
OddsRatio(tmp)
## [1] 0.7964246
oddsratio(tmp, rev = 'c')
## $data
##
## yes no Total
## female 1269 1433 2702
## male 1029 1459 2488
## Total 2298 2892 5190
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## female 1.00000 NA NA
## male 1.25552 1.124923 1.401488
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## female NA NA NA
## male 4.853326e-05 4.997577e-05 4.856833e-05
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Gía trị OR = 0.796 cho thấy tỉ lệ giữa người không có bảo hiểm tư nhân và có bảo hiểm tư nhân ở nữ gấp 0.796 lần tỉ lệ này ở nam. Và tỷ lệ giữa người có bảo hiểm và không có bảo hiểm ở nữ nhiều hơn ở nam khoảng 26%.
d |> ggplot(aes(income, age)) +
geom_point(color = 'red') +
geom_smooth(formula =y ~ x, method = 'lm')
Ươc lượng hàm hồi quy tổng quát
fit <- lm(income ~ age, data = d)
summary(fit)
##
## Call:
## lm(formula = income ~ age, data = d)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.68883 -0.22885 -0.09976 0.22582 1.06999
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.78161 0.01096 71.35 <2e-16 ***
## age -0.48833 0.02407 -20.28 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.3551 on 5188 degrees of freedom
## Multiple R-squared: 0.07348, Adjusted R-squared: 0.0733
## F-statistic: 411.5 on 1 and 5188 DF, p-value: < 2.2e-16
Dựa trên thông số ước lượng, phương trình hồi quy tuyến tính có thể viết là: \[income = 0.78161 − 0.48833 *age\] Với giá trị \(p-value = 2*10^\text{-16}\) < \(\alpha\) và Significance codes đạt mức *** tức p<0.001 nên ta kết luận biến age có ý nghĩa thống kê với biến income hay tuổi tác có tác động đáng kể đến thu nhập cá nhân.