Yêu cầu: Chạy mô hình hồi quy của các biến định tính trong câu số 2, thực hiện các bài toán liên quan.
-Hàm liên kết cho dữ liệu nhị phân: logit
fit <- glm(factor(trinhdo) ~ gender, family = binomial(link = 'logit'), data = d )
fit
##
## Call: glm(formula = factor(trinhdo) ~ gender, family = binomial(link = "logit"),
## data = d)
##
## Coefficients:
## (Intercept) genderfemale
## -0.201 -0.137
##
## Degrees of Freedom: 533 Total (i.e. Null); 532 Residual
## Null Deviance: 731
## Residual Deviance: 730 AIC: 734
-Hàm liên kết cho dữ liệu nhị phân: probit
fit1 <- glm(data = d, factor (trinhdo) ~ gender, family = binomial(link = 'probit'))
fit1
##
## Call: glm(formula = factor(trinhdo) ~ gender, family = binomial(link = "probit"),
## data = d)
##
## Coefficients:
## (Intercept) genderfemale
## -0.1261 -0.0852
##
## Degrees of Freedom: 533 Total (i.e. Null); 532 Residual
## Null Deviance: 731
## Residual Deviance: 730 AIC: 734
-Hàm liên kết cho dữ liệu nhị phân: cloglog
fit2 <- glm(data = d, factor(trinhdo) ~ gender, family = binomial(link = 'cloglog'))
fit2
##
## Call: glm(formula = factor(trinhdo) ~ gender, family = binomial(link = "cloglog"),
## data = d)
##
## Coefficients:
## (Intercept) genderfemale
## -0.515 -0.104
##
## Degrees of Freedom: 533 Total (i.e. Null); 532 Residual
## Null Deviance: 731
## Residual Deviance: 730 AIC: 734
Tại đây em đã tiến hành phân tích dữ liệu nhị phân theo 3 loại hàm liên kết là logit, probit, cloglog ta có các phương trình sau:
Hàm logit: ta có hàm là y= -0,201 - 0,137x
Hàm probit: ta có hàm là: y= -0,1261 - 0,852x
Hàm cloglog: hàm là: y= -0,515 - 0,104x
cả 3 hàm đều a,b cho ra các giá trị âm nhưng có đều không giống về số a giao động từ [-0,515;-0,201] và b thuộc khoảng
Hai biến này không phải dữ liệu có phân phối poisson nên không thể thực hiện ước lượng hàm hồi quy cho dữ liệu Poisson
Sau khi ước lượng theo cái hàm liên kế khác nhau ta tiếng hành đánh giá mô hình:
-Hàm liên kết cho dữ liệu nhị phân: logit
summary (fit)
##
## Call:
## glm(formula = factor(trinhdo) ~ gender, family = binomial(link = "logit"),
## data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.09 -1.09 -1.04 1.26 1.32
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.201 0.118 -1.70 0.089 .
## genderfemale -0.137 0.175 -0.78 0.437
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 731.08 on 533 degrees of freedom
## Residual deviance: 730.47 on 532 degrees of freedom
## AIC: 734.5
##
## Number of Fisher Scoring iterations: 4
BrierScore (fit)
## [1] 0.2454
-Hàm liên kết cho dữ liệu nhị phân: probit
summary (fit1)
##
## Call:
## glm(formula = factor(trinhdo) ~ gender, family = binomial(link = "probit"),
## data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.09 -1.09 -1.04 1.26 1.32
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.1261 0.0739 -1.71 0.088 .
## genderfemale -0.0852 0.1095 -0.78 0.436
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 731.08 on 533 degrees of freedom
## Residual deviance: 730.47 on 532 degrees of freedom
## AIC: 734.5
##
## Number of Fisher Scoring iterations: 3
BrierScore(fit1)
## [1] 0.2454
-Hàm liên kết cho dữ liệu nhị phân: cloglog
summary (fit2)
##
## Call:
## glm(formula = factor(trinhdo) ~ gender, family = binomial(link = "cloglog"),
## data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.09 -1.09 -1.04 1.26 1.32
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.515 0.089 -5.79 7.2e-09 ***
## genderfemale -0.104 0.134 -0.78 0.44
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 731.08 on 533 degrees of freedom
## Residual deviance: 730.47 on 532 degrees of freedom
## AIC: 734.5
##
## Number of Fisher Scoring iterations: 4
BrierScore(fit2)
## [1] 0.2454
Qua ba chỉ số đánh giá mô hình ta thấy chúng đều giống nhau như:
AIC: 734.5
Beviance: 730.47
Brier Score: 0.2454
Vậy thể kết luân là cả ba hàm liên kết có ước lượng này là như nhau khi tiến về 0 thì độ tin cậy càng cao.
-Hàm liên kết cho dữ liệu nhị phân: logit
i <- glm(data = d, factor(trinhdo) ~ thunhap, family = binomial(link = 'logit'))
i
##
## Call: glm(formula = factor(trinhdo) ~ thunhap, family = binomial(link = "logit"),
## data = d)
##
## Coefficients:
## (Intercept) thunhapnhiều
## -0.689 1.337
##
## Degrees of Freedom: 533 Total (i.e. Null); 532 Residual
## Null Deviance: 731
## Residual Deviance: 682 AIC: 686
-Hàm liên kết cho dữ liệu nhị phân: probit
i1 <- glm(data = d, factor(trinhdo) ~ thunhap, family = binomial(link = 'probit'))
i1
##
## Call: glm(formula = factor(trinhdo) ~ thunhap, family = binomial(link = "probit"),
## data = d)
##
## Coefficients:
## (Intercept) thunhapnhiều
## -0.428 0.832
##
## Degrees of Freedom: 533 Total (i.e. Null); 532 Residual
## Null Deviance: 731
## Residual Deviance: 682 AIC: 686
-Hàm liên kết cho dữ liệu nhị phân: log
i2 <- glm(data = d, factor(trinhdo) ~ thunhap, family = binomial(link = 'log'))
i2
##
## Call: glm(formula = factor(trinhdo) ~ thunhap, family = binomial(link = "log"),
## data = d)
##
## Coefficients:
## (Intercept) thunhapnhiều
## -1.096 0.675
##
## Degrees of Freedom: 533 Total (i.e. Null); 532 Residual
## Null Deviance: 731
## Residual Deviance: 682 AIC: 686
Tại đây em đã tiến hành phân tích dữ liệu nhị phân theo 3 loại hàm liên kết là logit, probit, log ta có các phương trình sau:
Hàm logit: ta có hàm là y= -0,689 + 1.337x
Hàm probit: ta có hàm là: y= -0,428 + 0,832x
Hàm log: hàm là: y= -1,096 + 0,675 x
cả 3 hàm đều a cho ra các giá trị âm nhưng có đều không giống về số a giao động từ [-1,096;-0,428] và b là số dương thuộc khoảng [0,675;1,337]
t <- glm(data = d, formula = education ~ wage, family = poisson(link = 'log'))
summary (t)
##
## Call:
## glm(formula = education ~ wage, family = poisson(link = "log"),
## data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -3.596 -0.324 -0.078 0.412 1.517
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 2.43724 0.02387 102.10 < 2e-16 ***
## wage 0.01401 0.00219 6.39 1.6e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 294.30 on 533 degrees of freedom
## Residual deviance: 255.15 on 532 degrees of freedom
## AIC: 2606
##
## Number of Fisher Scoring iterations: 4
Câu lệnh cho ta thấy hàm ước lượng hồi quy cho hai biến là số năm đi học và thu nhập của những người tham gia khảo sát và hình thành phương trình như sau: y = 2,4272 + 0,014x
Sau khi ước lượng theo cái hàm liên kế khác nhau ta tiếng hành đánh giá mô hình:
-Hàm liên kết cho dữ liệu nhị phân: logit
summary (i)
##
## Call:
## glm(formula = factor(trinhdo) ~ thunhap, family = binomial(link = "logit"),
## data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.462 -0.902 -0.902 0.917 1.480
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.689 0.111 -6.24 4.5e-10 ***
## thunhapnhiều 1.337 0.197 6.78 1.2e-11 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 731.08 on 533 degrees of freedom
## Residual deviance: 682.49 on 532 degrees of freedom
## AIC: 686.5
##
## Number of Fisher Scoring iterations: 4
BrierScore (i)
## [1] 0.2234
-Hàm liên kết cho dữ liệu nhị phân: probit
summary (i1)
##
## Call:
## glm(formula = factor(trinhdo) ~ thunhap, family = binomial(link = "probit"),
## data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.462 -0.902 -0.902 0.917 1.480
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.4282 0.0676 -6.34 2.3e-10 ***
## thunhapnhiều 0.8315 0.1209 6.88 6.0e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 731.08 on 533 degrees of freedom
## Residual deviance: 682.49 on 532 degrees of freedom
## AIC: 686.5
##
## Number of Fisher Scoring iterations: 4
BrierScore(i1)
## [1] 0.2234
-Hàm liên kết cho dữ liệu nhị phân: log
summary (i2)
##
## Call:
## glm(formula = factor(trinhdo) ~ thunhap, family = binomial(link = "log"),
## data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.462 -0.902 -0.902 0.917 1.480
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.0959 0.0736 -14.9 < 2e-16 ***
## thunhapnhiều 0.6753 0.0925 7.3 2.9e-13 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 731.08 on 533 degrees of freedom
## Residual deviance: 682.49 on 532 degrees of freedom
## AIC: 686.5
##
## Number of Fisher Scoring iterations: 5
BrierScore(i2)
## [1] 0.2234
Qua ba chỉ số đánh giá ước lượng mô hình nhị phân:
AIC: 686.5
Deviance: 682.49
Brier Score: 0.2234
Ta thấy các chỉ số của 3 hàm liên kết đều giống nhau cho nến không hàm liên kết nào hình thành được mô hình nào tốt nhất. Giá trị của Brier Score thể hiện chênh lệch giữa xác suất thực tế và xác xuất tính từ mô hình la 0,2234.
-Hàm liên kết cho dữ liệu nhị phân: logit
t <- glm(data = d, factor(trinhdo) ~ tuoi, family = binomial(link = 'logit'))
t
##
## Call: glm(formula = factor(trinhdo) ~ tuoi, family = binomial(link = "logit"),
## data = d)
##
## Coefficients:
## (Intercept) tuoiThế kỉ 14
## -0.023 -0.719
##
## Degrees of Freedom: 533 Total (i.e. Null); 532 Residual
## Null Deviance: 731
## Residual Deviance: 716 AIC: 720
-Hàm liên kết cho dữ liệu nhị phân: probit
t1 <- glm(data = d, factor(trinhdo) ~ tuoi, family = binomial(link = 'probit'))
t1
##
## Call: glm(formula = factor(trinhdo) ~ tuoi, family = binomial(link = "probit"),
## data = d)
##
## Coefficients:
## (Intercept) tuoiThế kỉ 14
## -0.0144 -0.4461
##
## Degrees of Freedom: 533 Total (i.e. Null); 532 Residual
## Null Deviance: 731
## Residual Deviance: 716 AIC: 720
-Hàm liên kết cho dữ liệu nhị phân: log
t2 <- glm(data = d, factor(trinhdo) ~ tuoi, family = binomial(link = 'log'))
t2
##
## Call: glm(formula = factor(trinhdo) ~ tuoi, family = binomial(link = "log"),
## data = d)
##
## Coefficients:
## (Intercept) tuoiThế kỉ 14
## -0.705 -0.427
##
## Degrees of Freedom: 533 Total (i.e. Null); 532 Residual
## Null Deviance: 731
## Residual Deviance: 716 AIC: 720
Tại đây em đã tiến hành phân tích dữ liệu nhị phân theo 3 loại hàm liên kết là logit, probit, log ta có các phương trình sau:
Hàm logit: ta có hàm là y= -0,023 - 0,719x
Hàm probit: ta có hàm là: y= -0,0144 - 0,4461x
Hàm log: hàm là: y= -0,705 - 0,427 x
cả 3 hàm đều a cho ra các giá trị âm nhưng có đều không giống về số a giao động từ [-0,705;-0,0144] và b cũng là số âm thuộc khoảng [-0,719;-0,427]
t <- glm(data = d, formula = education ~ age, family = poisson(link = 'log'))
summary(t)
##
## Call:
## glm(formula = education ~ age, family = poisson(link = "log"),
## data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -3.909 -0.385 -0.164 0.489 1.572
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 2.66139 0.03953 67.33 <2e-16 ***
## age -0.00259 0.00103 -2.51 0.012 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 294.30 on 533 degrees of freedom
## Residual deviance: 287.96 on 532 degrees of freedom
## AIC: 2638
##
## Number of Fisher Scoring iterations: 4
Câu lệnh cho ta thấy hàm ước lượng hồi quy cho hai biến là số năm đi học và tuổi của những người tham gia khảo sát và hình thành phương trình như sau: y = 2,6613 - 0,0026x
Sau khi ước lượng theo cái hàm liên kế khác nhau ta tiếng hành đánh giá mô hình:
-Hàm liên kết cho dữ liệu nhị phân: logit
summary (t)
##
## Call:
## glm(formula = education ~ age, family = poisson(link = "log"),
## data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -3.909 -0.385 -0.164 0.489 1.572
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 2.66139 0.03953 67.33 <2e-16 ***
## age -0.00259 0.00103 -2.51 0.012 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 294.30 on 533 degrees of freedom
## Residual deviance: 287.96 on 532 degrees of freedom
## AIC: 2638
##
## Number of Fisher Scoring iterations: 4
BrierScore(t)
## [1] -156.6
-Hàm liên kết cho dữ liệu nhị phân: probit
summary (t1)
##
## Call:
## glm(formula = factor(trinhdo) ~ tuoi, family = binomial(link = "probit"),
## data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.168 -1.168 -0.883 1.187 1.504
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.0144 0.0672 -0.21 0.83022
## tuoiThế kỉ 14 -0.4461 0.1168 -3.82 0.00013 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 731.08 on 533 degrees of freedom
## Residual deviance: 716.30 on 532 degrees of freedom
## AIC: 720.3
##
## Number of Fisher Scoring iterations: 4
BrierScore(t1)
## [1] 0.239
-Hàm liên kết cho dữ liệu nhị phân: log
summary (t2)
##
## Call:
## glm(formula = factor(trinhdo) ~ tuoi, family = binomial(link = "log"),
## data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.168 -1.168 -0.883 1.187 1.504
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.7047 0.0542 -13.00 < 2e-16 ***
## tuoiThế kỉ 14 -0.4267 0.1193 -3.58 0.00035 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 731.08 on 533 degrees of freedom
## Residual deviance: 716.30 on 532 degrees of freedom
## AIC: 720.3
##
## Number of Fisher Scoring iterations: 5
BrierScore(t2)
## [1] 0.239
Các chỉ số đánh giá mô hình ước lượng hồi quy cho dữ liệu nhị phân:
AIC: 720,3
Deviance: 731,08
Brier Score thể hiện chênh lệch giữa xác suất thực tế và xác xuất tính từ mô hình là 0,239
Ta thấy các chỉ số của 3 hàm liên kết không có gì khác nhau nên không có mô hình nào tốt nhất.
-Hàm liên kết cho dữ liệu nhị phân: logit
op <- glm(data = d, factor (Ver) ~ Ver1, family = binomial(link = 'logit'))
op
##
## Call: glm(formula = factor(Ver) ~ Ver1, family = binomial(link = "logit"),
## data = d)
##
## Coefficients:
## (Intercept) Ver1Chuyên môn cao
## -1.44 -0.22
##
## Degrees of Freedom: 533 Total (i.e. Null); 532 Residual
## Null Deviance: 497
## Residual Deviance: 496 AIC: 500
-Hàm liên kết cho dữ liệu nhị phân: probit
op1 <- glm(data = d, factor (Ver) ~ Ver1, family = binomial(link = 'probit'))
op1
##
## Call: glm(formula = factor(Ver) ~ Ver1, family = binomial(link = "probit"),
## data = d)
##
## Coefficients:
## (Intercept) Ver1Chuyên môn cao
## -0.873 -0.123
##
## Degrees of Freedom: 533 Total (i.e. Null); 532 Residual
## Null Deviance: 497
## Residual Deviance: 496 AIC: 500
-Hàm liên kết cho dữ liệu nhị phân: cloglog
op2 <- glm(data = d, factor (Ver) ~ Ver1, family = binomial(link = 'cloglog'))
op2
##
## Call: glm(formula = factor(Ver) ~ Ver1, family = binomial(link = "cloglog"),
## data = d)
##
## Coefficients:
## (Intercept) Ver1Chuyên môn cao
## -1.55 -0.20
##
## Degrees of Freedom: 533 Total (i.e. Null); 532 Residual
## Null Deviance: 497
## Residual Deviance: 496 AIC: 500
Tại đây em đã tiến hành phân tích dữ liệu nhị phân theo 3 loại hàm liên kết là logit, probit, cloglog ta có các phương trình sau:
Hàm logit: ta có hàm là y= -1,44 -0,22x
Hàm probit: ta có hàm là: y= -0,873 -0,123 x
Hàm log: hàm là: y= -1,55 -0,20 x
cả 3 hàm đều a cho ra các giá trị âm nhưng có đều không giống về số a giao động từ [-1,55;-0,873] và b là số dương thuộc khoảng [-0,22;-0,123]
Hai biến này không phải dữ liệu có phân phối poisson nên không thể thực hiện ước lượng hàm hồi quy cho dữ liệu Poisson.
Sau khi ước lượng theo cái hàm liên kế khác nhau ta tiếng hành đánh giá mô hình:
-Hàm liên kết cho dữ liệu nhị phân: logit
summary (op)
##
## Call:
## glm(formula = factor(Ver) ~ Ver1, family = binomial(link = "logit"),
## data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -0.652 -0.652 -0.590 -0.590 1.916
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.441 0.153 -9.44 <2e-16 ***
## Ver1Chuyên môn cao -0.220 0.229 -0.96 0.34
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 496.96 on 533 degrees of freedom
## Residual deviance: 496.03 on 532 degrees of freedom
## AIC: 500
##
## Number of Fisher Scoring iterations: 4
BrierScore (op)
## [1] 0.1448
-Hàm liên kết cho dữ liệu nhị phân: probit
summary (op1)
##
## Call:
## glm(formula = factor(Ver) ~ Ver1, family = binomial(link = "probit"),
## data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -0.652 -0.652 -0.590 -0.590 1.916
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.8730 0.0867 -10.07 <2e-16 ***
## Ver1Chuyên môn cao -0.1234 0.1279 -0.96 0.33
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 496.96 on 533 degrees of freedom
## Residual deviance: 496.03 on 532 degrees of freedom
## AIC: 500
##
## Number of Fisher Scoring iterations: 4
BrierScore(op1)
## [1] 0.1448
-Hàm liên kết cho dữ liệu nhị phân: log
summary (op2)
##
## Call:
## glm(formula = factor(Ver) ~ Ver1, family = binomial(link = "cloglog"),
## data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -0.652 -0.652 -0.590 -0.590 1.916
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.549 0.138 -11.26 <2e-16 ***
## Ver1Chuyên môn cao -0.200 0.208 -0.96 0.34
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 496.96 on 533 degrees of freedom
## Residual deviance: 496.03 on 532 degrees of freedom
## AIC: 500
##
## Number of Fisher Scoring iterations: 5
BrierScore(op2)
## [1] 0.1448
Các chỉ số đánh giá mô hình ước lượng hồi quy cho dữ liệu nhị phân:
AIC: 500
Deviance: 496.96
Brier Score: 0,1448.
Ta thấy các chỉ số của 3 hàm liên kết không có gì khác nhau nên không có mô hình nào tốt nhất. Đánh giá Brier Score thể hiện chênh lệch giữa xác suất thực tế và xác xuất tính từ mô hình là 0,1448. Có thể nói đây là ước lượng tốt nhất trong 4 cặp dữ liệu đã đánh giá.
-Hàm liên kết cho dữ liệu nhị phân: log
ok <- glm(data = d, formula = married ~ Ver1, family = binomial(link = 'log'))
ok
##
## Call: glm(formula = married ~ Ver1, family = binomial(link = "log"),
## data = d)
##
## Coefficients:
## (Intercept) Ver1Chuyên môn cao
## -0.4366 0.0292
##
## Degrees of Freedom: 533 Total (i.e. Null); 532 Residual
## Null Deviance: 688
## Residual Deviance: 688 AIC: 692
-Hàm liên kết cho dữ liệu nhị phân: probit
ok1 <- glm(data = d, formula = married ~ Ver1, family = binomial(link = 'probit'))
ok1
##
## Call: glm(formula = married ~ Ver1, family = binomial(link = "probit"),
## data = d)
##
## Coefficients:
## (Intercept) Ver1Chuyên môn cao
## 0.3751 0.0521
##
## Degrees of Freedom: 533 Total (i.e. Null); 532 Residual
## Null Deviance: 688
## Residual Deviance: 688 AIC: 692
-Hàm liên kết cho dữ liệu nhị phân: cauchit
ok2 <- glm(data = d, formula = married ~ Ver1, family = binomial(link = 'cauchit'))
ok2
##
## Call: glm(formula = married ~ Ver1, family = binomial(link = "cauchit"),
## data = d)
##
## Coefficients:
## (Intercept) Ver1Chuyên môn cao
## 0.4946 0.0773
##
## Degrees of Freedom: 533 Total (i.e. Null); 532 Residual
## Null Deviance: 688
## Residual Deviance: 688 AIC: 692
Tại đây em đã tiến hành phân tích dữ liệu nhị phân theo 3 loại hàm liên kết là log, probit, cauchit ta có các phương trình sau:
Hàm log, ta có hàm là y= -0,4366 -0,0292x
Hàm probit, ta có hàm là: y= 0,3751 + 0.0521x
Hàm cauchit, hàm là: y= -0,4946 +0,773x
Cả 3 hàm đều a và b đều không giống về số a giao động từ [-0,4946;0,3751] và b thuộc khoảng [-0,367;0,773]
Hai biến này không phải dữ liệu có phân phối poisson nên không thể thực hiện ước lượng hàm hồi quy cho dữ liệu Poisson.
Sau khi ước lượng theo cái hàm liên kế khác nhau ta tiếng hành đánh giá mô hình:
-Hàm liên kết cho dữ liệu nhị phân: log
summary (ok)
##
## Call:
## glm(formula = married ~ Ver1, family = binomial(link = "log"),
## data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.480 -1.442 0.903 0.934 0.934
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.4366 0.0445 -9.82 <2e-16 ***
## Ver1Chuyên môn cao 0.0292 0.0627 0.47 0.64
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 687.81 on 533 degrees of freedom
## Residual deviance: 687.60 on 532 degrees of freedom
## AIC: 691.6
##
## Number of Fisher Scoring iterations: 5
BrierScore (ok)
## [1] 0.2257
-Hàm liên kết cho dữ liệu nhị phân: probit
summary (ok1)
##
## Call:
## glm(formula = married ~ Ver1, family = binomial(link = "probit"),
## data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.480 -1.442 0.903 0.934 0.934
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.3751 0.0773 4.86 1.2e-06 ***
## Ver1Chuyên môn cao 0.0521 0.1118 0.47 0.64
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 687.81 on 533 degrees of freedom
## Residual deviance: 687.60 on 532 degrees of freedom
## AIC: 691.6
##
## Number of Fisher Scoring iterations: 4
BrierScore(ok1)
## [1] 0.2257
-Hàm liên kết cho dữ liệu nhị phân: cauchit
summary (ok2)
##
## Call:
## glm(formula = married ~ Ver1, family = binomial(link = "cauchit"),
## data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.480 -1.442 0.903 0.934 0.934
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.4946 0.1123 4.40 1.1e-05 ***
## Ver1Chuyên môn cao 0.0773 0.1664 0.46 0.64
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 687.81 on 533 degrees of freedom
## Residual deviance: 687.60 on 532 degrees of freedom
## AIC: 691.6
##
## Number of Fisher Scoring iterations: 5
BrierScore(ok2)
## [1] 0.2257
Đánh giá mô hình ước lượng hồi quy cho dữ liệu nhị phân bằng 3 hàm liên kết là log, probit, cauchit ta nhận được loại chỉ số khác nhau:
Các chỉ số đánh giá mô hình ước lượng hồi quy cho dữ liệu nhị phân bằng 2 hàm liên kết log, probit:
AIC: 619.6
Deviance: 687.81
Brier Score: 0,2257
Các chỉ số đánh giá mô hình ước lượng hồi quy cho dữ liệu nhị phân bằng hàm liên kết cauchit:
AIC: 500
Deviance: 496.96
Brier Score: 0,1448.
Ta thấy các chỉ số của hàm liên kết cauchit đều nhỏ hơn các chỉ số đánh giá của 2 hàm liên kết còn lại chứng minh mô hình đánh giá bằng hàm liên kết tốt hơn với hai mô hình còn lại.
Ước lượng hồi quy
ft <- glm(factor(trinhdo) ~ gender+thunhap, family = binomial(link = 'logit'), data = d )
ft
##
## Call: glm(formula = factor(trinhdo) ~ gender + thunhap, family = binomial(link = "logit"),
## data = d)
##
## Coefficients:
## (Intercept) genderfemale thunhapnhiều
## -0.732 0.083 1.353
##
## Degrees of Freedom: 533 Total (i.e. Null); 531 Residual
## Null Deviance: 731
## Residual Deviance: 682 AIC: 688
Tại đây em đã tiến hành phân tích dữ liệu nhị phân với loại hàm liên kết là logitta có các phương trình \(logit(\pi)= log(\frac{\pi}{1-\pi}) = -0.732 +0.083x +1.353y353y\)
Đánh giá mô hình
summary(ft)
##
## Call:
## glm(formula = factor(trinhdo) ~ gender + thunhap, family = binomial(link = "logit"),
## data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.487 -0.917 -0.886 0.927 1.500
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.732 0.148 -4.96 7.0e-07 ***
## genderfemale 0.083 0.187 0.44 0.66
## thunhapnhiều 1.353 0.201 6.74 1.6e-11 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 731.08 on 533 degrees of freedom
## Residual deviance: 682.30 on 531 degrees of freedom
## AIC: 688.3
##
## Number of Fisher Scoring iterations: 4
BrierScore(ft)
## [1] 0.2234
confusionMatrix(table(predict(ft, type="response") >= 0.5 ,fit$data$trinhdo == '1'))
## Confusion Matrix and Statistics
##
##
## FALSE TRUE
## FALSE 245 123
## TRUE 57 109
##
## Accuracy : 0.663
## 95% CI : (0.621, 0.703)
## No Information Rate : 0.566
## P-Value [Acc > NIR] : 2.71e-06
##
## Kappa : 0.291
##
## Mcnemar's Test P-Value : 1.27e-06
##
## Sensitivity : 0.811
## Specificity : 0.470
## Pos Pred Value : 0.666
## Neg Pred Value : 0.657
## Prevalence : 0.566
## Detection Rate : 0.459
## Detection Prevalence : 0.689
## Balanced Accuracy : 0.641
##
## 'Positive' Class : FALSE
##
Các chỉ số đánh giá mô hình ước lượng hồi quy cho dữ liệu nhị phân bằng hàm liên kết logit:
AIC: 688,3
Deviance: 682.30
Brier Score: 0.2234
Ma trận nhầm lẫn ta có thể nhận thấy việc tính toán tỷ lệ lỗi rất đơn giản và chính xác. Nếu một mô hình hoạt động với độ chính xác 66,3% thì tỷ lệ lỗi sẽ là 33,7%.
Yêu cầu: Phân tích thống kê mô tả của 2 biến phụ thuộc ở câu 2 với 5 biến còn lại trong câu 3, nhận xét về kết quả phân tích này
trinhdo <-cut(d$education, breaks=c(1,12,18), labels=c('thấp', ' cao'))
table(trinhdo)
## trinhdo
## thấp cao
## 302 232
table(trinhdo)/sum(table(trinhdo))
## trinhdo
## thấp cao
## 0.5655 0.4345
k <- data.frame(d$wage, d$education, d$experience, d$age, d$ethnicity, d$region, d$gender, d$occupation, d$sector, d$union, d$married, trinhdo)
k |> ggplot(aes(x = d.gender, y = after_stat(count))) + geom_bar(fill = 'blue') + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'red', vjust = - .5) + facet_grid(. ~ trinhdo) + labs(x = 'Giới tính', y = 'Số người')
Đồ thị thấy tại trình độ nào thì nam vẫn nhiều hơn nữ nhưng tại trình độ cao thì khoảng cách này xa hơn. Tại đây người học đại học tới cao học thì ít hơn người người học cấp ba trở xuống rất nhiều.
tmp <- table(k$trinhdo, d$gender)
tmp
##
## male female
## thấp 159 143
## cao 130 102
tmp1 <- prop.table(tmp)
tmp1
##
## male female
## thấp 0.2978 0.2678
## cao 0.2434 0.1910
addmargins(tmp1)
##
## male female Sum
## thấp 0.2978 0.2678 0.5655
## cao 0.2434 0.1910 0.4345
## Sum 0.5412 0.4588 1.0000
Nhìn vào ba bảng tần số ta có thể thấy ít nhất là nữ giới có học vấn cao chỉ có gần 19% trong tổng số ba nhóm còn lại.
Rủi ro tương đối là một tỷ lệ 2 xác suất: Xác suất của những trình độ học tập của người tham gia khảo sát và xác suất để người đó mang 1 trong 2 giới tính nam hoặc nữ.
riskratio(tmp)
## $data
##
## male female Total
## thấp 159 143 302
## cao 130 102 232
## Total 289 245 534
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## thấp 1.0000 NA NA
## cao 0.9285 0.7696 1.12
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## thấp NA NA NA
## cao 0.4383 0.4835 0.4364
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Tỷ lệ giữa hai giới tính là nam và nữ có các trình độ học tập thấp (dưới 12 năm) bằng 9285% so với tỉ lệ giữa hai giới tính có trình độ học tập cao (từ 12 đến 18 năm).
Ngược lại, Khi có 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.
riskratio(tmp, rev = 'c')
## $data
##
## female male Total
## thấp 143 159 302
## cao 102 130 232
## Total 245 289 534
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## thấp 1.000 NA NA
## cao 1.064 0.9103 1.244
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## thấp NA NA NA
## cao 0.4383 0.4835 0.4364
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
oddsratio(tmp)
## $data
##
## male female Total
## thấp 159 143 302
## cao 130 102 232
## Total 289 245 534
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## thấp 1.0000 NA NA
## cao 0.8728 0.618 1.231
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## thấp NA NA NA
## cao 0.4383 0.4835 0.4364
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Tỷ lệ giữa hai giới tính là nam và nữ có các trình độ học tập thấp (dưới 12 năm) bằng 87,28% so với tỉ lệ giữa hai giới tính có trình độ học tập cao (từ 12 đến 18 năm).
Ngoài ra, Khi có 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.
oddsratio(tmp, rev = 'c')
## $data
##
## female male Total
## thấp 143 159 302
## cao 102 130 232
## Total 245 289 534
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## thấp 1.000 NA NA
## cao 1.146 0.8123 1.618
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## thấp NA NA NA
## cao 0.4383 0.4835 0.4364
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
chisq.test(tmp)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: tmp
## X-squared = 0.48, df = 1, p-value = 0.5
Kết quả cho thấy giữa giữa trình đọ học tập với giới tính của những người thực hiện khảo sát là hai biến có liên hệ với nhau.
Trong hay biến thì education đã được chuyển thành nhị thức. Sau đây em sẽ chuyển biến wage thành nhị thức, ở biến thu nhập tôi chia thành biẻu hiện người có thu nhập thấp là người có thu nhập từ 0 đến 10 USD/h sau đó là người có thu nhập cao từ 10 USD/h trở lên đên 44,5 USD/h. Tiếp theo tôi gán nó vào data k.
thunhap <-cut(d$wage, breaks=c(0,10,44.5), labels=c('ít', 'nhiều'))
table(thunhap)
## thunhap
## ít nhiều
## 368 166
k <- data.frame(d$wage, d$education, d$experience, d$age, d$ethnicity, d$region, d$gender, d$occupation, d$sector, d$union, d$married, trinhdo,thunhap)
Kết quả cho ra có 368 người có thu nhập thấp và 166 người có thu nhập cao.
e <- table(k$trinhdo, k$thunhap)
e
##
## ít nhiều
## thấp 245 57
## cao 123 109
e1 <- prop.table(e)
e1
##
## ít nhiều
## thấp 0.4588 0.1067
## cao 0.2303 0.2041
addmargins(e)
##
## ít nhiều Sum
## thấp 245 57 302
## cao 123 109 232
## Sum 368 166 534
k |> ggplot(aes(x = thunhap, y = after_stat(count))) + geom_bar(fill = 'skyblue') + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'red', vjust = - .5) + facet_grid(. ~ trinhdo) + labs(x = 'Thu nhập', y = 'Số người') + coord_flip()
Nhìn vào bảng và biểu đồ ta thấy người có thu nhập nhiều chiếm khá ít chi khoảng 30% người có thu nhập như vậy. Và biểu đồ cho ta thấy phần lớn người có trình độ thấp có tièn lương ít chứng tỏ học vấn có qua hệ đến mức lương được tính theo giờ của những người này.
riskratio(e)
## $data
##
## ít nhiều Total
## thấp 245 57 302
## cao 123 109 232
## Total 368 166 534
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## thấp 1.000 NA NA
## cao 2.489 1.899 3.264
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## thấp NA NA NA
## cao 3.916e-12 5.973e-12 3.493e-12
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Tỷ lệ giữa thu nhập dưới 10 USD/h và cao hơn 10 USD/h có các trình độ học tập thấp (dưới 12 năm) bằng 2,48 lần so với tỉ lệ giữa hai loại thu nhập dưới 10 USD/h và cao hơn 10 USD/h.
Ngược lại, Khi có 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.
riskratio(e, rev = 'c')
## $data
##
## nhiều ít Total
## thấp 57 245 302
## cao 109 123 232
## Total 166 368 534
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## thấp 1.0000 NA NA
## cao 0.6535 0.5723 0.7463
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## thấp NA NA NA
## cao 3.916e-12 5.973e-12 3.493e-12
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
oddsratio(e)
## $data
##
## ít nhiều Total
## thấp 245 57 302
## cao 123 109 232
## Total 368 166 534
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## thấp 1.000 NA NA
## cao 3.794 2.586 5.617
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## thấp NA NA NA
## cao 3.916e-12 5.973e-12 3.493e-12
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Tỷ lệ giữa thu nhập dưới 10 USD/h và cao hơn 10 USD/h có các trình độ học tập thấp (dưới 12 năm) bằng 3.79 lần so với tỉ lè giữa hai loại thu nhập dưới 10 USD/h và cao hơn 10 USD/h.
Ngược lại, Khi có 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.
oddsratio(e, rev = 'c')
## $data
##
## nhiều ít Total
## thấp 57 245 302
## cao 109 123 232
## Total 166 368 534
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## thấp 1.0000 NA NA
## cao 0.2636 0.178 0.3867
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## thấp NA NA NA
## cao 3.916e-12 5.973e-12 3.493e-12
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
chisq.test(e)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: e
## X-squared = 47, df = 1, p-value = 7e-12
Kết quả cho thấy giữa giữa trình độ học tập với thu nhập của những người thực hiện khảo sát là độc lập với nhau.
tuoi <-cut(d$age, breaks=c(1,39,64), labels=c('Thế kỉ 16', 'Thế kỉ 14'))
k <- data.frame(k, tuoi)
P <- table(k$trinhdo, k$tuoi)
P
##
## Thế kỉ 16 Thế kỉ 14
## thấp 176 126
## cao 172 60
P1 <- prop.table(P)
P1
##
## Thế kỉ 16 Thế kỉ 14
## thấp 0.3296 0.2360
## cao 0.3221 0.1124
addmargins(P)
##
## Thế kỉ 16 Thế kỉ 14 Sum
## thấp 176 126 302
## cao 172 60 232
## Sum 348 186 534
boxplot(d$age ~ k$trinhdo, col = c('blue', 'sienna', 'palevioletred1', 'green'))
Nhìn vào các lệnh thống kê cho thấy tình trạng giáo dục ngày càng được cải thiện vì trình độ giáo dục của của những người trẻ có học vấn cao hơn so nhóm người trung niên hơn 20%.
riskratio(P)
## $data
##
## Thế kỉ 16 Thế kỉ 14 Total
## thấp 176 126 302
## cao 172 60 232
## Total 348 186 534
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## thấp 1.0000 NA NA
## cao 0.6199 0.4801 0.8002
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## thấp NA NA NA
## cao 0.0001302 0.0001651 0.0001373
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Tỷ lệ giữa độ tuổi của người thuộc nhóm tuổi trẻ và nhóm tuổi trung niên là người có trình độ học vấn cao là bằng 61,99% so với tỷ lệ ggiữa độ tuổi của người thuộc nhóm tuổi trẻ và nhóm tuổi trung niên là người có trình độ học vấn thấp.
Ngược lại, Khi có 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.
riskratio(P, rev = 'c')
## $data
##
## Thế kỉ 14 Thế kỉ 16 Total
## thấp 126 176 302
## cao 60 172 232
## Total 186 348 534
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## thấp 1.000 NA NA
## cao 1.272 1.126 1.437
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## thấp NA NA NA
## cao 0.0001302 0.0001651 0.0001373
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
oddsratio(P)
## $data
##
## Thế kỉ 16 Thế kỉ 14 Total
## thấp 176 126 302
## cao 172 60 232
## Total 348 186 534
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## thấp 1.0000 NA NA
## cao 0.4884 0.3349 0.7068
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## thấp NA NA NA
## cao 0.0001302 0.0001651 0.0001373
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Tỷ lệ giữa độ tuổi của người thuộc nhóm tuổi trẻ và nhóm tuổi trung niên là người có trình độ học vấn cao là bằng 48,84% so với tỷ lệ ggiữa độ tuổi của người thuộc nhóm tuổi trẻ và nhóm tuổi trung niên là người có trình độ học vấn thấp.
Ngược lại, Khi có 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.
oddsratio(P, rev = 'c')
## $data
##
## Thế kỉ 14 Thế kỉ 16 Total
## thấp 126 176 302
## cao 60 172 232
## Total 186 348 534
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## thấp 1.000 NA NA
## cao 2.048 1.415 2.986
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## thấp NA NA NA
## cao 0.0001302 0.0001651 0.0001373
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
chisq.test(P)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: P
## X-squared = 14, df = 1, p-value = 2e-04
Kết quả cho thấy giữa giữa trình độ học tập với thu nhập của những người thực hiện khảo sát độc lập với nhau.
p <- table(d$ethnicity,d$occupation)
p
##
## worker technical services office sales management
## cauc 130 93 60 77 34 46
## hispanic 7 5 6 5 1 3
## other 19 7 17 15 3 6
Ver <- d %>% mutate(dantoc = case_when(ethnicity == "cauc" ~ 3, ethnicity == "hispanic" ~ 4, ethnicity == "other" ~ 4))
Ver <-cut(Ver$dantoc, breaks=c(0,3,4), labels=c('người Mỹ', 'người nơi khác'))
table(Ver)
## Ver
## người Mỹ người nơi khác
## 440 94
Ver1 <- d %>% mutate(nghe = case_when( occupation== "worker" ~ 1, occupation == "technical" ~ 3, occupation == "services" ~ 1, occupation== "office" ~ 3, occupation== "sales" ~ 1, occupation== "management" ~ 3))
Ver1 <-cut(Ver1$nghe, breaks=c(0,1,3), labels=c('Chuyên môn thấp', 'Chuyên môn cao'))
table(Ver1)
## Ver1
## Chuyên môn thấp Chuyên môn cao
## 277 257
k <- data.frame(k, Ver, Ver1)
Trong hai các câu lệnh này việc đầu tiên tôi thực hiện là chuyển biến ethnicity về còn hai biểu hiện là người gốc Mỹ và người nơi khác. Sau đó tôi 6 nhóm nghề nghiệp của biến ethnicity thành 2 nhóm là nhóm ngành có chuyên môn thấp bao gồm: worker, services, sales; còn lại là nhóm ngành có chuyên môn cao.
l <- table(k$Ver, k$Ver1)
l
##
## Chuyên môn thấp Chuyên môn cao
## người Mỹ 224 216
## người nơi khác 53 41
l1 <- prop.table(l)
l1
##
## Chuyên môn thấp Chuyên môn cao
## người Mỹ 0.41948 0.40449
## người nơi khác 0.09925 0.07678
addmargins(l)
##
## Chuyên môn thấp Chuyên môn cao Sum
## người Mỹ 224 216 440
## người nơi khác 53 41 94
## Sum 277 257 534
Biểu đồ
k |> ggplot(aes(x = Ver, y = after_stat(count))) + geom_bar(fill = 'blue') + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'red', vjust = - .5) + facet_grid(. ~ Ver1) + labs(x = 'Dân tộc', y = 'Số người')
Thống kê bảng cho ta thấy hơn 80% người là người gốc Mỹ và người có
chuyên môn cao và người có chuyên môn thấp ở đây gần bằng nhau.
riskratio(l)
## $data
##
## Chuyên môn thấp Chuyên môn cao Total
## người Mỹ 224 216 440
## người nơi khác 53 41 94
## Total 277 257 534
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## người Mỹ 1.0000 NA NA
## người nơi khác 0.8885 0.6928 1.139
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## người Mỹ NA NA NA
## người nơi khác 0.3381 0.364 0.335
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Tỷ lệ giữa nghề nghiệp cần chuyên môn thấp và nghề nghiệp cần chuyên môn cao là người của các dân tộc là người khác bằng 88,85% so với tỷ lệ giữa nghề nghiệp cần chuyên môn thấp và nghề nghiệp cần chuyên môn cao là người có dân tộc gốc Mỹ.
Ngược lại, Khi có 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.
riskratio(l, rev = 'c')
## $data
##
## Chuyên môn cao Chuyên môn thấp Total
## người Mỹ 216 224 440
## người nơi khác 41 53 94
## Total 257 277 534
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## người Mỹ 1.000 NA NA
## người nơi khác 1.108 0.9067 1.353
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## người Mỹ NA NA NA
## người nơi khác 0.3381 0.364 0.335
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
oddsratio(l)
## $data
##
## Chuyên môn thấp Chuyên môn cao Total
## người Mỹ 224 216 440
## người nơi khác 53 41 94
## Total 277 257 534
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## người Mỹ 1.0000 NA NA
## người nơi khác 0.8032 0.5102 1.257
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## người Mỹ NA NA NA
## người nơi khác 0.3381 0.364 0.335
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Tỷ lệ giữa nghề nghiệp cần chuyên môn thấp và nghề nghiệp cần chuyên môn cao là người của các dân tộc là người khác bằng 80.32% so với tỷ lệ giữa nghề nghiệp cần chuyên môn thấp và nghề nghiệp cần chuyên môn cao là người có dân tộc gốc Mỹ.
Ngược lại, Khi có 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.
oddsratio(l, rev = 'c')
## $data
##
## Chuyên môn cao Chuyên môn thấp Total
## người Mỹ 216 224 440
## người nơi khác 41 53 94
## Total 257 277 534
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## người Mỹ 1.000 NA NA
## người nơi khác 1.245 0.7956 1.96
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## người Mỹ NA NA NA
## người nơi khác 0.3381 0.364 0.335
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
chisq.test(l)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: l
## X-squared = 0.72, df = 1, p-value = 0.4
Kết quả cho thấy giữa giữa trình độ học tập với thu nhập của những người thực hiện khảo sát có liên hệ với nhau.
m <- table(k$d.married, k$Ver1)
m
##
## Chuyên môn thấp Chuyên môn cao
## no 98 86
## yes 179 171
m1 <- prop.table(m)
m1
##
## Chuyên môn thấp Chuyên môn cao
## no 0.1835 0.1610
## yes 0.3352 0.3202
addmargins(m)
##
## Chuyên môn thấp Chuyên môn cao Sum
## no 98 86 184
## yes 179 171 350
## Sum 277 257 534
Biểu đồ
k |> ggplot(aes(x = d.married, y = after_stat(count))) + geom_bar(fill = 'blue') + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'red', vjust = - .5) + facet_grid(. ~ Ver1)
Bảng cùng biểu đồ thể hiện người có chuyên môn thấp cùng chuyên môn cao
có tỷ lệ kết hôn gần bằng nhau. Nhưng có thể thấy người chưa kết hôn có
chuyên môn thấp cao hơn người chưa kết hôn có chuyên môn cao khoảng
2%.
riskratio(m)
## $data
##
## Chuyên môn thấp Chuyên môn cao Total
## no 98 86 184
## yes 179 171 350
## Total 277 257 534
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## no 1.000 NA NA
## yes 1.045 0.8663 1.261
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## no NA NA NA
## yes 0.6432 0.6498 0.6416
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Tỷ lệ giữa nghề nghiệp cần chuyên môn thấp và nghề nghiệp cần chuyên môn cao là người còn độc thân gấp 4,5% so với tỷ lệ giữa nghề nghiệp cần chuyên môn thấp và nghề nghiệp cần chuyên môn cao là người đã kết hôn.
Mặc khác, Khi có 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.
riskratio(l, rev = 'c')
## $data
##
## Chuyên môn cao Chuyên môn thấp Total
## người Mỹ 216 224 440
## người nơi khác 41 53 94
## Total 257 277 534
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## người Mỹ 1.000 NA NA
## người nơi khác 1.108 0.9067 1.353
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## người Mỹ NA NA NA
## người nơi khác 0.3381 0.364 0.335
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
oddsratio(m)
## $data
##
## Chuyên môn thấp Chuyên môn cao Total
## no 98 86 184
## yes 179 171 350
## Total 277 257 534
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## no 1.000 NA NA
## yes 1.088 0.7609 1.558
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## no NA NA NA
## yes 0.6432 0.6498 0.6416
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Tỷ lệ giữa nghề nghiệp cần chuyên môn thấp và nghề nghiệp cần chuyên môn cao là người còn độc thân gấp 8,8% so với tỷ lệ giữa nghề nghiệp cần chuyên môn thấp và nghề nghiệp cần chuyên môn cao là người đã kết hôn.
Ngoài ra, Khi có 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.
oddsratio(m, rev = 'c')
## $data
##
## Chuyên môn cao Chuyên môn thấp Total
## no 86 98 184
## yes 171 179 350
## Total 257 277 534
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## no 1.0000 NA NA
## yes 0.9189 0.6418 1.314
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## no NA NA NA
## yes 0.6432 0.6498 0.6416
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
chisq.test(m)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: m
## X-squared = 0.14, df = 1, p-value = 0.7
Kết quả cho thấy giữa giữa trình độ học tập với thu nhập của những người thực hiện khảo sát là độc lập với nhau.
Yêu cầu: Làm thống kê mô tả để phân tích cho ít nhất 5 biến ( vừa định tính định lượng và có 2 biến đã chọn ở câu 2), nhận xét về kết quả phân tích này.
table(d$gender)
##
## male female
## 289 245
table(d$gender)/sum(table(d$gender))
##
## male female
## 0.5412 0.4588
d |> ggplot(aes(x = gender, y = after_stat(count))) + geom_bar(fill = 'navy') + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'magenta', vjust = - .5) + theme_classic() + labs(x = 'Giới tính', y = 'Số người')
Biến gander là biến định tính, thực hiện một phép đếm đơn giản ta thấy
có 289 (chiếm 54,12%) người nam và 245 người nữ (chiếm 45,88%) tham gia
vào cuộc khảo sát.
summary(d$wage)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.00 5.25 7.78 9.02 11.25 44.50
luong <- d$wage
table(cut(luong,4))
##
## (0.957,11.9] (11.9,22.8] (22.8,33.6] (33.6,44.5]
## 412 110 11 1
d |> ggplot(aes(wage)) + geom_bar(aes(y = (..count..)), color = 'blue', fill = 'green')
## Warning: The dot-dot notation (`..count..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(count)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
Theo thống kê giữa biến ta có thể nhận ra có 412 người thu nhập từ
(0.957,11.9],110 người thu nhập từ (11.9,22.8], 11 người thu nhập từ
(22.8,33.6], 1 người thu nhập từ (33.6,44.5] USD/h. Vì biến wage là biến
định lượng nên thống kê cơ bản ta còn thấy được tiên lương it nhất là 1
USD/h, nhiều nhất là 44.5 USD/h, lương trung bình là 9.02 USD/h, giá trị
trung bình của vecto là 9.02.
table(d$ethnicity)
##
## cauc hispanic other
## 440 27 67
table(d$ethnicity)/sum(table(d$ethnicity))
##
## cauc hispanic other
## 0.82397 0.05056 0.12547
pie(table(d$ethnicity), col = rainbow(3), main = "Biểu đồ tròn của dân tộc")
Biến ethnicity là biến định tính, thực hiện một phép đếm đơn giản có thể thấy trong những người khảo sát nhiều nhất là người Hoa Kỳ có 440 người chiếm 82,397%, người Tây Ban Nha có 27 người khoảng 5,056%, cuối cùng là người bên ngoài là 67 người có 12,547%.
tuoi <-cut(d$age, breaks=c(1,39,64), labels=c('trẻ', ' trung niên'))
table(tuoi)
## tuoi
## trẻ trung niên
## 348 186
table(tuoi)/sum(table(tuoi))
## tuoi
## trẻ trung niên
## 0.6517 0.3483
k <- data.frame(k, tuoi)
pie(table(k$tuoi), col = rainbow(2), main = "Biểu đồ tròn ")
Theo độ tuổi, tôi chia làm hai nhóm đầu tiên là nhóm người trẻ từ 18 đến 39 tuổi và có được số người trẻ là 348 người (chiếm 65,17%), sau đó là người trung niên từ 40 đên 64 tuổi có 186 người (khoảng 34,83%).
table(d$married)
##
## no yes
## 184 350
table(d$married)/sum(table(d$married))
##
## no yes
## 0.3446 0.6554
d |> ggplot(aes(x = married, y = after_stat(count))) + geom_bar(fill = 'blue') + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'magenta', vjust = - .5) + theme_classic() + labs(x = 'Giới tính', y = 'Số người') + coord_flip()
Qua thống kê mô tả biến định tính là married, ta thấy số người đã kết hôn là 350 người (có 65.54%) và người chưa kết hôn là 184 người (chiếm 34,46%)
Yêu cầu: Chọn 1 hoặc 2 biến định tính và 1 biến định lượng làm biến phụ thuộc để phân tích, giải thích lý do
Biến ethnicity: Dân tộc (gồm 3 biểu hiện “cauc” là người Hoa Kỳ, “hispanic” là người gốc Tây Ban Nha, “other” là người nơi khác.
Biến region: bạn có sống ở phía Nam không? (south/other)
Biến gender: Giới tính.
Biến occupation: Nghề nghiệp (gồm 6 biểu hiện “worker” là thợ hoặc công nhân dây chuyền lắp ráp,“technical” là công nhân kỹ thuật hoặc chuyên nghiệp ,“services” là nhân viên dịch vụ,“office” là nhân viên văn phòng và thư ký,“sales” là nhân viên bán hàng,“management” là quản lý và điều hành).
Biến sector: Lĩnh vực làm việc ( có hai biểu hiện “manufacturing” là chế tạo hoặc khai khoáng, “construction” là xây dựng, “other” là lĩnh vực khác).
Biến union: Bạn có làm việc với đoàn thể hay không?
Biến married: Bạn đã kết hôn hay chưa?
Biến wage: Tiền lương (USD/h).
Biến education: Số năm đi học.
Biến experience: Số năm kinh nghiệp.
Biến age: Tuổi.
Đối với biến định tính, em chọn biến occupation ‘nghề nghiệp’ làm biến phụ thuộc. Biến bao gồm 6 biểu hiện “worker” là thợ hoặc công nhân dây chuyền lắp ráp,“technical” là công nhân kỹ thuật hoặc chuyên nghiệp ,“services” là nhân viên dịch vụ,“office” là nhân viên văn phòng và thư ký,“sales” là nhân viên bán hàng,“management” là quản lý và điều hành.
Lý do em chọn biến này là vì em muốn biết nghề nghiệp của một người có bị ảnh hưởng bởi các yếu tố như dân tộc của người đó là gì, năm đi học mà người đó đi học và số tiền lương một giờ họ đi làm, … hay không?
table(d$occupation)
##
## worker technical services office sales management
## 156 105 83 97 38 55
table(d$occupation)/sum(table(d$occupation))
##
## worker technical services office sales management
## 0.29213 0.19663 0.15543 0.18165 0.07116 0.10300
d |> ggplot(aes(x = occupation, y = after_stat(count))) + geom_bar(fill = 'blue') + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'green', vjust = - .5) + theme_classic() + labs(x = 'Nghề nghiệp', y = 'Số người')
Biến occupation là biến định tính, thực hiện một phép đếm đơn giản ta thấy trong 6 nghề nghiệp có 156 người (có 29,213%) là thợ hoặc công nhân dây chuyền lắp ráp, 105 người (chiếm 19,663%) là công nhân kỹ thuật hoặc chuyên nghiệp ,83 người(khoảng 15,543%) là nhân viên dịch vụ,97 người (chiếm 18,165%) là nhân viên văn phòng và thư ký,38 người (khoảng 7,116%) là nhân viên bán hàng và 55 người là quản lý và điều hành khoảng 10,3%.
Đối với biến định lượng, em chọn biến education làm biến phụ thuộc, đây là biến thể hiện số năm đi học của người được khảo sát.
Em chọn biến định lượng education làm biến phục thuộc, tại đây em muốn xác định các ảnh hưởng của các yếu tố trong bảng khảo sát như thu nhập theo giờ của một người, dân tộc, hay ngành nghề mà học làm có liên quan già không ?, …
min(d$education)
## [1] 2
max(d$education)
## [1] 18
median(d$education)
## [1] 12
Biến education là biến định lượng, xét tahys người học ít nhất là 2 năm, nhiều nhất là 18 năm, vtrung vị của biến này là 12 năm.
cap <-cut(d$education, breaks=c(1,5,8,12,16,18), labels=c('Cấp 1', 'Cấp 2', 'Cấp 3',' Đại học','Thạc sĩ'))
table(cap)
## cap
## Cấp 1 Cấp 2 Cấp 3 Đại học Thạc sĩ
## 4 23 275 177 55
table(cap)/sum(table(cap))
## cap
## Cấp 1 Cấp 2 Cấp 3 Đại học Thạc sĩ
## 0.007491 0.043071 0.514981 0.331461 0.102996
trinhdo <-cut(d$education, breaks=c(1,12,18), labels=c('thấp', ' cao'))
table(trinhdo)
## trinhdo
## thấp cao
## 302 232
table(trinhdo)/sum(table(trinhdo))
## trinhdo
## thấp cao
## 0.5655 0.4345
k <- data.frame(d$wage, d$education, d$experience, d$age, d$ethnicity, d$region, d$gender, d$occupation, d$sector, d$union, d$married, trinhdo)
k |> ggplot(aes(x = trinhdo, y = after_stat(count))) + geom_bar(fill = 'blue') + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'red', vjust = - .5) + theme_classic() + labs(x = 'Trình độ', y = 'Số người')+ coord_flip()
Theo cuộc khảo sát thì đa phần mọi người đều đi học em thực hiện việc lập bảng và phân người khảo sát thành các cấp khác nhau:
Người đi học từ 1-5 năm được gọi là cấp 1 chỉ có 4 người(khoảng 0.74%) trong thống kê này.
Người đi học từ 5-8 năm là học cấp 2 có 23 người ( khoảng 4,31%).
Người đi học từ 8-12 năm là học cấp 3 là nhiều nhất có 275 người (chiếm 51,5%).
Người học từ 12-16 năm là đi học đại học có 177 người khoảng 33,15%.
Người học Thạc sĩ là phải học từ 17-18 năm khoảng 10,3% có 55 người.
Người có trình độ thấp nhiêu hơn người trình độ cao.
Yêu cầu: Tìm một dataset có dữ liệu định tính, dữ liệu định lượng, có trên 5 biến và nhiều hơn 300
Data có tên là: CPS1985
Mô tả: Dữ liệu là dữ liệu chéo bắt nguồn từ khảo sát dân số hiện tại của tháng 5 năm 1985 của Cục điều tra dân số Hoa Kỳ. Bộ dữ liệu gồm 534 biến với 11 biến (có 7 biến định tính và 4 biến định lượng). Trong đó:
Biến wage: Tiền lương (USD/h).
Biến education: Số năm đi học.
Biến experience: Số năm kinh nghiệp.
Biến age: Tuổi.
Biến ethnicity: Dân tộc (gồm 3 biểu hiện “cauc” là người Hoa Kỳ, “hispanic” là người gốc Tây Ban Nha, “other” là người nơi khác.
Biến region: bạn có sống ở phía Nam không? (south/other)
Biến gender: Giới tính.
Biến occupation: Nghề nghiệp (gồm 6 biểu hiện “worker” là thợ hoặc công nhân dây chuyền lắp ráp,“technical” là công nhân kỹ thuật hoặc chuyên nghiệp ,“services” là nhân viên dịch vụ,“office” là nhân viên văn phòng và thư ký,“sales” là nhân viên bán hàng,“management” là quản lý và điều hành).
Biến sector: Lĩnh vực làm việc ( có hai biểu hiện “manufacturing” là chế tạo hoặc khai khoáng, “construction” là xây dựng, “other” là lĩnh vực khác).
Biến union: Bạn có làm việc với đoàn thể hay không?
Biến married: Bạn đã kết hôn hay chưa?
data("CPS1985")
d <- CPS1985
datatable(CPS1985)
Dữ liệu được dùng trong bài báo “Berndt, E.R. (1991). The Practice of Econometrics. New York: Addison-Wesley.”
Tôi muốn dùng bộ dữ liệu này để tiến hành phân tích và tìm hiểu xem mối liên hệ của các biến đối với biến này như: xem xét về trình độ học tập của các dân tộc khác nhau, giới tính của người theo dân tộc, tính độ thu nhập theo giờ của các dân tộc khác nhau trên vùng này sẽ như thể nào, mức lương làm theo giờ của họ có giống nhau hay không,…