GIỚI THIỆU

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

Load các gói cần thiết và nhập liệu

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

1. Lọc các biến quan sát (items)

d1 <-  d %>% select(-c("STT",  "FAM", "Formation",
                       "Work",  "Year",
                       "BI1",     "BIRecode", "BI4"))
dim(d1)
## [1] 826  29

2. Tìm hiểu hàm fa()

?fa

3. Thực hiện các điều chỉnh trong hàm 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

4. Chọn phương án cuối cùng

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

5. Ghép hệ số tải vào bảng và ghép tên items

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")]

6. Ghi file bảng để chuẩn bị cho báo cáo

write_xlsx(Tab2_PA_Promax ,"Tab2_PA_Promax.xlsx")