Dữ liệu sử dụng trong hướng dẫn này là của PGS.TS Trần Văn Trang (Đại học Thương mại).
Bài báo gốc lấy tại: http://tckhtm.tmu.edu.vn/vi/news/cac-so-tap-chi/tap-chi-khoa-hoc-thuong-mai-so-141-153.html
Dữ liệu tải tại google diver: https://drive.google.com/drive/folders/1Npip6h8WyZjI9JGf5wonnU_scBUYj4sP?usp=sharing
setwd("D:/Tap huan VIASM/HoiThao_KHXH_2021/Projects/Y_Dinh_Hanh_Vi")
library(foreign) # to import .sav in R
require(tidyverse) # De lam cac thao tac loc/tao bien mutate, Pivot Talbe = group_by....
library(psych) # KMO, Barletet, cronbach alpha, fa
library(GPArotation)
library(readxl) # Read xlsx file
library(writexl) # write xlsx file
d <- read.spss("Case study Behavior Intention.sav",
use.value.label=TRUE, to.data.frame=TRUE)
Questionnaire <- read_excel("Questionnaires.xlsx", sheet = 1)
head(Questionnaire)
## # A tibble: 6 x 2
## Code Meaning
## <chr> <chr>
## 1 BI Ý d<U+1ECB>nh hành vi
## 2 BI1 Tôi không bao gi<U+1EDD> tìm ki<U+1EBF>m co h<U+1ED9>i kh<U+1EDF>i s<U+1EF1> kinh doanh
## 3 BI1R Tôi không bao gi<U+1EDD> tìm ki<U+1EBF>m co h<U+1ED9>i kh<U+1EDF>i s<U+1EF1> kinh doanh
## 4 BI2 Tôi ti<U+1EBF>t ki<U+1EC7>m ti<U+1EC1>n d<U+1EC3> kh<U+1EDF>i s<U+1EF1> kinh doanh
## 5 BI3 Tôi tìm d<U+1ECD>c sách và tài li<U+1EC7>u v<U+1EC1> kh<U+1EDF>i s<U+1EF1> kinh doanh
## 6 BI4 Tôi không có k<U+1EBF> ho<U+1EA1>ch nào d<U+1EC3> kh<U+1EDF>i s<U+1EF1> kinh doanh
d1 <- d %>% select(-c("STT", "FAM", "Formation",
"Work", "Year",
"BI1", "BIRecode", "BI4"))
dim(d1)
## [1] 826 29
?fa
efa_d1_6 <- fa(r = d1,fm = "pa", nfactors = 6,
rotate = "varimax")
print(loadings(efa_d1_6), digits = 2, cutoff = 0.51)
##
## Loadings:
## PA1 PA4 PA2 PA3 PA5 PA6
## BI1R 0.69
## BI2 0.60
## BI3 0.57
## BI4R 0.64
## BI5 0.70
## BI6 0.65
## REL1 0.57
## REL2 0.57
## REL3 0.69
## REL4 0.62
## EDU1 0.65
## EDU2 0.77
## EDU3 0.79
## EDU4 0.74
## EDU5 0.74
## EDU6 0.63
## EDU7 0.72
## EDU8 0.62
## GOV1 0.56
## GOV2 0.76
## GOV3 0.73
## GOV4 0.76
## GOV5 0.63
## GOV6
## END1 0.56
## END2 0.76
## END3 0.81
## END4 0.70
## END5 0.65
##
## PA1 PA4 PA2 PA3 PA5 PA6
## SS loadings 4.67 3.10 2.66 2.61 1.84 1.13
## Proportion Var 0.16 0.11 0.09 0.09 0.06 0.04
## Cumulative Var 0.16 0.27 0.36 0.45 0.51 0.55
efa_d1_5_varimax <- fa(r = d1,fm = "pa", nfactors = 5,
rotate = "varimax")
print(loadings(efa_d1_5_varimax), digits = 2, cutoff = 0.51)
##
## Loadings:
## PA1 PA4 PA3 PA2 PA5
## BI1R
## BI2 0.65
## BI3 0.64
## BI4R
## BI5 0.64
## BI6 0.62
## REL1 0.53
## REL2 0.59
## REL3 0.70
## REL4 0.60
## EDU1 0.65
## EDU2 0.76
## EDU3 0.79
## EDU4 0.73
## EDU5 0.74
## EDU6 0.63
## EDU7 0.72
## EDU8 0.62
## GOV1 0.55
## GOV2 0.75
## GOV3 0.74
## GOV4 0.77
## GOV5 0.64
## GOV6 0.51
## END1 0.56
## END2 0.76
## END3 0.81
## END4 0.70
## END5 0.65
##
## PA1 PA4 PA3 PA2 PA5
## SS loadings 4.61 3.15 2.88 2.65 1.89
## Proportion Var 0.16 0.11 0.10 0.09 0.07
## Cumulative Var 0.16 0.27 0.37 0.46 0.52
efa_d1_5 <- fa(r = d1,fm = "pa", nfactors = 5,
rotate = "promax")
print(loadings(efa_d1_5), digits = 2, cutoff = 0.53)
##
## Loadings:
## PA1 PA4 PA2 PA3 PA5
## BI1R
## BI2 0.65
## BI3 0.66
## BI4R
## BI5 0.63
## BI6 0.59
## REL1 0.57
## REL2 0.66
## REL3 0.81
## REL4 0.68
## EDU1 0.68
## EDU2 0.85
## EDU3 0.88
## EDU4 0.78
## EDU5 0.79
## EDU6 0.66
## EDU7 0.73
## EDU8 0.59
## GOV1 0.54
## GOV2 0.82
## GOV3 0.79
## GOV4 0.86
## GOV5 0.70
## GOV6 0.55
## END1 0.56
## END2 0.78
## END3 0.84
## END4 0.72
## END5 0.66
##
## PA1 PA4 PA2 PA3 PA5
## SS loadings 4.57 3.17 2.64 2.42 2.10
## Proportion Var 0.16 0.11 0.09 0.08 0.07
## Cumulative Var 0.16 0.27 0.36 0.44 0.51
print(loadings(efa_d1_5), digits = 2, cutoff = 0.53)
##
## Loadings:
## PA1 PA4 PA2 PA3 PA5
## BI1R
## BI2 0.65
## BI3 0.66
## BI4R
## BI5 0.63
## BI6 0.59
## REL1 0.57
## REL2 0.66
## REL3 0.81
## REL4 0.68
## EDU1 0.68
## EDU2 0.85
## EDU3 0.88
## EDU4 0.78
## EDU5 0.79
## EDU6 0.66
## EDU7 0.73
## EDU8 0.59
## GOV1 0.54
## GOV2 0.82
## GOV3 0.79
## GOV4 0.86
## GOV5 0.70
## GOV6 0.55
## END1 0.56
## END2 0.78
## END3 0.84
## END4 0.72
## END5 0.66
##
## PA1 PA4 PA2 PA3 PA5
## SS loadings 4.57 3.17 2.64 2.42 2.10
## Proportion Var 0.16 0.11 0.09 0.08 0.07
## Cumulative Var 0.16 0.27 0.36 0.44 0.51
EFAFinal <- efa_d1_5$loadings
EFAPA1 <- round(EFAFinal[, "PA1"][EFAFinal[, "PA1"] > 0.56], 2)
EFAPA2 <- round(EFAFinal[, "PA2"][EFAFinal[, "PA2"] > 0.56], 2)
EFAPA3 <- round(EFAFinal[, "PA3"][EFAFinal[, "PA3"] > 0.56], 2)
EFAPA4 <- round(EFAFinal[, "PA4"][EFAFinal[, "PA4"] > 0.56], 2)
EFAPA5 <- round(EFAFinal[, "PA5"][EFAFinal[, "PA5"] > 0.56], 2)
EFAPA1
## EDU1 EDU2 EDU3 EDU4 EDU5 EDU6 EDU7 EDU8
## 0.68 0.85 0.88 0.78 0.79 0.66 0.73 0.59
EFAPA2
## END1 END2 END3 END4 END5
## 0.56 0.78 0.84 0.72 0.66
EFAPA3
## BI2 BI3 BI5 BI6
## 0.65 0.66 0.63 0.59
EFAPA4
## GOV2 GOV3 GOV4 GOV5
## 0.82 0.79 0.86 0.70
EFAPA5
## REL1 REL2 REL3 REL4
## 0.57 0.66 0.81 0.68
Tab2_PA_Promax <- data.frame(Loading = c(EFAPA1, EFAPA2, EFAPA3, EFAPA4, EFAPA5),
Code = c(names(EFAPA1), names(EFAPA2), names(EFAPA3),
names(EFAPA4), names(EFAPA5)) )
Tab2_PA_Promax <- left_join(Tab2_PA_Promax, Questionnaire)
## Joining, by = "Code"
Tab2_PA_Promax <- Tab2_PA_Promax[, c("Code", "Meaning", "Loading")]
write_xlsx(Tab2_PA_Promax ,"Tab2_PA_Promax.xlsx")