1. Tải dữ liệu

library(thongke.club)
library(psych)
data(thangdo)
dulieu <- thangdo
head(dulieu)
##      b1 b2 b3 b4 b5 c1 c2 c3 c4 c5 d1 d2 d3 d4 d5 e1 e2 e3 e4 e5
## [1,]  1  1  1  1  1  4  4  4  4  4  1  1  1  1  1  4  4  4  4  4
## [2,]  4  4  4  4  4  5  1  1  5  4  4  4  4  4  4  4  5  4  5  5
## [3,]  1  1  1  1  1  4  5  5  4  5  5  5  5  5  5  1  1  5  1  1
## [4,]  5  5  5  5  5  5  4  5  4  5  4  4  4  4  4  1  1  1  1  4
## [5,]  4  4  4  4  4  4  5  5  5  5  5  5  5  5  5  1  4  1  5  5
## [6,]  4  1  1  1  1  1  1  1  5  1  4  1  5  1  4  1  5  1  1  1

2. Kiểm tra Cronback’s Alpha

alpha(dulieu[,1:5])
## 
## Reliability analysis   
## Call: alpha(x = dulieu[, 1:5])
## 
##   raw_alpha std.alpha G6(smc) average_r S/N    ase mean   sd median_r
##        0.9       0.9    0.89      0.65 9.4 0.0076  4.3 0.65     0.65
## 
##     95% confidence boundaries 
##          lower alpha upper
## Feldt     0.89   0.9  0.92
## Duhachek  0.89   0.9  0.92
## 
##  Reliability if an item is dropped:
##    raw_alpha std.alpha G6(smc) average_r S/N alpha se   var.r med.r
## b1      0.89      0.89    0.86      0.67 8.2   0.0089 0.00150  0.67
## b2      0.88      0.88    0.85      0.65 7.5   0.0096 0.00130  0.66
## b3      0.87      0.87    0.84      0.63 6.7   0.0106 0.00072  0.63
## b4      0.89      0.89    0.86      0.66 7.9   0.0091 0.00181  0.67
## b5      0.88      0.88    0.85      0.65 7.5   0.0095 0.00305  0.65
## 
##  Item statistics 
##      n raw.r std.r r.cor r.drop mean   sd
## b1 400  0.82  0.82  0.76   0.72  4.4 0.75
## b2 400  0.85  0.85  0.81   0.76  4.3 0.78
## b3 400  0.89  0.89  0.86   0.82  4.3 0.80
## b4 400  0.83  0.83  0.77   0.74  4.3 0.76
## b5 400  0.85  0.85  0.80   0.76  4.3 0.75
## 
## Non missing response frequency for each item
##       1    2    3    4    5 miss
## b1 0.01 0.02 0.05 0.43 0.49    0
## b2 0.01 0.03 0.04 0.44 0.48    0
## b3 0.01 0.03 0.05 0.43 0.48    0
## b4 0.01 0.02 0.06 0.44 0.47    0
## b5 0.01 0.03 0.05 0.44 0.47    0
alpha(dulieu[,6:10])
## 
## Reliability analysis   
## Call: alpha(x = dulieu[, 6:10])
## 
##   raw_alpha std.alpha G6(smc) average_r S/N   ase mean   sd median_r
##       0.89      0.89    0.87      0.61 7.8 0.009  4.3 0.63     0.61
## 
##     95% confidence boundaries 
##          lower alpha upper
## Feldt     0.87  0.89   0.9
## Duhachek  0.87  0.89   0.9
## 
##  Reliability if an item is dropped:
##    raw_alpha std.alpha G6(smc) average_r S/N alpha se  var.r med.r
## c1      0.86      0.86    0.82      0.60 5.9   0.0117 0.0033  0.59
## c2      0.86      0.86    0.83      0.60 6.1   0.0115 0.0063  0.61
## c3      0.88      0.88    0.85      0.65 7.3   0.0098 0.0014  0.64
## c4      0.87      0.86    0.83      0.62 6.4   0.0110 0.0039  0.61
## c5      0.85      0.85    0.81      0.58 5.5   0.0125 0.0029  0.59
## 
##  Item statistics 
##      n raw.r std.r r.cor r.drop mean   sd
## c1 400  0.85  0.84  0.80   0.75  4.3 0.76
## c2 400  0.84  0.84  0.78   0.74  4.3 0.78
## c3 400  0.77  0.77  0.68   0.64  4.4 0.74
## c4 400  0.82  0.82  0.75   0.71  4.3 0.77
## c5 400  0.87  0.87  0.84   0.79  4.4 0.76
## 
## Non missing response frequency for each item
##       1    2    3    4    5 miss
## c1 0.00 0.03 0.05 0.45 0.46    0
## c2 0.01 0.03 0.05 0.44 0.47    0
## c3 0.00 0.03 0.04 0.45 0.47    0
## c4 0.00 0.04 0.05 0.44 0.47    0
## c5 0.00 0.03 0.05 0.43 0.49    0
alpha(dulieu[,11:15])
## 
## Reliability analysis   
## Call: alpha(x = dulieu[, 11:15])
## 
##   raw_alpha std.alpha G6(smc) average_r S/N   ase mean  sd median_r
##       0.86      0.86    0.84      0.56 6.3 0.011  4.3 0.6     0.56
## 
##     95% confidence boundaries 
##          lower alpha upper
## Feldt     0.84  0.86  0.88
## Duhachek  0.84  0.86  0.88
## 
##  Reliability if an item is dropped:
##    raw_alpha std.alpha G6(smc) average_r S/N alpha se   var.r med.r
## d1      0.84      0.84    0.80      0.57 5.3    0.013 0.00074  0.58
## d2      0.84      0.84    0.80      0.57 5.3    0.013 0.00219  0.56
## d3      0.84      0.84    0.80      0.56 5.1    0.013 0.00406  0.57
## d4      0.82      0.82    0.78      0.54 4.7    0.014 0.00255  0.54
## d5      0.83      0.83    0.79      0.55 4.9    0.014 0.00409  0.55
## 
##  Item statistics 
##      n raw.r std.r r.cor r.drop mean   sd
## d1 400  0.78  0.78  0.71   0.65  4.4 0.72
## d2 400  0.79  0.79  0.71   0.66  4.3 0.74
## d3 400  0.80  0.80  0.73   0.68  4.3 0.72
## d4 400  0.83  0.83  0.78   0.72  4.3 0.76
## d5 400  0.82  0.82  0.75   0.70  4.3 0.77
## 
## Non missing response frequency for each item
##       1    2    3    4    5 miss
## d1 0.01 0.02 0.04 0.47 0.46    0
## d2 0.01 0.03 0.04 0.47 0.46    0
## d3 0.00 0.03 0.04 0.47 0.46    0
## d4 0.01 0.03 0.04 0.47 0.46    0
## d5 0.00 0.04 0.05 0.44 0.47    0
alpha(dulieu[,16:20])
## 
## Reliability analysis   
## Call: alpha(x = dulieu[, 16:20])
## 
##   raw_alpha std.alpha G6(smc) average_r S/N  ase mean  sd median_r
##       0.87      0.87    0.85      0.58 6.8 0.01  4.4 0.6      0.6
## 
##     95% confidence boundaries 
##          lower alpha upper
## Feldt     0.85  0.87  0.89
## Duhachek  0.85  0.87  0.89
## 
##  Reliability if an item is dropped:
##    raw_alpha std.alpha G6(smc) average_r S/N alpha se  var.r med.r
## e1      0.84      0.84    0.80      0.57 5.3    0.013 0.0022  0.58
## e2      0.85      0.85    0.81      0.58 5.6    0.012 0.0023  0.60
## e3      0.84      0.84    0.80      0.57 5.2    0.013 0.0029  0.60
## e4      0.83      0.83    0.80      0.56 5.0    0.014 0.0031  0.55
## e5      0.86      0.86    0.82      0.60 6.0    0.012 0.0010  0.61
## 
##  Item statistics 
##      n raw.r std.r r.cor r.drop mean   sd
## e1 400  0.82  0.82  0.76   0.71  4.4 0.75
## e2 400  0.80  0.80  0.73   0.68  4.4 0.72
## e3 400  0.83  0.83  0.77   0.72  4.4 0.74
## e4 400  0.84  0.84  0.79   0.74  4.4 0.74
## e5 400  0.77  0.78  0.69   0.64  4.4 0.72
## 
## Non missing response frequency for each item
##       1    2    3    4    5 miss
## e1 0.01 0.01 0.04 0.44 0.49    0
## e2 0.00 0.02 0.05 0.44 0.48    0
## e3 0.01 0.02 0.04 0.41 0.52    0
## e4 0.01 0.02 0.03 0.43 0.50    0
## e5 0.01 0.02 0.03 0.48 0.46    0

3. Kiểm định cho EFA

KMO(dulieu)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = dulieu)
## Overall MSA =  0.87
## MSA for each item = 
##   b1   b2   b3   b4   b5   c1   c2   c3   c4   c5   d1   d2   d3   d4   d5   e1 
## 0.87 0.88 0.87 0.90 0.88 0.87 0.89 0.84 0.87 0.86 0.85 0.85 0.87 0.86 0.83 0.85 
##   e2   e3   e4   e5 
## 0.85 0.87 0.87 0.88
cortest.bartlett(dulieu)
## R was not square, finding R from data
## $chisq
## [1] 4307.808
## 
## $p.value
## [1] 0
## 
## $df
## [1] 190

4. Tìm nhân tố trong data

ev <- eigen(cor(dulieu)) # get eigenvalues
ev$values
##  [1] 5.4431403 2.9792218 2.8294598 2.4124059 0.7289517 0.6146803 0.5508855
##  [8] 0.5202780 0.4375583 0.4221368 0.3847385 0.3607920 0.3564208 0.3254425
## [15] 0.3032346 0.2991149 0.2891770 0.2687581 0.2516083 0.2219949
scree(dulieu, pc=FALSE)  # Use pc=FALSE for factor analysis

fa.parallel(dulieu, fa="fa")

## Parallel analysis suggests that the number of factors =  4  and the number of components =  NA

5. Ma trận xoay

fit <- factanal(dulieu, 4, rotation="varimax")

names(fit)
##  [1] "converged"    "loadings"     "uniquenesses" "correlation"  "criteria"    
##  [6] "factors"      "dof"          "method"       "rotmat"       "STATISTIC"   
## [11] "PVAL"         "n.obs"        "call"
print(fit, digits=2, cutoff=0.5, sort=TRUE)
## 
## Call:
## factanal(x = dulieu, factors = 4, rotation = "varimax")
## 
## Uniquenesses:
##   b1   b2   b3   b4   b5   c1   c2   c3   c4   c5   d1   d2   d3   d4   d5   e1 
## 0.41 0.32 0.23 0.39 0.35 0.33 0.38 0.54 0.41 0.26 0.49 0.46 0.46 0.37 0.41 0.40 
##   e2   e3   e4   e5 
## 0.45 0.39 0.35 0.50 
## 
## Loadings:
##    Factor1 Factor2 Factor3 Factor4
## b1  0.76                          
## b2  0.82                          
## b3  0.86                          
## b4  0.76                          
## b5  0.79                          
## c1          0.80                  
## c2          0.76                  
## c3          0.67                  
## c4          0.76                  
## c5          0.85                  
## e1                  0.77          
## e2                  0.74          
## e3                  0.77          
## e4                  0.79          
## e5                  0.69          
## d1                          0.70  
## d2                          0.69  
## d3                          0.72  
## d4                          0.77  
## d5                          0.76  
## 
##                Factor1 Factor2 Factor3 Factor4
## SS loadings       3.28    3.08    2.92    2.82
## Proportion Var    0.16    0.15    0.15    0.14
## Cumulative Var    0.16    0.32    0.46    0.61
## 
## Test of the hypothesis that 4 factors are sufficient.
## The chi square statistic is 251.21 on 116 degrees of freedom.
## The p-value is 5.55e-12

6. Tổng phương sai trích

pc  <- prcomp(dulieu,scale.=T) 
summary(pc)
## Importance of components:
##                           PC1    PC2    PC3    PC4     PC5     PC6     PC7
## Standard deviation     2.3331 1.7260 1.6821 1.5532 0.85379 0.78402 0.74222
## Proportion of Variance 0.2722 0.1490 0.1415 0.1206 0.03645 0.03073 0.02754
## Cumulative Proportion  0.2722 0.4211 0.5626 0.6832 0.71966 0.75039 0.77794
##                            PC8     PC9    PC10    PC11    PC12    PC13    PC14
## Standard deviation     0.72130 0.66148 0.64972 0.62027 0.60066 0.59701 0.57048
## Proportion of Variance 0.02601 0.02188 0.02111 0.01924 0.01804 0.01782 0.01627
## Cumulative Proportion  0.80395 0.82583 0.84694 0.86617 0.88421 0.90203 0.91831
##                           PC15    PC16    PC17    PC18    PC19   PC20
## Standard deviation     0.55067 0.54691 0.53775 0.51842 0.50161 0.4712
## Proportion of Variance 0.01516 0.01496 0.01446 0.01344 0.01258 0.0111
## Cumulative Proportion  0.93347 0.94842 0.96288 0.97632 0.98890 1.0000

7. Gía trị thang đo

dta <-fit$loadings
head(dta)
##       Factor1    Factor2    Factor3    Factor4
## b1 0.75819687 0.06146267 0.02435007 0.09414264
## b2 0.81768753 0.05311067 0.06986652 0.03528448
## b3 0.85616856 0.09329498 0.11002109 0.10815949
## b4 0.76196955 0.09231333 0.11034639 0.10758301
## b5 0.79107159 0.02436172 0.04305603 0.14513272
## c1 0.08099151 0.79708699 0.10833109 0.11221213