# Read data from github
VB<-read.csv("https://raw.githubusercontent.com/tuyenhavan/Land-Relocation-Survey-Data/master/VB.csv",header=T, sep=";")
# Kiểm tra qua cơ sở dữ liệu (Look at few rows of the dataset)
head(VB)
# 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
VB1<- VB %>% dplyr::select(contains("X"),Y_mean=Y.TB)
head(VB1) # 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_VB<-lm(Y_mean~., data=VB1)
# Kết quả tóm tắt của mô hình
summary(model_VB)
##
## Call:
## lm(formula = Y_mean ~ ., data = VB1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.258884 -0.072905 -0.008664 0.102558 0.194093
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.31356 0.26583 1.180 0.2450
## XA 0.42677 0.07387 5.777 8.97e-07 ***
## XB 0.17066 0.08397 2.032 0.0486 *
## XC 0.01902 0.05071 0.375 0.7095
## XD -0.16188 0.06838 -2.367 0.0227 *
## XE 0.14886 0.05574 2.671 0.0108 *
## XF 0.05539 0.05301 1.045 0.3022
## XG 0.14832 0.07278 2.038 0.0480 *
## XH 0.10868 0.05901 1.842 0.0728 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1278 on 41 degrees of freedom
## (1 observation deleted due to missingness)
## Multiple R-squared: 0.8927, Adjusted R-squared: 0.8717
## F-statistic: 42.63 on 8 and 41 DF, p-value: < 2.2e-16
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_VB, 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.1273469
## Analysis based on 50 observations
##
## 8 Regressors:
## XA XB XC XD XE XF XG XH
## Proportion of variance explained by model: 89.27%
## Metrics are normalized to sum to 100% (rela=TRUE).
##
## Relative importance metrics:
##
## lmg
## XA 0.33660911
## XB 0.19975152
## XC 0.11130845
## XD 0.02458173
## XE 0.13292922
## XF 0.05767850
## XG 0.11683915
## XH 0.02030231
##
## Average coefficients for different model sizes:
##
## 1X 2Xs 3Xs 4Xs 5Xs 6Xs
## XA 0.7568871 0.688653380 0.62617200 0.57393584 0.53001346 0.49191223
## XB 0.6959817 0.588167870 0.48750542 0.40123344 0.32788626 0.26508418
## XC 0.3948940 0.273396724 0.18105453 0.11981128 0.07928305 0.05172270
## XD 0.1306195 0.006945245 -0.06290255 -0.10149857 -0.12578121 -0.14340844
## XE 0.4412913 0.340498012 0.26762724 0.21709630 0.18383048 0.16441864
## XF 0.3419385 0.246947956 0.18419180 0.14178505 0.11254509 0.09024026
## XG 0.4308874 0.333301308 0.26379558 0.21904375 0.19108450 0.17312835
## XH 0.1467958 0.071429122 0.05826372 0.06063806 0.06990245 0.08339853
## 7Xs 8Xs
## XA 0.45789005 0.42677493
## XB 0.21233956 0.17066372
## XC 0.03273449 0.01902173
## XD -0.15589701 -0.16188172
## XE 0.15413802 0.14886400
## XF 0.07156692 0.05538799
## XG 0.16006082 0.14832103
## XH 0.09772355 0.10867981
step(model_VB, direction = "backward")
## Start: AIC=-197.65
## Y_mean ~ XA + XB + XC + XD + XE + XF + XG + XH
##
## Df Sum of Sq RSS AIC
## - XC 1 0.00230 0.67193 -199.48
## - XF 1 0.01783 0.68745 -198.34
## <none> 0.66963 -197.65
## - XH 1 0.05540 0.72503 -195.68
## - XB 1 0.06747 0.73710 -194.85
## - XG 1 0.06783 0.73745 -194.83
## - XD 1 0.09153 0.76116 -193.25
## - XE 1 0.11649 0.78612 -191.63
## - XA 1 0.54513 1.21476 -169.87
##
## Step: AIC=-199.48
## Y_mean ~ XA + XB + XD + XE + XF + XG + XH
##
## Df Sum of Sq RSS AIC
## - XF 1 0.01584 0.68776 -200.32
## <none> 0.67193 -199.48
## - XH 1 0.05373 0.72566 -197.63
## - XG 1 0.06672 0.73864 -196.75
## - XD 1 0.09028 0.76220 -195.18
## - XB 1 0.09713 0.76905 -194.73
## - XE 1 0.14366 0.81558 -191.79
## - XA 1 0.62741 1.29933 -168.51
##
## Step: AIC=-200.32
## Y_mean ~ XA + XB + XD + XE + XG + XH
##
## Df Sum of Sq RSS AIC
## <none> 0.68776 -200.32
## - XH 1 0.05381 0.74157 -198.55
## - XG 1 0.06416 0.75192 -197.86
## - XB 1 0.09639 0.78416 -195.76
## - XD 1 0.09777 0.78554 -195.67
## - XE 1 0.22765 0.91541 -188.02
## - XA 1 0.65767 1.34544 -168.76
##
## Call:
## lm(formula = Y_mean ~ XA + XB + XD + XE + XG + XH, data = VB1)
##
## Coefficients:
## (Intercept) XA XB XD XE
## 0.4278 0.4430 0.1837 -0.1609 0.1777
## XG XH
## 0.1370 0.1066
# 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
VB2<-VB1[, -c(3,6)]
head(VB2) # Have a look at first few rows of a new dataset
model_VB1<-lm(Y_mean~., data=VB2)
calc.relimp(model_VB1,type=c("lmg"),rela=T)
## Response variable: Y_mean
## Total response variance: 0.1273469
## Analysis based on 50 observations
##
## 6 Regressors:
## XA XB XD XE XG XH
## Proportion of variance explained by model: 88.98%
## Metrics are normalized to sum to 100% (rela=TRUE).
##
## Relative importance metrics:
##
## lmg
## XA 0.39526822
## XB 0.24578239
## XD 0.02561442
## XE 0.18328614
## XG 0.12900054
## XH 0.02104829
##
## Average coefficients for different model sizes:
##
## 1X 2Xs 3Xs 4Xs 5Xs 6Xs
## XA 0.7568871 0.68587437 0.61468992 0.55351437 0.49616036 0.4429991
## XB 0.6959817 0.58009824 0.45898351 0.35402743 0.25923486 0.1836630
## XD 0.1306195 -0.02825652 -0.10289934 -0.12726756 -0.14542982 -0.1608726
## XE 0.4412913 0.33974509 0.26590709 0.21551416 0.19070763 0.1777398
## XG 0.4308874 0.32265170 0.23180993 0.17155842 0.14527989 0.1370330
## XH 0.1467958 0.04544086 0.04821581 0.06183911 0.08460565 0.1065996
A<- VB %>% 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=-182.05
## Y_mean ~ A1 + A2 + A3 + A4 + A5
##
## Df Sum of Sq RSS AIC
## <none> 1.0316 -182.05
## - A2 1 0.07459 1.1062 -180.56
## - A3 1 0.11776 1.1493 -178.64
## - A1 1 0.15095 1.1825 -177.22
## - A4 1 0.41284 1.4444 -167.22
## - A5 1 0.72905 1.7606 -157.32
##
## Call:
## lm(formula = Y_mean ~ A1 + A2 + A3 + A4 + A5, data = A)
##
## Coefficients:
## (Intercept) A1 A2 A3 A4
## 1.11774 0.16811 0.09319 0.07761 0.16690
## A5
## 0.21276
# Từ mô hình ta thấy tất cả các biến đều có ý nghĩa
# Tính giá trị trung bình
A_mean<-rowMeans(A)
– Nhóm B
# sắp xếp lại dữ liệu cho nhóm B
B<- VB %>% 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=-157.33
## Y_mean ~ B6 + B7 + B8 + B9 + B10
##
## Df Sum of Sq RSS AIC
## - B6 1 0.01190 1.7032 -158.97
## - B7 1 0.01666 1.7080 -158.84
## <none> 1.6913 -157.33
## - B9 1 0.27998 1.9713 -151.67
## - B10 1 0.43973 2.1310 -147.77
## - B8 1 1.70504 3.3963 -124.47
##
## Step: AIC=-158.98
## Y_mean ~ B7 + B8 + B9 + B10
##
## Df Sum of Sq RSS AIC
## - B7 1 0.03843 1.7416 -159.86
## <none> 1.7032 -158.97
## - B9 1 0.27067 1.9739 -153.60
## - B10 1 0.58054 2.2837 -146.31
## - B8 1 1.73027 3.4335 -125.92
##
## Step: AIC=-159.86
## Y_mean ~ B8 + B9 + B10
##
## Df Sum of Sq RSS AIC
## <none> 1.7416 -159.86
## - B9 1 0.67375 2.4154 -145.51
## - B10 1 0.68763 2.4293 -145.22
## - B8 1 1.79034 3.5320 -126.51
##
## Call:
## lm(formula = Y_mean ~ B8 + B9 + B10, data = B)
##
## Coefficients:
## (Intercept) B8 B9 B10
## 1.0993 0.2936 0.2022 0.2048
# Giá trị trung bình cho nhóm B
B_mean<- rowMeans(B[,c(3,4,5)])
– Nhóm C
# sắp xếp lại dữ liệu cho nhóm C
C<- VB %>% 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=-122.13
## Y_mean ~ C11 + C12 + C13 + C14
##
## Df Sum of Sq RSS AIC
## - C12 1 0.04449 3.6033 -123.51
## - C11 1 0.05290 3.6117 -123.39
## - C14 1 0.11560 3.6744 -122.53
## <none> 3.5588 -122.13
## - C13 1 0.31632 3.8751 -119.87
##
## Step: AIC=-123.51
## Y_mean ~ C11 + C13 + C14
##
## Df Sum of Sq RSS AIC
## - C11 1 0.12526 3.7285 -123.80
## - C14 1 0.12947 3.7328 -123.74
## <none> 3.6033 -123.51
## - C13 1 0.38545 3.9887 -120.43
##
## Step: AIC=-123.8
## Y_mean ~ C13 + C14
##
## Df Sum of Sq RSS AIC
## <none> 3.7285 -123.80
## - C14 1 0.19553 3.9241 -123.25
## - C13 1 1.30114 5.0297 -110.83
##
## Call:
## lm(formula = Y_mean ~ C13 + C14, data = C)
##
## Coefficients:
## (Intercept) C13 C14
## 2.1804 0.2486 0.1117
# Giá trị trung bình cho nhóm C
C_mean<- rowMeans(C[,c(3,4)])
– Nhóm D
# sắp xếp lại dữ liệu cho nhóm D
D<- VB %>% 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=-103.13
## Y_mean ~ D15 + D16
##
## Df Sum of Sq RSS AIC
## - D16 1 0.22627 5.8633 -103.17
## <none> 5.6370 -103.13
## - D15 1 0.51113 6.1481 -100.79
##
## Step: AIC=-103.17
## Y_mean ~ D15
##
## Df Sum of Sq RSS AIC
## <none> 5.8633 -103.17
## - D15 1 0.37674 6.2400 -102.05
##
## Call:
## lm(formula = Y_mean ~ D15, data = D)
##
## Coefficients:
## (Intercept) D15
## 2.8493 0.1427
# Giá trị trung bình cho nhóm D
D_mean<- D[,1]
– Nhóm E
# sắp xếp lại dữ liệu cho nhóm D
E<- VB %>% 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=-124.78
## Y_mean ~ E17 + E18 + E19 + E20
##
## Df Sum of Sq RSS AIC
## - E19 1 0.03020 3.4053 -126.33
## - E18 1 0.10709 3.4822 -125.22
## - E20 1 0.11362 3.4887 -125.12
## <none> 3.3751 -124.78
## - E17 1 0.55695 3.9320 -119.14
##
## Step: AIC=-126.33
## Y_mean ~ E17 + E18 + E20
##
## Df Sum of Sq RSS AIC
## - E18 1 0.11717 3.5225 -126.64
## <none> 3.4053 -126.33
## - E20 1 0.24115 3.6464 -124.91
## - E17 1 0.58678 3.9921 -120.39
##
## Step: AIC=-126.64
## Y_mean ~ E17 + E20
##
## Df Sum of Sq RSS AIC
## <none> 3.5225 -126.64
## - E20 1 0.59359 4.1160 -120.86
## - E17 1 1.42374 4.9462 -111.67
##
## Call:
## lm(formula = Y_mean ~ E17 + E20, data = E)
##
## Coefficients:
## (Intercept) E17 E20
## 1.6885 0.3340 0.1748
# Giá trị trung bình cho nhóm E
E_mean<- rowMeans(E[,c(1,4)])
– Nhóm F
# sắp xếp lại dữ liệu cho nhóm F
F<- VB %>% 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=-111.32
## Y_mean ~ F21 + F22 + F23
##
## Df Sum of Sq RSS AIC
## - F21 1 0.04075 4.6389 -112.88
## <none> 4.5981 -111.32
## - F22 1 0.24527 4.8434 -110.72
## - F23 1 1.25692 5.8550 -101.24
##
## Step: AIC=-112.88
## Y_mean ~ F22 + F23
##
## Df Sum of Sq RSS AIC
## <none> 4.6389 -112.88
## - F22 1 0.46095 5.0998 -110.14
## - F23 1 1.22948 5.8683 -103.12
##
## Call:
## lm(formula = Y_mean ~ F22 + F23, data = F)
##
## Coefficients:
## (Intercept) F22 F23
## 2.1651 0.1300 0.2568
# Giá trị trung bình cho nhóm F
F_mean<- rowMeans(F[,c(2,3)])
– Nhóm G
# sắp xếp lại dữ liệu cho nhóm G
G<- VB %>% dplyr::select(G24:G25, Y_mean=Y.TB)
head(G)
# Mô hình cho nhóm G
model_G<-lm(Y_mean~., data=G)
# Lựa chọn biến có ý nghĩa thống kê
step(model_G, direction = "backward")
## Start: AIC=-126.14
## Y_mean ~ G24 + G25
##
## Df Sum of Sq RSS AIC
## - G24 1 0.12662 3.6848 -126.39
## <none> 3.5582 -126.14
## - G25 1 2.30506 5.8633 -103.17
##
## Step: AIC=-126.39
## Y_mean ~ G25
##
## Df Sum of Sq RSS AIC
## <none> 3.6848 -126.39
## - G25 1 2.5552 6.2400 -102.05
##
## Call:
## lm(formula = Y_mean ~ G25, data = G)
##
## Coefficients:
## (Intercept) G25
## 2.6226 0.3425
# Giá trị trung bình cho nhóm G
G_mean<-G[,2]
– Nhóm H
# sắp xếp lại dữ liệu cho nhóm F
H<- VB %>% dplyr::select(H26:H27, Y_mean=Y.TB)
head(H)
# Mô hình cho nhóm H
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=-101.02
## Y_mean ~ H26 + H27
##
## Df Sum of Sq RSS AIC
## - H26 1 0.001014 5.8812 -103.01
## <none> 5.8802 -101.02
## - H27 1 0.267906 6.1481 -100.79
##
## Step: AIC=-103.01
## Y_mean ~ H27
##
## Df Sum of Sq RSS AIC
## <none> 5.8812 -103.01
## - H27 1 0.35877 6.2400 -102.05
##
## Call:
## lm(formula = Y_mean ~ H27, data = H)
##
## Coefficients:
## (Intercept) H27
## 3.0085 0.1241
# Giá trị trung bình cho nhóm H
H_mean<- H[,c(2)]
df <- data.frame(A_mean, B_mean, C_mean, D_mean, E_mean, F_mean, G_mean, H_mean, Y_mean=VB$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.1273469
## 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: 91.11%
## Metrics are normalized to sum to 100% (rela=TRUE).
##
## Relative importance metrics:
##
## lmg
## A_mean 0.32796983
## B_mean 0.21722689
## C_mean 0.11360199
## D_mean 0.01506423
## E_mean 0.11887984
## F_mean 0.07048971
## G_mean 0.11581242
## H_mean 0.02095510
##
## Average coefficients for different model sizes:
##
## 1X 2Xs 3Xs 4Xs 5Xs 6Xs
## A_mean 0.8124260 0.74665233 0.68529402 0.63018413 0.58255321 0.542911778
## B_mean 0.6937135 0.57867126 0.47389228 0.38243153 0.30577132 0.244001775
## C_mean 0.3741238 0.25818396 0.18308701 0.13489752 0.10230324 0.077980013
## D_mean 0.1427027 0.08044085 0.04485725 0.02457142 0.01268340 0.005096962
## E_mean 0.4827273 0.34955602 0.25743255 0.19759738 0.16086977 0.139547376
## F_mean 0.3614068 0.25317455 0.18815794 0.14731485 0.11997145 0.099192879
## G_mean 0.3425161 0.23396542 0.16237618 0.11662235 0.08680531 0.066072395
## H_mean 0.1241409 0.08500811 0.06318386 0.05073078 0.04377950 0.040042957
## 7Xs 8Xs
## A_mean 0.5112139865 0.486941224
## B_mean 0.1967171170 0.163954556
## C_mean 0.0576177534 0.038433702
## D_mean -0.0005615275 -0.005253272
## E_mean 0.1278825077 0.121921355
## F_mean 0.0804951289 0.061636304
## G_mean 0.0501190153 0.036072603
## H_mean 0.0378150401 0.035641983