FloSchuberth / cSEM

Composite-based SEM
https://floschuberth.github.io/cSEM/
GNU General Public License v3.0
28 stars 8 forks source link

VIF's not reported #448

Closed srk7774 closed 3 years ago

srk7774 commented 3 years ago

VIF's are not reported. Also, please cross check the values in fornell-lacker in smartpls.

library(readr)
#> Warning: package 'readr' was built under R version 4.0.5
demo_1 <- read_csv("https://raw.githubusercontent.com/srk7774/data/master/demo_1_nk.csv")
#> Rows: 243 Columns: 27
#> -- Column specification --------------------------------------------------------
#> Delimiter: ","
#> dbl (27): age, prof, income, gender, resi, quali, quality1, quality2, qualit...
#> 
#> i Use `spec()` to retrieve the full column specification for this data.
#> i Specify the column types or set `show_col_types = FALSE` to quiet this message.
model <- "
# Structural model
sat ~ qual
# (Reflective) measurement model
qual =~ quality1 + quality2 + quality3 + quality4 + quality5 + quality6
sat =~ sat1 + sat2 + sat3 + sat4
"
## Estimate
library(cSEM)
#> Warning: package 'cSEM' was built under R version 4.0.5
#> 
#> Attaching package: 'cSEM'
#> The following object is masked from 'package:stats':
#> 
#>     predict
out <- csem(demo_1, model, 
            .approach_weights = "PLS-PM",
            .disattenuate = TRUE,
            .resample_method = 'bootstrap')
assess(out)
#> ________________________________________________________________________________
#> 
#>  Construct        AVE           R2          R2_adj    
#>  qual           0.5802          NA            NA      
#>  sat            0.5991        0.4046        0.4021    
#> 
#> -------------- Common (internal consistency) reliability estimates -------------
#> 
#>  Construct Cronbachs_alpha   Joereskogs_rho   Dijkstra-Henselers_rho_A 
#>  qual        0.8946           0.8913                0.8981          
#>  sat         0.8520           0.8558                0.8620          
#> 
#> ----------- Alternative (internal consistency) reliability estimates -----------
#> 
#>  Construct       RhoC         RhoC_mm    RhoC_weighted
#>  qual           0.8913        0.8761        0.8981    
#>  sat            0.8558        0.8587        0.8620    
#> 
#>  Construct  RhoC_weighted_mm     RhoT      RhoT_weighted
#>  qual           0.8981        0.8946        0.8968    
#>  sat            0.8620        0.8520        0.8427    
#> 
#> --------------------------- Distance and fit measures --------------------------
#> 
#>  Geodesic distance           = 0.1448631
#>  Squared Euclidian distance  = 0.2236872
#>  ML distance                 = 0.7148407
#> 
#>  Chi_square     = 172.9915
#>  Chi_square_df  = 5.087984
#>  CFI            = 0.8948454
#>  CN             = 68.99049
#>  GFI            = 0.843506
#>  IFI            = 0.8957133
#>  NFI            = 0.8734316
#>  NNFI           = 0.8608248
#>  RMSEA          = 0.1299711
#>  RMS_theta      = 0.0730421
#>  SRMR           = 0.06377335
#> 
#>  Degrees of freedom    = 34
#> 
#> --------------------------- Model selection criteria ---------------------------
#> 
#>  Construct        AIC          AICc          AICu     
#>  sat           -122.9953     122.1051      -120.9871  
#> 
#>  Construct        BIC           FPE           GM      
#>  sat           -116.0092      0.6028       252.9861   
#> 
#>  Construct        HQ            HQc       Mallows_Cp  
#>  sat           -120.1814     -120.0674      3.0000    
#> 
#> ----------------------- Variance inflation factors (VIFs) ----------------------
#> 
#> -------------------------- Effect sizes (Cohen's f^2) --------------------------
#> 
#>   Dependent construct: 'sat'
#> 
#>  Independent construct       f^2    
#>  qual                      0.6795   
#> 
#> ------------------------------ Validity assessment -----------------------------
#> 
#>  Heterotrait-monotrait ratio of correlations matrix (HTMT matrix)
#> 
#>           qual sat
#> qual 1.0000000   0
#> sat  0.6318983   1
#> 
#> 
#>  Fornell-Larcker matrix
#> 
#>           qual       sat
#> qual 0.5802354 0.4045816
#> sat  0.4045816 0.5990676
#> 
#> 
#> ------------------------------------ Effects -----------------------------------
#> 
#> Estimated total effects:
#> ========================
#>   Total effect    Estimate  Std. error   t-stat.   p-value
#>   sat ~ qual        0.6361      0.0456   13.9444    0.0000
#> ________________________________________________________________________________

#latent variable correlation
cor(out$Estimates$Construct_scores[,1], 
    out$Estimates$Construct_scores[,2])
#> [1] 0.5596549

Created on 2021-08-26 by the reprex package (v2.0.1)

FloSchuberth commented 3 years ago

That VIFs are not reported is strange. @Manuel: can you please check this.? For that reason, could you please send me your R code with the data attached.

Considering the FL, it is correctly calculated. You calculated the squared correlation between the composite scores, i.e., the composites. However, since you specified your constructs as common factors, we report the squared correlation between the latent variables.

Best regards and many thanks again, Florian


Von: srk7774 @.***> Gesendet: Mittwoch, 25. August 2021 20:35:19 An: M-E-Rademaker/cSEM Cc: Subscribed Betreff: [M-E-Rademaker/cSEM] VIF's not not reported (#448)

VIF's are not reported. Also, cross check the values in fornell-lacker in smartpls.

library(readr)

> Warning: package 'readr' was built under R version 4.0.5

demo_1 <- read_csv("https://raw.githubusercontent.com/srk7774/data/master/demo_1_nk.csv")

> Rows: 243 Columns: 27

> -- Column specification --------------------------------------------------------

> Delimiter: ","

> dbl (27): age, prof, income, gender, resi, quali, quality1, quality2, qualit...

>

> i Use spec() to retrieve the full column specification for this data.

> i Specify the column types or set show_col_types = FALSE to quiet this message.

model <- "

Structural model

sat ~ qual

(Reflective) measurement model

qual =~ quality1 + quality2 + quality3 + quality4 + quality5 + quality6 sat =~ sat1 + sat2 + sat3 + sat4 "

Estimate

library(cSEM)

> Warning: package 'cSEM' was built under R version 4.0.5

>

> Attaching package: 'cSEM'

> The following object is masked from 'package:stats':

>

> predict

out <- csem(demo_1, model, .approach_weights = "PLS-PM", .disattenuate = TRUE, .resample_method = 'bootstrap') assess(out)

> ____

>

> Construct AVE R2 R2_adj

> qual 0.5802 NA NA

> sat 0.5991 0.4046 0.4021

>

> -------------- Common (internal consistency) reliability estimates -------------

>

> Construct Cronbachs_alpha Joereskogs_rho Dijkstra-Henselers_rho_A

> qual 0.8946 0.8913 0.8981

> sat 0.8520 0.8558 0.8620

>

> ----------- Alternative (internal consistency) reliability estimates -----------

>

> Construct RhoC RhoC_mm RhoC_weighted

> qual 0.8913 0.8761 0.8981

> sat 0.8558 0.8587 0.8620

>

> Construct RhoC_weighted_mm RhoT RhoT_weighted

> qual 0.8981 0.8946 0.8968

> sat 0.8620 0.8520 0.8427

>

> --------------------------- Distance and fit measures --------------------------

>

> Geodesic distance = 0.1448631

> Squared Euclidian distance = 0.2236872

> ML distance = 0.7148407

>

> Chi_square = 172.9915

> Chi_square_df = 5.087984

> CFI = 0.8948454

> CN = 68.99049

> GFI = 0.843506

> IFI = 0.8957133

> NFI = 0.8734316

> NNFI = 0.8608248

> RMSEA = 0.1299711

> RMS_theta = 0.0730421

> SRMR = 0.06377335

>

> Degrees of freedom = 34

>

> --------------------------- Model selection criteria ---------------------------

>

> Construct AIC AICc AICu

> sat -122.9953 122.1051 -120.9871

>

> Construct BIC FPE GM

> sat -116.0092 0.6028 252.9861

>

> Construct HQ HQc Mallows_Cp

> sat -120.1814 -120.0674 3.0000

>

> ----------------------- Variance inflation factors (VIFs) ----------------------

>

> -------------------------- Effect sizes (Cohen's f^2) --------------------------

>

> Dependent construct: 'sat'

>

> Independent construct f^2

> qual 0.6795

>

> ------------------------------ Validity assessment -----------------------------

>

> Heterotrait-monotrait ratio of correlations matrix (HTMT matrix)

>

> qual sat

> qual 1.0000000 0

> sat 0.6318983 1

>

>

> Fornell-Larcker matrix

>

> qual sat

> qual 0.5802354 0.4045816

> sat 0.4045816 0.5990676

>

>

> ------------------------------------ Effects -----------------------------------

>

> Estimated total effects:

> ========================

> Total effect Estimate Std. error t-stat. p-value

> sat ~ qual 0.6361 0.0456 13.9444 0.0000

> ____

latent variable correlation

cor(out$Estimates$Construct_scores[,1], out$Estimates$Construct_scores[,2])

> [1] 0.5596549

Created on 2021-08-26 by the reprex packagehttps://reprex.tidyverse.org (v2.0.1)

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://github.com/M-E-Rademaker/cSEM/issues/448, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AD5KRRALYQJV22C4S4QWG5TT6UZWPANCNFSM5CZW7JNQ. Triage notifications on the go with GitHub Mobile for iOShttps://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Androidhttps://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email.

srk7774 commented 3 years ago

The reprex contained the dataset as well as code.

On Thu, 26 Aug 2021, 00:35 FloSchuberth, @.***> wrote:

That VIFs are not reported is strange. @Manuel: can you please check this.? For that reason, could you please send me your R code with the data attached.

Considering the FL, it is correctly calculated. You calculated the squared correlation between the composite scores, i.e., the composites. However, since you specified your constructs as common factors, we report the squared correlation between the latent variables.

Best regards and many thanks again, Florian


Von: srk7774 @.***> Gesendet: Mittwoch, 25. August 2021 20:35:19 An: M-E-Rademaker/cSEM Cc: Subscribed Betreff: [M-E-Rademaker/cSEM] VIF's not not reported (#448)

VIF's are not reported. Also, cross check the values in fornell-lacker in smartpls.

library(readr)

> Warning: package 'readr' was built under R version 4.0.5

demo_1 <- read_csv(" https://raw.githubusercontent.com/srk7774/data/master/demo_1_nk.csv")

> Rows: 243 Columns: 27

> -- Column specification


> Delimiter: ","

> dbl (27): age, prof, income, gender, resi, quali, quality1, quality2,

qualit...

>

> i Use spec() to retrieve the full column specification for this data.

> i Specify the column types or set show_col_types = FALSE to quiet

this message. model <- "

Structural model

sat ~ qual

(Reflective) measurement model

qual =~ quality1 + quality2 + quality3 + quality4 + quality5 + quality6 sat =~ sat1 + sat2 + sat3 + sat4 "

Estimate

library(cSEM)

> Warning: package 'cSEM' was built under R version 4.0.5

>

> Attaching package: 'cSEM'

> The following object is masked from 'package:stats':

>

> predict

out <- csem(demo_1, model, .approach_weights = "PLS-PM", .disattenuate = TRUE, .resample_method = 'bootstrap') assess(out)

>


>

> Construct AVE R2 R2_adj

> qual 0.5802 NA NA

> sat 0.5991 0.4046 0.4021

>

> -------------- Common (internal consistency) reliability estimates


>

> Construct Cronbachs_alpha Joereskogs_rho Dijkstra-Henselers_rho_A

> qual 0.8946 0.8913 0.8981

> sat 0.8520 0.8558 0.8620

>

> ----------- Alternative (internal consistency) reliability estimates


>

> Construct RhoC RhoC_mm RhoC_weighted

> qual 0.8913 0.8761 0.8981

> sat 0.8558 0.8587 0.8620

>

> Construct RhoC_weighted_mm RhoT RhoT_weighted

> qual 0.8981 0.8946 0.8968

> sat 0.8620 0.8520 0.8427

>

> --------------------------- Distance and fit measures


>

> Geodesic distance = 0.1448631

> Squared Euclidian distance = 0.2236872

> ML distance = 0.7148407

>

> Chi_square = 172.9915

> Chi_square_df = 5.087984

> CFI = 0.8948454

> CN = 68.99049

> GFI = 0.843506

> IFI = 0.8957133

> NFI = 0.8734316

> NNFI = 0.8608248

> RMSEA = 0.1299711

> RMS_theta = 0.0730421

> SRMR = 0.06377335

>

> Degrees of freedom = 34

>

> --------------------------- Model selection criteria


>

> Construct AIC AICc AICu

> sat -122.9953 122.1051 -120.9871

>

> Construct BIC FPE GM

> sat -116.0092 0.6028 252.9861

>

> Construct HQ HQc Mallows_Cp

> sat -120.1814 -120.0674 3.0000

>

> ----------------------- Variance inflation factors (VIFs)


>

> -------------------------- Effect sizes (Cohen's f^2)


>

> Dependent construct: 'sat'

>

> Independent construct f^2

> qual 0.6795

>

> ------------------------------ Validity assessment


>

> Heterotrait-monotrait ratio of correlations matrix (HTMT matrix)

>

> qual sat

> qual 1.0000000 0

> sat 0.6318983 1

>

>

> Fornell-Larcker matrix

>

> qual sat

> qual 0.5802354 0.4045816

> sat 0.4045816 0.5990676

>

>

> ------------------------------------ Effects


>

> Estimated total effects:

> ========================

> Total effect Estimate Std. error t-stat. p-value

> sat ~ qual 0.6361 0.0456 13.9444 0.0000

>


latent variable correlation

cor(out$Estimates$Construct_scores[,1], out$Estimates$Construct_scores[,2])

> [1] 0.5596549

Created on 2021-08-26 by the reprex packagehttps://reprex.tidyverse.org (v2.0.1)

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub< https://github.com/M-E-Rademaker/cSEM/issues/448>, or unsubscribe< https://github.com/notifications/unsubscribe-auth/AD5KRRALYQJV22C4S4QWG5TT6UZWPANCNFSM5CZW7JNQ

. Triage notifications on the go with GitHub Mobile for iOS< https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675> or Android< https://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email .

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/M-E-Rademaker/cSEM/issues/448#issuecomment-905798011, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACXL2BG73NO74YRJQJNDLGLT6U5IHANCNFSM5CZW7JNQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email .

FloSchuberth commented 3 years ago

Dear @srk7774,

sorry I missed the import of the data in your code above.

I had a look at the VIF issue. The reason why it is not reported is because you have only one independent variable in your model. In this case, the VIF is not defined. The VIF is calculated as 1/(1-R^2_j) where R^2_j is the coefficient of determination of the regression from the independent variable j on the other independent variables from that equation. Since in your structural model there is only one independent variable, you cannot calculate R^2_j. So it is not a bug in cSEM, it is rather that considering the VIF does not make much sense in your situation because in general it tells how much the SEs of the path coefficient are inflated compared to a situation in which all independent variables are orthogonal to each other. Since you have only one independent variable that comparison is obsolete.

HTH

Best regards, Florian

srk7774 commented 3 years ago

I think smartpls reports two types of vif's. One for the measurement model and one for the structural model. In this case, they are not reported because they are reflective and meaningless. But If one uses formative constructs, vif's for items are meaningful. In any case, a notification is helpful for the users when vif's are not calculated. https://forum.smartpls.com/viewtopic.php?t=26669

FloSchuberth commented 3 years ago

Yes we also report the two types of VIF. However, we only report the VIF for mode B when composites are specified. You can very this using the code below.

model <- "

Structural model

sat ~ qual

(Reflective) measurement model

qual <~ quality1 + quality2 + quality3 + quality4 + quality5 + quality6 sat =~ sat1 + sat2 + sat3 + sat4 "

Estimate

library(cSEM)

> Warning: package 'cSEM' was built under R version 4.0.5

>

> Attaching package: 'cSEM'

> The following object is masked from 'package:stats':

>

> predict

out <- csem(demo_1, model, .approach_weights = "PLS-PM", .disattenuate = TRUE, .resample_method = 'bootstrap') assess(out)

Yes I agree, we could add a notification when VIFs are not calculated.

srk7774 commented 3 years ago

The confusion regarding the Fornell lacker criteria is now clear. In CB-SEM, most studies report the Square root of AVE on diagonal and inter construct correlations in the lower triangle matrix. I found that in PLS, the AVE's and squares of the inter construct correlations are reported. https://link.springer.com/content/pdf/10.1007/s11747-014-0403-8.pdf

Followup: Do cSEM reports cross-loading matrix?

FloSchuberth commented 3 years ago

Yes true, we instead report the AVE and the squared correlations between the latent variables. To our opinion, the comparison is more straightforward as you do not need to care about negative construct correlations.

No we do not calculate the cross loadings because in contrast to CB-SEM these are no model parameters. In PLS-PM, it is not possible to specify cross-loadings, they are just the correlations between indicators and the composite scores. However, if you really want to use them (I advise against) you can obtain them as follows:

out$Estimates$Weight_estimates%*%out$Estimates$Indicator_VCV quality1 quality2 quality3 quality4 quality5 quality6 sat1 sat2 sat3 sat4 qual 0.6096185 0.7497874 0.8083302 0.7221225 0.8769138 0.7707945 0.4580949 0.5397716 0.5298427 0.4335797 sat 0.3601606 0.4429721 0.4775591 0.4266278 0.5180780 0.4553830 0.7683957 0.8945721 0.8885307 0.7751411

HTH

Best regards, Florian

From: srk7774 @.> Sent: donderdag 26 augustus 2021 18:35 To: M-E-Rademaker/cSEM @.> Cc: Schuberth, F. (ET) @.>; Comment @.> Subject: Re: [M-E-Rademaker/cSEM] VIF's not reported (#448)

The confusion regarding the Fornell lacker criteria is now clear. In CB-SEM, most studies report the Square root of AVE on diagonal and inter construct correlations in the lower triangle matrix. I found that in PLS, the AVE's and squares of the inter construct correlations are reported. https://link.springer.com/content/pdf/10.1007/s11747-014-0403-8.pdf

Followup: Do cSEM reports cross-loading matrix?

— You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://github.com/M-E-Rademaker/cSEM/issues/448#issuecomment-906566012, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AD5KRRATXLBIKNNH27ZJ6PTT6ZUK5ANCNFSM5CZW7JNQ. Triage notifications on the go with GitHub Mobile for iOShttps://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Androidhttps://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email.