Tải dữ liệu

setwd("c:/vidu")
library(plspm)
library(foreign)
dulieu <-read.dta("EFA.dta")
attach(dulieu)
head(dulieu)
##   SAT1 SAT2 SAT3 SAT4 RAS1 RAS2 RAS3 RAS4 COM1 COM2 COM3 COM4 PAM1 PAM2 PAM3
## 1    4    1    4    3    3    3    2    3    2    2    3    2    4    4    5
## 2    5    5    4    5    1    2    3    5    5    5    5    5    2    2    2
## 3    5    5    5    5    4    4    5    4    4    4    3    4    4    4    5
## 4    4    4    5    4    3    4    3    3    3    4    3    4    5    5    5
## 5    3    3    3    4    4    4    3    4    5    5    5    5    3    5    3
## 6    2    2    2    2    5    5    2    5    3    4    3    3    4    4    3
##   PAM4 TAD1 TAD2 TAD3 TAD4
## 1    4    5    5    5    5
## 2    2    4    4    4    4
## 3    4    3    4    3    3
## 4    5    3    4    2    5
## 5    3    2    2    3    2
## 6    4    4    4    3    4

1. Tạo mối quan hệ của thang đo

A1 <- c(0,0,0,0,0)
A2 <- c(1,0,0,0,0)
A3 <- c(0,0,0,0,0)
A4 <- c(0,0,1,0,0)
A5 <- c(1,1,1,1,0)

B1 <-c(0,0,0,0)
B2 <-c(0,0,0,0)
B3 <-c(0,0,0,0)
B4 <-c(1,1,1,0)

A <-c(0,0,0)
B <-c(0,0,0)
C <-c(1,1,0)

matran1 <-rbind(A1, A2, A3, A4, A5)
matran2 <-rbind(A,B,C)
matran3 <-rbind(B1, B2, B3, B4)
matran1
##    [,1] [,2] [,3] [,4] [,5]
## A1    0    0    0    0    0
## A2    1    0    0    0    0
## A3    0    0    0    0    0
## A4    0    0    1    0    0
## A5    1    1    1    1    0
matran2
##   [,1] [,2] [,3]
## A    0    0    0
## B    0    0    0
## C    1    1    0

2. Đặt tên cột cho ma trận

colnames(matran1) = rownames(matran1)
colnames(matran2) = rownames(matran2)
colnames(matran3) = rownames(matran3)
matran1
##    A1 A2 A3 A4 A5
## A1  0  0  0  0  0
## A2  1  0  0  0  0
## A3  0  0  0  0  0
## A4  0  0  1  0  0
## A5  1  1  1  1  0
matran2
##   A B C
## A 0 0 0
## B 0 0 0
## C 1 1 0
matran3
##    B1 B2 B3 B4
## B1  0  0  0  0
## B2  0  0  0  0
## B3  0  0  0  0
## B4  1  1  1  0
innerplot(matran1) 

innerplot(matran2)

innerplot(matran3)

3. Chọn biến vào thang đo và phương pháp

#### Chọn biến theo matran
chonbien1 <-list(17:20, 9:12,13:16,1:4,5:8)
chonbien2 <-list(1:4,5:8,9:12)
chonbien3 <- list(1:4,5:8,9:12,13:16)


#### chọn phương pháp ước lượng
pp1 <- rep("A", 5)
pp2 <-rep("A",3)
pp3 <- rep("A",4)

4. Ước lượng PLS SEM

#plssem2 <- plspm(dulieu,matran2,chonbien2,modes=pp2, boot.val=TRUE)
#summary(plssem2)

plssem1 <- plspm(dulieu,matran1,chonbien1,modes=pp1, boot.val=TRUE)
summary(plssem1)
## PARTIAL LEAST SQUARES PATH MODELING (PLS-PM) 
## 
## ---------------------------------------------------------- 
## MODEL SPECIFICATION 
## 1   Number of Cases      150 
## 2   Latent Variables     5 
## 3   Manifest Variables   20 
## 4   Scale of Data        Standardized Data 
## 5   Non-Metric PLS       FALSE 
## 6   Weighting Scheme     centroid 
## 7   Tolerance Crit       1e-06 
## 8   Max Num Iters        100 
## 9   Convergence Iters    11 
## 10  Bootstrapping        TRUE 
## 11  Bootstrap samples    100 
## 
## ---------------------------------------------------------- 
## BLOCKS DEFINITION 
##     Block         Type   Size   Mode
## 1      A1    Exogenous      4      A
## 2      A2   Endogenous      4      A
## 3      A3    Exogenous      4      A
## 4      A4   Endogenous      4      A
## 5      A5   Endogenous      4      A
## 
## ---------------------------------------------------------- 
## BLOCKS UNIDIMENSIONALITY 
##     Mode  MVs  C.alpha  DG.rho  eig.1st  eig.2nd
## A1     A    4    0.865   0.909     2.86    0.566
## A2     A    4    0.904   0.933     3.11    0.474
## A3     A    4    0.861   0.906     2.83    0.547
## A4     A    4    0.868   0.911     2.88    0.605
## A5     A    4    0.832   0.890     2.68    0.656
## 
## ---------------------------------------------------------- 
## OUTER MODEL 
##             weight  loading  communality  redundancy
## A1                                                  
##   1 TAD1   0.15663    0.809        0.654    0.000000
##   1 TAD2   0.61426    0.925        0.856    0.000000
##   1 TAD3   0.00411    0.632        0.399    0.000000
##   1 TAD4   0.37149    0.814        0.662    0.000000
## A2                                                  
##   2 COM1  -0.16860    0.585        0.343    0.000951
##   2 COM2  -0.01402    0.628        0.395    0.001095
##   2 COM3  -0.05609    0.491        0.241    0.000669
##   2 COM4   1.15012    0.987        0.974    0.002703
## A3                                                  
##   3 PAM1   0.36666    0.913        0.833    0.000000
##   3 PAM2   0.08405    0.728        0.530    0.000000
##   3 PAM3   0.21772    0.763        0.582    0.000000
##   3 PAM4   0.49408    0.887        0.786    0.000000
## A4                                                  
##   4 SAT1   0.32808    0.944        0.892    0.010815
##   4 SAT2   0.20449    0.769        0.592    0.007176
##   4 SAT3   0.39799    0.910        0.827    0.010032
##   4 SAT4   0.23116    0.739        0.546    0.006623
## A5                                                  
##   5 RAS1   0.31277    0.912        0.832    0.048915
##   5 RAS2   0.37613    0.829        0.687    0.040414
##   5 RAS3   0.20093    0.708        0.501    0.029465
##   5 RAS4   0.32691    0.797        0.635    0.037350
## 
## ---------------------------------------------------------- 
## CROSSLOADINGS 
##                 A1        A2        A3       A4        A5
## A1                                                       
##   1 TAD1   0.80860   0.01413   0.03779  -0.0109  -0.03696
##   1 TAD2   0.92533   0.03781  -0.10774   0.0263  -0.16265
##   1 TAD3   0.63165   0.00459   0.01019  -0.0022   0.00312
##   1 TAD4   0.81389   0.07326   0.03769   0.0123  -0.04816
## A2                                                       
##   2 COM1  -0.01486   0.58545  -0.11642  -0.0225   0.00397
##   2 COM2  -0.02075   0.62831  -0.15870  -0.0910  -0.01899
##   2 COM3  -0.01311   0.49090  -0.14836  -0.0771  -0.00675
##   2 COM4   0.04273   0.98690  -0.07062  -0.0800  -0.08546
## A3                                                       
##   3 PAM1  -0.05675  -0.03773   0.91272   0.0899   0.02549
##   3 PAM2  -0.05433   0.02253   0.72824   0.0630  -0.03651
##   3 PAM3   0.03515   0.01451   0.76301   0.0394   0.02912
##   3 PAM4  -0.05768  -0.08553   0.88651   0.1281   0.02750
## A4                                                       
##   4 SAT1   0.00226  -0.03703   0.13122   0.9444  -0.13018
##   4 SAT2   0.15691  -0.03895   0.00497   0.7693  -0.15797
##   4 SAT3  -0.03227  -0.10190   0.13624   0.9096  -0.18084
##   4 SAT4  -0.00424  -0.09499   0.05116   0.7391  -0.13299
## A5                                                       
##   5 RAS1  -0.07019  -0.08761   0.02615  -0.1607   0.91219
##   5 RAS2  -0.07314  -0.13244   0.03736  -0.1715   0.82914
##   5 RAS3  -0.07521  -0.09257  -0.01582  -0.0695   0.70797
##   5 RAS4  -0.18049  -0.00763   0.02188  -0.1499   0.79709
## 
## ---------------------------------------------------------- 
## INNER MODEL 
## $A2
##              Estimate   Std. Error     t value   Pr(>|t|)
## Intercept   -2.53e-16       0.0821   -3.08e-15      1.000
## A1           5.27e-02       0.0821    6.42e-01      0.522
## 
## $A4
##             Estimate   Std. Error    t value   Pr(>|t|)
## Intercept   9.93e-17       0.0817   1.22e-15       1.00
## A3          1.10e-01       0.0817   1.35e+00       0.18
## 
## $A5
##              Estimate   Std. Error     t value   Pr(>|t|)
## Intercept    1.74e-16       0.0806    2.16e-15      1.000
## A1          -1.13e-01       0.0808   -1.40e+00      0.165
## A2          -1.06e-01       0.0810   -1.31e+00      0.193
## A3           3.63e-02       0.0812    4.47e-01      0.655
## A4          -1.88e-01       0.0813   -2.32e+00      0.022
## 
## ---------------------------------------------------------- 
## CORRELATIONS BETWEEN LVs 
##          A1       A2       A3       A4       A5
## A1   1.0000   0.0527  -0.0462   0.0190  -0.1236
## A2   0.0527   1.0000  -0.0510  -0.0826  -0.0983
## A3  -0.0462  -0.0510   1.0000   0.1101   0.0262
## A4   0.0190  -0.0826   0.1101   1.0000  -0.1777
## A5  -0.1236  -0.0983   0.0262  -0.1777   1.0000
## 
## ---------------------------------------------------------- 
## SUMMARY INNER MODEL 
##           Type       R2  Block_Communality  Mean_Redundancy    AVE
## A1   Exogenous  0.00000              0.643          0.00000  0.643
## A2  Endogenous  0.00277              0.488          0.00135  0.488
## A3   Exogenous  0.00000              0.683          0.00000  0.683
## A4  Endogenous  0.01213              0.714          0.00866  0.714
## A5  Endogenous  0.05879              0.664          0.03904  0.664
## 
## ---------------------------------------------------------- 
## GOODNESS-OF-FIT 
## [1]  0.1252
## 
## ---------------------------------------------------------- 
## TOTAL EFFECTS 
##     relationships   direct  indirect    total
## 1        A1 -> A2   0.0527   0.00000   0.0527
## 2        A1 -> A3   0.0000   0.00000   0.0000
## 3        A1 -> A4   0.0000   0.00000   0.0000
## 4        A1 -> A5  -0.1127  -0.00559  -0.1183
## 5        A2 -> A3   0.0000   0.00000   0.0000
## 6        A2 -> A4   0.0000   0.00000   0.0000
## 7        A2 -> A5  -0.1061   0.00000  -0.1061
## 8        A3 -> A4   0.1101   0.00000   0.1101
## 9        A3 -> A5   0.0363  -0.02074   0.0156
## 10       A4 -> A5  -0.1883   0.00000  -0.1883
## 
## --------------------------------------------------------- 
## BOOTSTRAP VALIDATION 
## weights 
##          Original  Mean.Boot  Std.Error  perc.025  perc.975
## A1-TAD1   0.15663      0.265     0.2148   -0.3592     0.566
## A1-TAD2   0.61426      0.357     0.3740   -0.4312     1.012
## A1-TAD3   0.00411      0.181     0.2497   -0.3908     0.675
## A1-TAD4   0.37149      0.253     0.2414   -0.3953     0.649
## A2-COM1  -0.16860      0.241     0.1986   -0.2088     0.601
## A2-COM2  -0.01402      0.276     0.2856   -0.2242     0.749
## A2-COM3  -0.05609      0.258     0.1762   -0.0982     0.540
## A2-COM4   1.15012      0.297     0.2340   -0.0995     0.765
## A3-PAM1   0.36666      0.321     0.1414    0.0847     0.539
## A3-PAM2   0.08405      0.244     0.1995   -0.1286     0.582
## A3-PAM3   0.21772      0.198     0.2181   -0.2370     0.509
## A3-PAM4   0.49408      0.363     0.2389   -0.0459     0.803
## A4-SAT1   0.32808      0.303     0.0861    0.0950     0.427
## A4-SAT2   0.20449      0.249     0.1243    0.0517     0.488
## A4-SAT3   0.39799      0.350     0.1045    0.1243     0.536
## A4-SAT4   0.23116      0.253     0.1027    0.0663     0.418
## A5-RAS1   0.31277      0.318     0.0563    0.2196     0.413
## A5-RAS2   0.37613      0.328     0.0906    0.1536     0.473
## A5-RAS3   0.20093      0.252     0.0722    0.1345     0.385
## A5-RAS4   0.32691      0.310     0.1081    0.1150     0.529
## 
## loadings 
##          Original  Mean.Boot  Std.Error  perc.025  perc.975
## A1-TAD1     0.809      0.856     0.1212    0.5231     0.958
## A1-TAD2     0.925      0.760     0.2634   -0.0459     0.977
## A1-TAD3     0.632      0.755     0.1545    0.2967     0.950
## A1-TAD4     0.814      0.735     0.1614    0.3576     0.929
## A2-COM1     0.585      0.880     0.1152    0.5163     0.967
## A2-COM2     0.628      0.808     0.1930    0.4407     0.964
## A2-COM3     0.491      0.838     0.1137    0.5684     0.960
## A2-COM4     0.987      0.812     0.1706    0.2967     0.970
## A3-PAM1     0.913      0.885     0.0874    0.7495     0.951
## A3-PAM2     0.728      0.768     0.1644    0.4178     0.918
## A3-PAM3     0.763      0.729     0.1754    0.3354     0.931
## A3-PAM4     0.887      0.820     0.1058    0.5785     0.978
## A4-SAT1     0.944      0.924     0.0487    0.7871     0.965
## A4-SAT2     0.769      0.793     0.0910    0.6021     0.922
## A4-SAT3     0.910      0.879     0.0675    0.6939     0.958
## A4-SAT4     0.739      0.757     0.0887    0.5375     0.889
## A5-RAS1     0.912      0.918     0.0262    0.8587     0.947
## A5-RAS2     0.829      0.800     0.0770    0.6221     0.897
## A5-RAS3     0.708      0.745     0.0791    0.5621     0.871
## A5-RAS4     0.797      0.777     0.0827    0.5536     0.907
## 
## paths 
##           Original  Mean.Boot  Std.Error  perc.025  perc.975
## A1 -> A2    0.0527   -0.00621     0.1165    -0.165    0.1669
## A1 -> A5   -0.1127   -0.07438     0.1317    -0.262    0.1895
## A2 -> A5   -0.1061   -0.05585     0.1155    -0.215    0.1674
## A3 -> A4    0.1101    0.10642     0.1142    -0.159    0.2901
## A3 -> A5    0.0363    0.03920     0.1053    -0.148    0.2017
## A4 -> A5   -0.1883   -0.18137     0.0718    -0.302   -0.0393
## 
## rsq 
##     Original  Mean.Boot  Std.Error  perc.025  perc.975
## A2   0.00277     0.0135     0.0116   0.00181    0.0405
## A4   0.01213     0.0242     0.0224   0.00144    0.0848
## A5   0.05879     0.0874     0.0328   0.03694    0.1533
## 
## total.efs 
##           Original  Mean.Boot  Std.Error  perc.025  perc.975
## A1 -> A2    0.0527   -0.00621     0.1165    -0.165    0.1669
## A1 -> A3    0.0000    0.00000     0.0000     0.000    0.0000
## A1 -> A4    0.0000    0.00000     0.0000     0.000    0.0000
## A1 -> A5   -0.1183   -0.07648     0.1303    -0.254    0.2052
## A2 -> A3    0.0000    0.00000     0.0000     0.000    0.0000
## A2 -> A4    0.0000    0.00000     0.0000     0.000    0.0000
## A2 -> A5   -0.1061   -0.05585     0.1155    -0.215    0.1674
## A3 -> A4    0.1101    0.10642     0.1142    -0.159    0.2901
## A3 -> A5    0.0156    0.01928     0.1032    -0.167    0.1545
## A4 -> A5   -0.1883   -0.18137     0.0718    -0.302   -0.0393
plssem1
## Partial Least Squares Path Modeling (PLS-PM) 
## ---------------------------------------------
##    NAME             DESCRIPTION
## 1  $outer_model     outer model
## 2  $inner_model     inner model
## 3  $path_coefs      path coefficients matrix
## 4  $scores          latent variable scores
## 5  $crossloadings   cross-loadings
## 6  $inner_summary   summary inner model
## 7  $effects         total effects
## 8  $unidim          unidimensionality
## 9  $gof             goodness-of-fit
## 10 $boot            bootstrap results
## 11 $data            data matrix
## ---------------------------------------------
## You can also use the function 'summary'
#plssem3<- plspm(dulieu,matran3,chonbien3,modes=pp3, boot.val=TRUE)
#summary(plssem3)

Đo lường chất lượng thang đo

plssem1$unidim
##    Mode MVs   C.alpha    DG.rho  eig.1st   eig.2nd
## A1    A   4 0.8648023 0.9087984 2.858275 0.5658773
## A2    A   4 0.9035032 0.9328096 3.106412 0.4744276
## A3    A   4 0.8610772 0.9062488 2.832023 0.5466159
## A4    A   4 0.8680266 0.9106932 2.876900 0.6047636
## A5    A   4 0.8324504 0.8895621 2.678729 0.6562608
### Alpha > 0.7 ok
### Dillon-Goldstein’s rho > 0.7 ( Tốt hơn Alpha)
### First eigenvalue  1st >1 và 2nd <1  là ok

Mô hình outer model

plssem1$outer_model
##    name block       weight   loading communality   redundancy
## 1  TAD1    A1  0.156629338 0.8086021   0.6538373 0.0000000000
## 2  TAD2    A1  0.614264467 0.9253320   0.8562393 0.0000000000
## 3  TAD3    A1  0.004113243 0.6316542   0.3989871 0.0000000000
## 4  TAD4    A1  0.371491590 0.8138878   0.6624133 0.0000000000
## 5  COM1    A2 -0.168601801 0.5854492   0.3427508 0.0009510467
## 6  COM2    A2 -0.014021287 0.6283134   0.3947778 0.0010954084
## 7  COM3    A2 -0.056092498 0.4909046   0.2409874 0.0006686789
## 8  COM4    A2  1.150118505 0.9869015   0.9739745 0.0027025325
## 9  PAM1    A3  0.366664683 0.9127168   0.8330519 0.0000000000
## 10 PAM2    A3  0.084054582 0.7282363   0.5303281 0.0000000000
## 11 PAM3    A3  0.217723774 0.7630113   0.5821862 0.0000000000
## 12 PAM4    A3  0.494075752 0.8865072   0.7858950 0.0000000000
## 13 SAT1    A4  0.328083995 0.9444138   0.8919174 0.0108153258
## 14 SAT2    A4  0.204491027 0.7692745   0.5917833 0.0071759213
## 15 SAT3    A4  0.397990253 0.9095813   0.8273382 0.0100322426
## 16 SAT4    A4  0.231155928 0.7390626   0.5462136 0.0066233459
## 17 RAS1    A5  0.312768872 0.9121904   0.8320914 0.0489153278
## 18 RAS2    A5  0.376128781 0.8291449   0.6874812 0.0404142764
## 19 RAS3    A5  0.200927766 0.7079748   0.5012284 0.0294652135
## 20 RAS4    A5  0.326912347 0.7970888   0.6353506 0.0373497241
### loading > 0.7 ok 
plot(plssem1, what = "loadings")

plot(plssem1, what = "weights")


### Mô hình CrossLoadin

```r
plssem1$crossloadings
##    name block           A1           A2           A3           A4           A5
## 1  TAD1    A1  0.808602075  0.014127337  0.037790605 -0.010944415 -0.036958805
## 2  TAD2    A1  0.925332010  0.037814667 -0.107744657  0.026318096 -0.162648643
## 3  TAD3    A1  0.631654218  0.004592738  0.010193206 -0.002196379  0.003115667
## 4  TAD4    A1  0.813887796  0.073261449  0.037688622  0.012271937 -0.048163786
## 5  COM1    A2 -0.014862196  0.585449236 -0.116417609 -0.022453003  0.003974727
## 6  COM2    A2 -0.020754344  0.628313443 -0.158696604 -0.090968279 -0.018994837
## 7  COM3    A2 -0.013108500  0.490904642 -0.148361784 -0.077109953 -0.006754038
## 8  COM4    A2  0.042729319  0.986901455 -0.070615937 -0.080003701 -0.085455263
## 9  PAM1    A3 -0.056751308 -0.037729106  0.912716756  0.089909365  0.025494605
## 10 PAM2    A3 -0.054332485  0.022528314  0.728236281  0.062983078 -0.036514062
## 11 PAM3    A3  0.035150251  0.014509887  0.763011284  0.039412483  0.029118702
## 12 PAM4    A3 -0.057681669 -0.085533824  0.886507192  0.128069730  0.027497526
## 13 SAT1    A4  0.002258166 -0.037027203  0.131218203  0.944413802 -0.130177056
## 14 SAT2    A4  0.156907453 -0.038953705  0.004970545  0.769274530 -0.157965115
## 15 SAT3    A4 -0.032274814 -0.101900251  0.136243857  0.909581323 -0.180844704
## 16 SAT4    A4 -0.004239699 -0.094993520  0.051164756  0.739062627 -0.132986145
## 17 RAS1    A5 -0.070191489 -0.087606514  0.026145669 -0.160658398  0.912190416
## 18 RAS2    A5 -0.073136231 -0.132438943  0.037356798 -0.171495526  0.829144882
## 19 RAS3    A5 -0.075208299 -0.092567761 -0.015818923 -0.069530248  0.707974829
## 20 RAS4    A5 -0.180488598 -0.007630546  0.021884870 -0.149894968  0.797088824
### Vẽ đồ thị
library(ggplot2)
## 
## Attaching package: 'ggplot2'
## The following object is masked from 'package:plspm':
## 
##     alpha
library(reshape)
datacross = melt(plssem1$crossloadings, id.vars = c("name", "block"),
variable_name = "LV")

ggplot(data = datacross,
aes(x = name, y = value, fill = block)) +
# add horizontal reference lines
geom_hline(yintercept = 0, color = "gray75") +
geom_hline(yintercept = 0.5, color = "gray70", linetype = 2) +
# indicate the use of car-charts
geom_bar(stat = 'identity', position = 'dodge') +
# panel display (i.e. faceting)
facet_wrap(block ~ LV) +
# tweaking some grahical elements
theme(axis.text.x = element_text(angle = 90),
line = element_blank(),
plot.title = element_text(size = 12)) +
# add title
ggtitle("Crossloadings")

Chạy inner model

### pvalue < 0.05 có ý nghĩa thống kê
plssem1$inner_model
## $A2
##                Estimate Std. Error       t value  Pr(>|t|)
## Intercept -2.528784e-16 0.08208537 -3.080675e-15 1.0000000
## A1         5.267586e-02 0.08208537  6.417205e-01 0.5220473
## 
## $A4
##               Estimate Std. Error      t value  Pr(>|t|)
## Intercept 9.929620e-17  0.0816996 1.215382e-15 1.0000000
## A3        1.101178e-01  0.0816996 1.347838e+00 0.1797701
## 
## $A5
##                Estimate Std. Error       t value   Pr(>|t|)
## Intercept  1.741867e-16 0.08056756  2.161996e-15 1.00000000
## A1        -1.127322e-01 0.08078889 -1.395392e+00 0.16503110
## A2        -1.060793e-01 0.08102829 -1.309164e+00 0.19254963
## A3         3.631995e-02 0.08122086  4.471751e-01 0.65541590
## A4        -1.883488e-01 0.08133814 -2.315627e+00 0.02198095
plot(plssem1)

### R2 < 0.3 xấu, R2 <0.5 được, R2 > 0.5 tốt
### AVE > 0.5
plssem1$inner_summary
##          Type          R2 Block_Communality Mean_Redundancy       AVE
## A1  Exogenous 0.000000000         0.6428693     0.000000000 0.6428693
## A2 Endogenous 0.002774747         0.4881226     0.001354417 0.4881226
## A3  Exogenous 0.000000000         0.6828653     0.000000000 0.6828653
## A4 Endogenous 0.012125927         0.7143131     0.008661709 0.7143131
## A5 Endogenous 0.058786006         0.6640379     0.039036135 0.6640379

Mức độ giải thích mô hình Gof

plssem1$gof
## [1] 0.125226
### Gof > 0.7 là tốt