# Read data from github
CB<-read.csv("https://raw.githubusercontent.com/tuyenhavan/Land-Relocation-Survey-Data/master/Can_Bo2.csv",header=T, sep=";")
# Kiểm tra qua cơ sở dữ liệu (Look at few rows of the dataset)
head(CB)
# Tải thư viện cần thiết cho việc sử lý, và sắp xếp dữ liệu (Import essential libraries for manipulating and visualizing data)
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 3.4.3
## -- Attaching packages --------------------------------------------------- tidyverse 1.2.1 --
## v ggplot2 2.2.1 v purrr 0.2.4
## v tibble 1.3.4 v dplyr 0.7.4
## v tidyr 0.7.2 v stringr 1.2.0
## v readr 1.1.1 v forcats 0.2.0
## Warning: package 'tidyr' was built under R version 3.4.3
## Warning: package 'purrr' was built under R version 3.4.3
## Warning: package 'dplyr' was built under R version 3.4.3
## -- Conflicts ------------------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(dplyr)
library(ggplot2)
# Sắp xếp lại dữ liệu
CB1<- CB %>% dplyr::select(contains("X"),Y_mean=Y.TB)
head(CB1) # Nhìn thoáng qua về cơ sở dữ liệu đã sắp xếp lại
Giải thích kí hiệu các biến trong tài liệu dữ liệu này
XA: Là giái trị trung bình Nhóm Yếu Tố về Chíh sách Môi trường
XB: Là giái trị trung bình Nhóm Yếu Tố v
XC: Là giái trị trung bình nhóm chính sách tái định cư
XD: Là giái trị trung bình nhóm nguồn vốn đầu tư và mục tiêu dự án
XE: Là giái trị trung bình nhóm yếu tố vê môi trường khu tái đinh cư
XF: Là giái trị trung bình nhóm yếu tố quản lý
XG: Là giái trị trung bình nhóm yếu tố tâm lý
XH: Là giái trị trung bình Nhóm yếu tố khách quan
# Xây dựng mô hình đầy đủ các biến
model_CB<-lm(Y_mean~., data=CB1)
# Kết quả tóm tắt của mô hình
summary(model_CB)
##
## Call:
## lm(formula = Y_mean ~ ., data = CB1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.39232 -0.17256 0.00938 0.12256 0.44658
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.19034 0.37519 -0.507 0.61464
## XA 0.21653 0.11514 1.881 0.06713 .
## XB 0.24768 0.08832 2.804 0.00767 **
## XC 0.07552 0.04471 1.689 0.09879 .
## XD 0.08398 0.06195 1.356 0.18265
## XE 0.05698 0.06072 0.938 0.35358
## XF 0.23066 0.08045 2.867 0.00651 **
## XG 0.04663 0.06293 0.741 0.46294
## XH 0.02900 0.03978 0.729 0.47015
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2489 on 41 degrees of freedom
## (2 observations deleted due to missingness)
## Multiple R-squared: 0.7987, Adjusted R-squared: 0.7594
## F-statistic: 20.34 on 8 and 41 DF, p-value: 5.351e-12
lmg (relative importance metrices)# Tải thư viện
library(relaimpo)
## Warning: package 'relaimpo' was built under R version 3.4.3
## Loading required package: MASS
##
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
##
## select
## Loading required package: boot
## Loading required package: survey
## Warning: package 'survey' was built under R version 3.4.3
## Loading required package: grid
## Loading required package: Matrix
##
## Attaching package: 'Matrix'
## The following object is masked from 'package:tidyr':
##
## expand
## Loading required package: survival
##
## Attaching package: 'survival'
## The following object is masked from 'package:boot':
##
## aml
##
## Attaching package: 'survey'
## The following object is masked from 'package:graphics':
##
## dotchart
## Loading required package: mitools
## Warning: package 'mitools' was built under R version 3.4.3
## This is the global version of package relaimpo.
## If you are a non-US user, a version with the interesting additional metric pmvd is available
## from Ulrike Groempings web site at prof.beuth-hochschule.de/groemping.
calc.relimp(model_CB, type=c("lmg"),rela=T) # Kết quả tóm tắt bên dưới, chú ý phần lmg
## Response variable: Y_mean
## Total response variance: 0.257441
## Analysis based on 50 observations
##
## 8 Regressors:
## XA XB XC XD XE XF XG XH
## Proportion of variance explained by model: 79.87%
## Metrics are normalized to sum to 100% (rela=TRUE).
##
## Relative importance metrics:
##
## lmg
## XA 0.27190252
## XB 0.28410597
## XC 0.13509907
## XD 0.07167156
## XE 0.06217632
## XF 0.13818396
## XG 0.02431549
## XH 0.01254511
##
## Average coefficients for different model sizes:
##
## 1X 2Xs 3Xs 4Xs 5Xs 6Xs
## XA 0.66274354 0.58377852 0.50916145 0.43957783 0.37533538 0.31663824
## XB 0.54819906 0.47620906 0.41864629 0.37183433 0.33300466 0.30017105
## XC 0.28435536 0.21824544 0.16935166 0.13398729 0.10909795 0.09227669
## XD 0.31342422 0.23375938 0.17884842 0.14239522 0.11871978 0.10319174
## XE 0.29954707 0.21175279 0.15298353 0.11351480 0.08733780 0.07077436
## XF 0.53268195 0.43096888 0.36123332 0.31365426 0.28093458 0.25818705
## XG 0.19651496 0.13618265 0.10276280 0.08338129 0.07069341 0.06114392
## XH 0.08020168 0.06078385 0.05045277 0.04455423 0.04044203 0.03679495
## 7Xs 8Xs
## XA 0.26366442 0.21653109
## XB 0.27200718 0.24767968
## XC 0.08159199 0.07552361
## XD 0.09240942 0.08397886
## XE 0.06127573 0.05697709
## XF 0.24223978 0.23065913
## XG 0.05325378 0.04662746
## XH 0.03301160 0.02899893
step(model_CB, direction = "backward")
## Start: AIC=-131.01
## Y_mean ~ XA + XB + XC + XD + XE + XF + XG + XH
##
## Df Sum of Sq RSS AIC
## - XH 1 0.03291 2.5721 -132.37
## - XG 1 0.03400 2.5732 -132.34
## - XE 1 0.05453 2.5937 -131.95
## <none> 2.5392 -131.01
## - XD 1 0.11381 2.6530 -130.82
## - XC 1 0.17670 2.7159 -129.65
## - XA 1 0.21904 2.7582 -128.87
## - XB 1 0.48707 3.0263 -124.23
## - XF 1 0.50908 3.0483 -123.87
##
## Step: AIC=-132.36
## Y_mean ~ XA + XB + XC + XD + XE + XF + XG
##
## Df Sum of Sq RSS AIC
## - XG 1 0.02658 2.5987 -133.85
## - XE 1 0.04996 2.6221 -133.40
## <none> 2.5721 -132.37
## - XD 1 0.12404 2.6961 -132.01
## - XC 1 0.19635 2.7685 -130.69
## - XA 1 0.21849 2.7906 -130.29
## - XB 1 0.46882 3.0409 -125.99
## - XF 1 0.63620 3.2083 -123.31
##
## Step: AIC=-133.85
## Y_mean ~ XA + XB + XC + XD + XE + XF
##
## Df Sum of Sq RSS AIC
## - XE 1 0.04175 2.6404 -135.05
## <none> 2.5987 -133.85
## - XC 1 0.18473 2.7834 -132.42
## - XA 1 0.21858 2.8173 -131.81
## - XD 1 0.23135 2.8300 -131.59
## - XB 1 0.48252 3.0812 -127.33
## - XF 1 0.66352 3.2622 -124.48
##
## Step: AIC=-135.05
## Y_mean ~ XA + XB + XC + XD + XF
##
## Df Sum of Sq RSS AIC
## <none> 2.6404 -135.05
## - XC 1 0.16298 2.8034 -134.06
## - XD 1 0.24289 2.8833 -132.65
## - XA 1 0.25469 2.8951 -132.45
## - XB 1 0.57978 3.2202 -127.13
## - XF 1 0.63838 3.2788 -126.23
##
## Call:
## lm(formula = Y_mean ~ XA + XB + XC + XD + XF, data = CB1)
##
## Coefficients:
## (Intercept) XA XB XC XD
## 0.06239 0.23074 0.26169 0.07096 0.10847
## XF
## 0.24572
# Mô hình cuối là cái mà ta cần tìm, biến XA, XB,XC,XD, và XF nên dữ lại
# Chọn biến
CB2<-CB1[, -c(5,7,8)]
head(CB2) # Have a look at first few rows of a new dataset
model_CB1<-lm(Y_mean~., data=CB2)
calc.relimp(model_CB1,type=c("lmg"),rela=T)
## Response variable: Y_mean
## Total response variance: 0.257441
## Analysis based on 50 observations
##
## 5 Regressors:
## XA XB XC XD XF
## Proportion of variance explained by model: 79.07%
## Metrics are normalized to sum to 100% (rela=TRUE).
##
## Relative importance metrics:
##
## lmg
## XA 0.30193141
## XB 0.31492765
## XC 0.14332464
## XD 0.08717031
## XF 0.15264599
##
## Average coefficients for different model sizes:
##
## 1X 2Xs 3Xs 4Xs 5Xs
## XA 0.6627435 0.5370001 0.4221966 0.31995008 0.23074315
## XB 0.5481991 0.4297679 0.3541471 0.30176054 0.26169210
## XC 0.2843554 0.1778667 0.1166080 0.08402468 0.07096382
## XD 0.3134242 0.1893276 0.1396123 0.11893441 0.10847496
## XF 0.5326820 0.3704244 0.2990967 0.26426239 0.24571873
A<- CB %>% dplyr::select(A1:A5,Y_mean=Y.TB)
head(A)
– Chạy mô hình cho nhóm A
# Xây dựng mô hình cho nhóm A
model_A<-lm(Y_mean~., data=A)
# Lựa chọn biến có ý nghĩa thống kê cho nhóm A
step(model_A,direction = "backward")
## Start: AIC=-125.93
## Y_mean ~ A1 + A2 + A3 + A4 + A5
##
## Df Sum of Sq RSS AIC
## - A5 1 0.01967 3.1888 -127.62
## - A1 1 0.03445 3.2035 -127.39
## - A4 1 0.04033 3.2094 -127.30
## <none> 3.1691 -125.93
## - A3 1 0.20707 3.3762 -124.76
## - A2 1 1.36729 4.5364 -110.00
##
## Step: AIC=-127.62
## Y_mean ~ A1 + A2 + A3 + A4
##
## Df Sum of Sq RSS AIC
## - A4 1 0.02358 3.2123 -129.25
## - A1 1 0.02917 3.2179 -129.16
## <none> 3.1888 -127.62
## - A3 1 0.26741 3.4562 -125.59
## - A2 1 1.37633 4.5651 -111.68
##
## Step: AIC=-129.25
## Y_mean ~ A1 + A2 + A3
##
## Df Sum of Sq RSS AIC
## - A1 1 0.01389 3.2262 -131.03
## <none> 3.2123 -129.25
## - A3 1 0.61076 3.8231 -122.55
## - A2 1 1.86840 5.0807 -108.33
##
## Step: AIC=-131.04
## Y_mean ~ A2 + A3
##
## Df Sum of Sq RSS AIC
## <none> 3.2262 -131.035
## - A3 1 0.6023 3.8285 -124.477
## - A2 1 7.8553 11.0816 -71.337
##
## Call:
## lm(formula = Y_mean ~ A2 + A3, data = A)
##
## Coefficients:
## (Intercept) A2 A3
## 1.4863 0.3992 0.1441
# Từ mô hình ta thấy, A2 và A3 chọn
# Tính giá trị trung cho A2 và A3
A_mean<-rowMeans(A[,c(2,3)])
– Nhóm B
# sắp xếp lại dữ liệu cho nhóm B
B<- CB %>% dplyr::select(B6:B10, Y_mean=Y.TB)
head(B)
# Mô hình cho nhóm B
model_B<-lm(Y_mean~., data=B)
# Lựa chọn biến có ý nghĩa thống kê
step(model_B, direction = "backward")
## Start: AIC=-111.47
## Y_mean ~ B6 + B7 + B8 + B9 + B10
##
## Df Sum of Sq RSS AIC
## - B8 1 0.01487 4.2463 -113.298
## - B9 1 0.06883 4.3003 -112.667
## <none> 4.2315 -111.474
## - B10 1 0.17615 4.4076 -111.434
## - B7 1 0.36861 4.6001 -109.297
## - B6 1 1.74470 5.9762 -96.212
##
## Step: AIC=-113.3
## Y_mean ~ B6 + B7 + B9 + B10
##
## Df Sum of Sq RSS AIC
## - B9 1 0.06652 4.3129 -114.52
## <none> 4.2463 -113.30
## - B10 1 0.38579 4.6321 -110.95
## - B7 1 0.57180 4.8181 -108.98
## - B6 1 1.84592 6.0922 -97.25
##
## Step: AIC=-114.52
## Y_mean ~ B6 + B7 + B10
##
## Df Sum of Sq RSS AIC
## <none> 4.3129 -114.521
## - B7 1 0.62177 4.9346 -109.787
## - B10 1 0.76652 5.0794 -108.342
## - B6 1 2.74461 7.0575 -91.897
##
## Call:
## lm(formula = Y_mean ~ B6 + B7 + B10, data = B)
##
## Coefficients:
## (Intercept) B6 B7 B10
## 1.6669 0.2034 0.1357 0.1737
# Giá trị trung bình cho nhóm B
B_mean<- rowMeans(B[,c(1,2,5)])
– Nhóm C
# sắp xếp lại dữ liệu cho nhóm B
C<- CB %>% dplyr::select(C11:C14, Y_mean=Y.TB)
head(C)
# Mô hình cho nhóm C
model_C<-lm(Y_mean~., data=C)
# Lựa chọn biến có ý nghĩa thống kê
step(model_C, direction = "backward")
## Start: AIC=-82.92
## Y_mean ~ C11 + C12 + C13 + C14
##
## Df Sum of Sq RSS AIC
## - C13 1 0.03726 7.8338 -84.679
## - C11 1 0.04201 7.8385 -84.649
## - C14 1 0.10132 7.8978 -84.272
## <none> 7.7965 -82.917
## - C12 1 0.66871 8.4652 -80.803
##
## Step: AIC=-84.68
## Y_mean ~ C11 + C12 + C14
##
## Df Sum of Sq RSS AIC
## - C11 1 0.04337 7.8771 -86.403
## - C14 1 0.06415 7.8979 -86.271
## <none> 7.8338 -84.679
## - C12 1 0.64555 8.4793 -82.720
##
## Step: AIC=-86.4
## Y_mean ~ C12 + C14
##
## Df Sum of Sq RSS AIC
## - C14 1 0.21894 8.0961 -87.032
## <none> 7.8771 -86.403
## - C12 1 1.03787 8.9150 -82.214
##
## Step: AIC=-87.03
## Y_mean ~ C12
##
## Df Sum of Sq RSS AIC
## <none> 8.0961 -87.032
## - C12 1 4.5185 12.6146 -66.858
##
## Call:
## lm(formula = Y_mean ~ C12, data = C)
##
## Coefficients:
## (Intercept) C12
## 2.2739 0.3268
# Giá trị trung bình cho nhóm C
C_mean<- C[,2]
– Nhóm D
# sắp xếp lại dữ liệu cho nhóm D
D<- CB %>% dplyr::select(D15:D16, Y_mean=Y.TB)
head(D)
# Mô hình cho nhóm D
model_D<-lm(Y_mean~., data=D)
# Lựa chọn biến có ý nghĩa thống kê
step(model_D, direction = "backward")
## Start: AIC=-74.84
## Y_mean ~ D15 + D16
##
## Df Sum of Sq RSS AIC
## - D15 1 0.39604 10.3221 -74.887
## <none> 9.9261 -74.843
## - D16 1 1.45262 11.3787 -70.014
##
## Step: AIC=-74.89
## Y_mean ~ D16
##
## Df Sum of Sq RSS AIC
## <none> 10.322 -74.887
## - D16 1 2.2925 12.615 -66.858
##
## Call:
## lm(formula = Y_mean ~ D16, data = D)
##
## Coefficients:
## (Intercept) D16
## 2.4167 0.2714
# Giá trị trung bình cho nhóm C
D_mean<- D[,2]
– Nhóm E
# sắp xếp lại dữ liệu cho nhóm D
E<- CB %>% dplyr::select(E17:E20, Y_mean=Y.TB)
head(E)
# Mô hình cho nhóm E
model_E<-lm(Y_mean~., data=E)
# Lựa chọn biến có ý nghĩa thống kê
step(model_E, direction = "backward")
## Start: AIC=-71.37
## Y_mean ~ E17 + E18 + E19 + E20
##
## Df Sum of Sq RSS AIC
## - E20 1 0.087991 9.9109 -72.919
## - E17 1 0.119342 9.9422 -72.761
## - E19 1 0.131676 9.9546 -72.700
## - E18 1 0.298926 10.1218 -71.866
## <none> 9.8229 -71.365
##
## Step: AIC=-72.92
## Y_mean ~ E17 + E18 + E19
##
## Df Sum of Sq RSS AIC
## - E19 1 0.04374 9.9546 -74.699
## - E17 1 0.08127 9.9922 -74.511
## <none> 9.9109 -72.919
## - E18 1 0.50364 10.4145 -72.441
##
## Step: AIC=-74.7
## Y_mean ~ E17 + E18
##
## Df Sum of Sq RSS AIC
## - E17 1 0.05097 10.0056 -76.444
## <none> 9.9546 -74.699
## - E18 1 0.46948 10.4241 -74.395
##
## Step: AIC=-76.44
## Y_mean ~ E18
##
## Df Sum of Sq RSS AIC
## <none> 10.006 -76.444
## - E18 1 2.609 12.615 -66.858
##
## Call:
## lm(formula = Y_mean ~ E18, data = E)
##
## Coefficients:
## (Intercept) E18
## 2.0122 0.3442
# Giá trị trung bình cho nhóm E
E_mean<- E[,2]
– Nhóm F
# sắp xếp lại dữ liệu cho nhóm F
F<- CB %>% dplyr::select(F21:F23, Y_mean=Y.TB)
head(F)
# Mô hình cho nhóm F
model_F<-lm(Y_mean~., data=F)
# Lựa chọn biến có ý nghĩa thống kê
step(model_F, direction = "backward")
## Start: AIC=-93.05
## Y_mean ~ F21 + F22 + F23
##
## Df Sum of Sq RSS AIC
## - F22 1 0.0018 6.6278 -95.038
## <none> 6.6260 -93.051
## - F23 1 0.5789 7.2048 -90.864
## - F21 1 4.0040 10.6299 -71.417
##
## Step: AIC=-95.04
## Y_mean ~ F21 + F23
##
## Df Sum of Sq RSS AIC
## <none> 6.6278 -95.038
## - F23 1 0.5959 7.2237 -92.733
## - F21 1 4.1398 10.7676 -72.774
##
## Call:
## lm(formula = Y_mean ~ F21 + F23, data = F)
##
## Coefficients:
## (Intercept) F21 F23
## 1.5302 0.3987 0.1557
# Giá trị trung bình cho nhóm F
F_mean<- rowMeans(F[,c(1,3)])
– Nhóm G
# sắp xếp lại dữ liệu cho nhóm G
G<- CB %>% dplyr::select(G24:G25, Y_mean=Y.TB)
head(G)
# Mô hình cho nhóm F
model_G<-lm(Y_mean~., data=F)
# Lựa chọn biến có ý nghĩa thống kê
step(model_G, direction = "backward")
## Start: AIC=-93.05
## Y_mean ~ F21 + F22 + F23
##
## Df Sum of Sq RSS AIC
## - F22 1 0.0018 6.6278 -95.038
## <none> 6.6260 -93.051
## - F23 1 0.5789 7.2048 -90.864
## - F21 1 4.0040 10.6299 -71.417
##
## Step: AIC=-95.04
## Y_mean ~ F21 + F23
##
## Df Sum of Sq RSS AIC
## <none> 6.6278 -95.038
## - F23 1 0.5959 7.2237 -92.733
## - F21 1 4.1398 10.7676 -72.774
##
## Call:
## lm(formula = Y_mean ~ F21 + F23, data = F)
##
## Coefficients:
## (Intercept) F21 F23
## 1.5302 0.3987 0.1557
# Giá trị trung bình cho nhóm F
G_mean<- rowMeans(G[,c(1,2)])
– Nhóm H
# sắp xếp lại dữ liệu cho nhóm F
H<- CB %>% dplyr::select(H26:H27, Y_mean=Y.TB)
head(H)
# Mô hình cho nhóm F
model_H<-lm(Y_mean~., data=H)
# Lựa chọn biến có ý nghĩa thống kê
step(model_H, direction = "backward")
## Start: AIC=-64.9
## Y_mean ~ H26 + H27
##
## Df Sum of Sq RSS AIC
## - H27 1 0.02021 12.131 -66.812
## - H26 1 0.44984 12.561 -65.072
## <none> 12.111 -64.895
##
## Step: AIC=-66.81
## Y_mean ~ H26
##
## Df Sum of Sq RSS AIC
## - H26 1 0.48341 12.615 -66.858
## <none> 12.131 -66.812
##
## Step: AIC=-66.86
## Y_mean ~ 1
##
## Call:
## lm(formula = Y_mean ~ 1, data = H)
##
## Coefficients:
## (Intercept)
## 3.437
# Giá trị trung bình cho nhóm F
H_mean<- rowMeans(H[,c(1,2)])
df <- data.frame(A_mean, B_mean, C_mean, D_mean, E_mean, F_mean, G_mean, H_mean, Y_mean=CB$Y.TB)
head(df)
# Mô hình mới
model1<-lm(Y_mean~., data=df)
# đóng góp vào mô hình
calc.relimp(model1,type=c("lmg"),rela=T)
## Response variable: Y_mean
## Total response variance: 0.257441
## Analysis based on 50 observations
##
## 8 Regressors:
## A_mean B_mean C_mean D_mean E_mean F_mean G_mean H_mean
## Proportion of variance explained by model: 84.56%
## Metrics are normalized to sum to 100% (rela=TRUE).
##
## Relative importance metrics:
##
## lmg
## A_mean 0.26570542
## B_mean 0.29882048
## C_mean 0.11521283
## D_mean 0.04888329
## E_mean 0.06293559
## F_mean 0.18209255
## G_mean 0.01405944
## H_mean 0.01229039
##
## Average coefficients for different model sizes:
##
## 1X 2Xs 3Xs 4Xs 5Xs 6Xs
## A_mean 0.60046592 0.53500908 0.47381855 0.41636429 0.36230260 0.31146424
## B_mean 0.51325440 0.44416823 0.39109336 0.34998967 0.31779113 0.29223749
## C_mean 0.32675803 0.23429824 0.16843409 0.12170905 0.08907899 0.06703053
## D_mean 0.27141388 0.17321548 0.11158437 0.07441521 0.05278518 0.04052356
## E_mean 0.34421435 0.23350218 0.16250763 0.11674048 0.08668905 0.06639639
## F_mean 0.56005812 0.44618472 0.36794149 0.31380759 0.27590511 0.24908881
## G_mean 0.14165523 0.09398395 0.06734167 0.05153669 0.04181012 0.03608229
## H_mean 0.08020168 0.06232028 0.05309862 0.04833620 0.04578921 0.04427630
## 7Xs 8Xs
## A_mean 0.26383114 0.21950872
## B_mean 0.27172440 0.25517612
## C_mean 0.05293316 0.04465743
## D_mean 0.03368590 0.02997834
## E_mean 0.05222094 0.04187020
## F_mean 0.23002833 0.21635613
## G_mean 0.03326354 0.03256333
## H_mean 0.04315301 0.04209046