MATLAB Examples

# Mobile Customer Satisfaction Model

The example shows how to perform a Strucutral Equation Model with Partial Least Squares using PLS-PM matlab toolbox by Aria M.(2015).

The Dataset was presented in Tenenhaus et al. (2005). The goal of the analysis is to build up a satisfaction model for mobile customers following the European Customer Satisfaction Approach (ECSI).

## Mobile Customer Satisfaction Dataset

Locate the dataset (in matlab format) in the plspm main folder or download it from this link:

http://wpage.unina.it/aria/datasets/ECSI_dataset.mat

and save it in your working folder

```load ECSI_dataset % % The file contains three objects: % % * MV % * MV_labels % * LV_labels % % MV is the matrix of 24 Measurement Variables (on the columns) observed on % 250 subjects (on the rows). % % MV_labels and LV_labels contain the names of Measurement Variables (MVs) % and Latent Variables (LVs) respectively. ```

## Definition of input matrices

To perform a Structural Equation Model, it is necessary to define the inner (or structural) model and the outer (or measurement) model.

The definition of these two models occurs through the creation of two boolean matrix, DB (Path Design Matrix) and DP (Outer Design matrix) respectively. The first designs the set of links among LVs while the latter designs the set of links among each LV and its MVs block.

Information in matrices DB and DP have to reproduce the path diagram in the figure:

Creation of the Path Design Matrix

DB is an upper triangular matrix.

The "magic rule" to obtain a DB matrix is:

• Exogenous LVs have lower numbers starting from 1.
`     i.e Image (the only exogenous LV) is associated to the first row of DB`
• Endogenous LVs which are not predictor of any other LV have the last numbers.
```     i.e Loyalty are not predictor of any other LV, then it is
associated to the last row of DB.```

following this rule, we define this order:

1st row: IMAGE

2nd row: CUSTOMER EXPECTATION

3rd row: PERCEIVED QUALITY

4th row: PERCEIVED VALUE

5th row: CUSTOMER SATISFACTION

6th row: COMPLIANT

7th row: LOYALTY

```DB=zeros(7,7); % inizialitation of DB % % IMAGE is predictor of Customer Expectation, Customer Satisfaction and Loyalty DB(1,[2,5,7])=1; % % CUSTOMER EXPECTATION is predictor of Perceived Quality, Perceived Value % and Customer Satisfaction DB(2,[3,4,5])=1; % % PERCEIVED QUALITY is predictor of Perceived Value and Customer Satisfaction DB(3,[4,5])=1; % % PERCEIVED VALUE is predictor of Customer Satisfaction DB(4,5)=1; % % CUSTOMER SATISFACTION is predictor of Compliant and Loyalty DB(5,[6 7])=1; % % COMPLIANT is predictor of Loyalty DB(6,[7])=1; % % This is the DB matrix associated to the ECSI path diagram DB; % ans = % % 0 1 0 0 1 0 1 % 0 0 1 1 1 0 0 % 0 0 0 1 1 0 0 % 0 0 0 0 1 0 0 % 0 0 0 0 0 1 1 % 0 0 0 0 0 0 1 % 0 0 0 0 0 0 0 ```

The DB matrix can be obtained drawing the structural model through the function SMDesign_gui

help SMDesign_gui

SMDesign_gui Draw and Edit Graphs of Strucutral Model part of PLS-PM SMDesign_gui(DB,XY) Loads a structural model into the GUI for editing

```   Controls:
Use the radio buttons to select an action
1. To DRAW a new CONSTRUCT, select 'Draw' and 'Construct'. Then click
inside the axes in the desired location.
2. To DELETE a CONSTRUCT, select 'Delete' and 'Construct'. Then click
inside the axis near the desired vertex.
3. To DRAW a new CONNECTION, select 'Draw' and 'Connection'. Then click and hold
the mouse button down on the starting construct and drag the mouse
to the construct of the desired connection.
Note:
If no constructs exist, no connections will be created.
4. To DELETE a CONNECTION, select 'Delete' and 'Connection'. Then click and
hold the mouse button down on the starting construct and drag the mouse
to the construct of the desired connection to delete.
5. Click the 'Save Structural Model' button to save the Design Path matrix (DB) and the
coordinates (xy) of the graph to a MAT file.```

to load the output of SMDesign_gui (DB and xy matrices) in workspace

```load StructuralModelDesign ```

Definition of the Outer Design matrix

DP is a p (number of MVs) x j (number of LVs) matrix which associates each MV to one or more LVs putting value 1 in the appropriate cells.

Initialize DP

```DP=zeros(24,7); % MVs from ima1 to ima5 are associated to the first LV IMAGE DP(1:5,1)=1; % MVs from exp1 to exp3 are associated to the second LV CUSTOMER % EXPECTATION DP(6:8,2)=1; % MVs from qua1 to qua7 are associated to the third LV PERCEIVED QUALITY DP(9:15,3)=1; % MVs from val1 to val2 are associated to the forth LV PERCEIVED VALUE DP(16:17,4)=1; % MVs from sat1 to sat3 are associated to the fifth LV CUSTOMER % SATISFACTION DP(18:20,5)=1; % MV comp is associated to the sixth LV COMPLIANT DP(21,6)=1; % MVs from loy1 to loy3 are associated to the seventh LV LOYALTY DP(22:24,7)=1; % % the final DP is: DP; % % DP = % % 1 0 0 0 0 0 0 % 1 0 0 0 0 0 0 % 1 0 0 0 0 0 0 % 1 0 0 0 0 0 0 % 1 0 0 0 0 0 0 % 0 1 0 0 0 0 0 % 0 1 0 0 0 0 0 % 0 1 0 0 0 0 0 % 0 0 1 0 0 0 0 % 0 0 1 0 0 0 0 % 0 0 1 0 0 0 0 % 0 0 1 0 0 0 0 % 0 0 1 0 0 0 0 % 0 0 1 0 0 0 0 % 0 0 1 0 0 0 0 % 0 0 0 1 0 0 0 % 0 0 0 1 0 0 0 % 0 0 0 0 1 0 0 % 0 0 0 0 1 0 0 % 0 0 0 0 1 0 0 % 0 0 0 0 0 1 0 % 0 0 0 0 0 0 1 % 0 0 0 0 0 0 1 % 0 0 0 0 0 0 1 ```

Definition of mode vector

for each of 7 blocks, we have to define the reflective (A) or the formative (B) measurement model.

In ECSI example, all measurement bocks are estimated as reflective model.

```Mmode=['A'; 'A'; 'A'; 'A'; 'A'; 'A'; 'A']; % ```

Definition of coordinates of LV in the path diagram

To plot the path diagram, it is necessary to define (x,y) coordinates for each LV node.

Starting from the previous figure, nodes are enumerated as following:

the LVs have x coordinates from 1 to 6 and y coordinates from 1 to 4:

```xy=[1 4; 2 3; 2 1; 3 2; 4 2; 5 1; 6 3]; % If you created the path diagram through the function SMDesign_gui, % coordinates are automatically generated. ```

## Plotting the Path Diagram

```color='blue'; %path_graph(DB,xy,2,color,LV_labels) % ```

## Performing the PLS-PM algorithm

Setting up of the function parameters:

PLS-PM allows the user to apply three different structural model weighting schemes (Wold, 1982):

• method='centroid'
• method='factor'
• method='path'

In the ECSI model, weights the most appropriate weighting scheme is 'path'

```method='path'; % % the max number of iterations (the minimum value is 100) max_iter=300; % % % performing the PLS PM algorithm [results]=plspm(MV,DP,DB,Mmode,method,max_iter); % creation of output tables % % to easily explore results of plspm, function summary_plspm.m formats % output into matlab tables data type. % dec=3; % decimals of numbers in tables % [ OM_Tables, IM_Tables, OVERALL_Tables ] = summary_plspm(results,MV_labels,LV_labels,dec ); ```

## Overall Model assessment

Indices for Overall Modell Assessment

```OVERALL_Tables; %ans = % SRMR: [3x1 table] % rel_ind: [2x2 table] ```

Standardized Root Mean Square Residual (SRMR)

```OVERALL_Tables.SRMR; % ans = % % SRMR % ______ % % Empirical_vs_BaselineModel 0.3677 % Empirical_vs_CompositeModel 0.0767 % Empirical_vs_FactorModel 0.0585 ```

Relative indices of Tucker and Lewis (TLI) and Bentler ans Bonett (NFI)

```OVERALL_Tables.rel_ind; % ans = % % TLI NFI % ______ ______ % % Common_Factor_Model 0.7674 0.6913 % Factor_Model 0.9236 0.8319 ```

## Results of Outer Model

Output view for Outer Model

```OM_Tables; % ans = % % DP: [24x7 table] % weights: [24x7 table] % loadings: [24x7 table] % crossload: [24x7 table] % communality: [24x7 table] % HTMT: [7x7 table] % MV: [250x24 table] % res: [250x24 table] % consistency: [7x3 table] % vif: [24x7 table] % AVE: [7x1 table] % discriminant: [7x9 table] ```

Outer Weights

```OM_Tables.weights; % ans = % % Image CustExpect PercQuality PercValue CustSat Loyalty Compliant % _____ __________ ___________ _________ _______ _______ _________ % % ima1 0.301 0 0 0 0 0 0 % ima2 0.26 0 0 0 0 0 0 % ima3 0.218 0 0 0 0 0 0 % ima4 0.329 0 0 0 0 0 0 % ima5 0.325 0 0 0 0 0 0 % exp1 0 0.521 0 0 0 0 0 % exp2 0 0.474 0 0 0 0 0 % exp3 0 0.446 0 0 0 0 0 % qua1 0 0 0.213 0 0 0 0 % qua2 0 0 0.145 0 0 0 0 % qua3 0 0 0.2 0 0 0 0 % qua4 0 0 0.179 0 0 0 0 % qua5 0 0 0.179 0 0 0 0 % qua6 0 0 0.179 0 0 0 0 % qua7 0 0 0.215 0 0 0 0 % val1 0 0 0 0.479 0 0 0 % val2 0 0 0 0.604 0 0 0 % sat1 0 0 0 0 0.365 0 0 % sat2 0 0 0 0 0.383 0 0 % sat3 0 0 0 0 0.451 0 0 % comp 0 0 0 0 0 1 0 % loy1 0 0 0 0 0 0 0.461 % loy2 0 0 0 0 0 0 0.114 % loy3 0 0 0 0 0 0 0.654 ```

```OM_Tables.loadings; % ans = % % Image CustExpect PercQuality PercValue CustSat Loyalty Compliant % _____ __________ ___________ _________ _______ _______ _________ % % ima1 0.745 0 0 0 0 0 0 % ima2 0.599 0 0 0 0 0 0 % ima3 0.576 0 0 0 0 0 0 % ima4 0.769 0 0 0 0 0 0 % ima5 0.744 0 0 0 0 0 0 % exp1 0 0.771 0 0 0 0 0 % exp2 0 0.691 0 0 0 0 0 % exp3 0 0.608 0 0 0 0 0 % qua1 0 0 0.803 0 0 0 0 % qua2 0 0 0.638 0 0 0 0 % qua3 0 0 0.784 0 0 0 0 % qua4 0 0 0.769 0 0 0 0 % qua5 0 0 0.755 0 0 0 0 % qua6 0 0 0.775 0 0 0 0 % qua7 0 0 0.78 0 0 0 0 % val1 0 0 0 0.902 0 0 0 % val2 0 0 0 0.94 0 0 0 % sat1 0 0 0 0 0.792 0 0 % sat2 0 0 0 0 0.847 0 0 % sat3 0 0 0 0 0.857 0 0 % comp 0 0 0 0 0 1 0 % loy1 0 0 0 0 0 0 0.82 % loy2 0 0 0 0 0 0 0.202 % loy3 0 0 0 0 0 0 0.915 ```

## Reliability evaluation of measurement model

Indices: Cronbach's Alpha, Dillon-Goldstein's rho (Rho_d) and Dijkstra-Henseler's rho (Rho_a)

```OM_Tables.consistency; %ans = % % Cronbach_Alpha Rho_d Rho_a % ______________ ______ ______ % % Image 0.7228 0.8189 0.7403 % CustExpect 0.4519 0.7332 0.462 % PercQuality 0.877 0.9047 0.8842 % PercValue 0.8236 0.918 0.855 % CustSat 0.7792 0.8713 0.7891 % Compliant 1 1 1 % Loyalty 0.4724 0.7217 0.7457 ```

Variance Inflaction Factor (VIF)

```OM_Tables.vif; % ans = % % Image CustExpect PercQuality PercValue CustSat Compliant Loyalty % _____ __________ ___________ _________ _______ _________ _______ % % ima1 1.468 0 0 0 0 0 0 % ima2 1.225 0 0 0 0 0 0 % ima3 1.259 0 0 0 0 0 0 % ima4 1.51 0 0 0 0 0 0 % ima5 1.403 0 0 0 0 0 0 % exp1 0 1.161 0 0 0 0 0 % exp2 0 1.121 0 0 0 0 0 % exp3 0 1.05 0 0 0 0 0 % qua1 0 0 2.027 0 0 0 0 % qua2 0 0 1.491 0 0 0 0 % qua3 0 0 2.105 0 0 0 0 % qua4 0 0 2.013 0 0 0 0 % qua5 0 0 1.823 0 0 0 0 % qua6 0 0 2.003 0 0 0 0 % qua7 0 0 2.006 0 0 0 0 % val1 0 0 0 1.962 0 0 0 % val2 0 0 0 1.962 0 0 0 % sat1 0 0 0 0 1.505 0 0 % sat2 0 0 0 0 1.762 0 0 % sat3 0 0 0 0 1.644 0 0 % comp 0 0 0 0 0 1 0 % loy1 0 0 0 0 0 0 1.415 % loy2 0 0 0 0 0 0 1.01 % loy3 0 0 0 0 0 0 1.427 ```

Communality

```OM_Tables.communality; % ans = % % Image CustExpect PercQuality PercValue CustSat Loyalty Compliant % _____ __________ ___________ _________ _______ _______ _________ % % ima1 0.555 0 0 0 0 0 0 % ima2 0.359 0 0 0 0 0 0 % ima3 0.332 0 0 0 0 0 0 % ima4 0.591 0 0 0 0 0 0 % ima5 0.554 0 0 0 0 0 0 % exp1 0 0.594 0 0 0 0 0 % exp2 0 0.478 0 0 0 0 0 % exp3 0 0.369 0 0 0 0 0 % qua1 0 0 0.645 0 0 0 0 % qua2 0 0 0.407 0 0 0 0 % qua3 0 0 0.614 0 0 0 0 % qua4 0 0 0.592 0 0 0 0 % qua5 0 0 0.57 0 0 0 0 % qua6 0 0 0.6 0 0 0 0 % qua7 0 0 0.608 0 0 0 0 % val1 0 0 0 0.814 0 0 0 % val2 0 0 0 0.883 0 0 0 % sat1 0 0 0 0 0.628 0 0 % sat2 0 0 0 0 0.717 0 0 % sat3 0 0 0 0 0.734 0 0 % comp 0 0 0 0 0 1 0 % loy1 0 0 0 0 0 0 0.673 % loy2 0 0 0 0 0 0 0.041 % loy3 0 0 0 0 0 0 0.838 ```

## Discriminant Validity of Measurement Model

Heterotrait-Monotrait ratio of correlations (HTMT)

```OM_Tables.HTMT; % ans = % % Image CustExpect PercQuality PercValue CustSat Compliant Loyalty % _____ __________ ___________ _________ _______ _________ _______ % % Image 0 0 0 0 0 0 0 % CustExpect 0.888 0 0 0 0 0 0 % PercQuality 0.929 0.878 0 0 0 0 0 % PercValue 0.652 0.589 0.673 0 0 0 0 % CustSat 0.91 0.865 0.954 0.741 0 0 0 % Compliant 0.545 0.383 0.564 0.387 0.588 0 0 % Loyalty 0.867 0.77 0.723 0.797 0.957 0.561 0 ```

Average Variance Explained (AVE)

```OM_Tables.AVE; % ans = % % AVE % _____ % % Image 0.478 % CustExpect 0.48 % PercQuality 0.577 % PercValue 0.848 % CustSat 0.693 % Loyalty 1 % Compliant 0.517 ```

```OM_Tables.crossload; % ans = % % Image CustExpect PercQuality PercValue CustSat Loyalty Compliant % _____ __________ ___________ _________ _______ _______ _________ % % ima1 0.745 0.35 0.571 0.397 0.549 0.423 0.355 % ima2 0.599 0.38 0.497 0.275 0.417 0.188 0.304 % ima3 0.576 0.285 0.367 0.339 0.332 0.207 0.308 % ima4 0.769 0.37 0.573 0.476 0.548 0.44 0.459 % ima5 0.744 0.36 0.552 0.271 0.513 0.337 0.494 % exp1 0.352 0.771 0.436 0.294 0.371 0.183 0.271 % exp2 0.408 0.691 0.348 0.18 0.364 0.225 0.32 % exp3 0.287 0.608 0.369 0.274 0.318 0.126 0.195 % qua1 0.634 0.512 0.803 0.47 0.679 0.38 0.477 % qua2 0.43 0.319 0.638 0.308 0.489 0.3 0.345 % qua3 0.628 0.434 0.784 0.474 0.646 0.472 0.472 % qua4 0.496 0.391 0.769 0.395 0.6 0.379 0.368 % qua5 0.608 0.419 0.755 0.465 0.523 0.389 0.377 % qua6 0.568 0.445 0.775 0.411 0.548 0.418 0.343 % qua7 0.586 0.416 0.78 0.554 0.7 0.465 0.451 % val1 0.395 0.311 0.474 0.902 0.488 0.287 0.429 % val2 0.53 0.351 0.595 0.94 0.62 0.36 0.536 % sat1 0.577 0.492 0.642 0.411 0.792 0.334 0.504 % sat2 0.523 0.398 0.67 0.492 0.847 0.416 0.497 % sat3 0.625 0.391 0.674 0.599 0.857 0.547 0.626 % comp 0.475 0.258 0.532 0.355 0.528 1 0.416 % loy1 0.434 0.295 0.394 0.413 0.456 0.237 0.82 % loy2 0.1 0.093 0.063 0.138 0.108 0.122 0.202 % loy3 0.539 0.357 0.534 0.494 0.664 0.448 0.915 ```

Fornell-Larckel criterion

F-L criterion is satisfied for the j-th LV if its AVE is greater than the max squared correlation among LVj and any other LV

```OM_Tables.discriminant; % ans = % % Image CustExpect PercQuality PercValue CustSat Compliant Loyalty AVE FL_criterion % _____ __________ ___________ _________ _______ _________ _______ _____ _______________ % % Image 0 0.255 0.561 0.259 0.48 0.226 0.318 0.478 'Not Satisfied' % CustExpect 0 0 0.31 0.13 0.258 0.066 0.144 0.48 'Satisfied' % PercQuality 0 0 0 0.344 0.632 0.283 0.289 0.577 'Not Satisfied' % PercValue 0 0 0 0 0.37 0.126 0.28 0.848 'Satisfied' % CustSat 0 0 0 0 0 0.279 0.431 0.693 'Satisfied' % Compliant 0 0 0 0 0 0 0.173 1 'Satisfied' % Loyalty 0 0 0 0 0 0 0 0.517 'Satisfied' ```

## Results of Inner Model

Output view for Inner Model

```IM_Tables; % ans = % % DB: [7x7 table] % B: [7x7 table] % LV: [250x7 table] % res: [250x7 table] % R2: [6x1 table] % totaleffects: [7x7 table] % indirecteffects: [7x7 table] % LVcommunality: [7x1 table] % gof: [1x1 table] % effect_overview: [21x3 table] ```

Path coefficients

```IM_Tables.B; % ans = % % Image CustExpect PercQuality PercValue CustSat Loyalty Compliant % _____ __________ ___________ _________ _______ _______ _________ % % Image 0 0.505 0 0 0.179 0 0.196 % CustExpect 0 0 0.557 0.05 0.063 0 0 % PercQuality 0 0 0 0.558 0.512 0 0 % PercValue 0 0 0 0 0.195 0 0 % CustSat 0 0 0 0 0 0.528 0.485 % Loyalty 0 0 0 0 0 0 0.067 % Compliant 0 0 0 0 0 0 0 ```

R2 of structural model

```IM_Tables.R2; % ans = % % R2 % _____ % % CustExpect 0.255 % PercQuality 0.31 % PercValue 0.345 % CustSat 0.681 % Loyalty 0.279 % Compliant 0.457 ```

Goodness of Fit

```IM_Tables.gof; % ans = % % Goodness_of_Fit % _______________ % % Overall Model 0.479 ```

Average communality

```IM_Tables.LVcommunality; % ans = % % Average_Communality % ___________________ % % Image 0.478 % CustExpect 0.48 % PercQuality 0.577 % PercValue 0.848 % CustSat 0.693 % Loyalty 1 % Compliant 0.517 ```

Total effects

```IM_Tables.totaleffects; % ans = % % Image CustExpect PercQuality PercValue CustSat Loyalty Compliant % _____ __________ ___________ _________ _______ _______ _________ % % Image 0 0.505 0.281 0.182 0.39 0.206 0.398 % CustExpect 0 0 0.557 0.361 0.418 0.221 0.218 % PercQuality 0 0 0 0.558 0.621 0.328 0.323 % PercValue 0 0 0 0 0.195 0.103 0.101 % CustSat 0 0 0 0 0 0.528 0.521 % Loyalty 0 0 0 0 0 0 0.067 % Compliant 0 0 0 0 0 0 0 % ```

Total effects

```IM_Tables.indirecteffects; % ans = % % Image CustExpect PercQuality PercValue CustSat Compliant Loyalty % _____ __________ ___________ _________ _______ _________ _______ % % Image 0 0 0.281 0.182 0.211 0.206 0.202 % CustExpect 0 0 0 0.311 0.355 0.221 0.218 % PercQuality 0 0 0 0 0.109 0.328 0.323 % PercValue 0 0 0 0 0 0.103 0.101 % CustSat 0 0 0 0 0 0 0.035 % Compliant 0 0 0 0 0 0 0 % Loyalty 0 0 0 0 0 0 0 ```

Effect Overview

```IM_Tables.effect_overview; % ans = % % Path_Coefficient Indirect_Effect Total_Effect % ________________ _______________ ____________ % % Image->CustExpect 0.5049 0 0.5049 % Image->PercQuality 0 0.2811 0.2811 % Image->PercValue 0 0.1822 0.1822 % Image->CustSat 0.1787 0.211 0.3897 % Image->Compliant 0 0.2058 0.2058 % Image->Loyalty 0.1957 0.2019 0.3976 % CustExpect->PercQuality 0.5567 0 0.5567 % CustExpect->PercValue 0.05 0.3108 0.3608 % CustExpect->CustSat 0.0625 0.3553 0.4179 % CustExpect->Compliant 0 0.2207 0.2207 % CustExpect->Loyalty 0 0.2176 0.2176 % PercQuality->PercValue 0.5583 0 0.5583 % PercQuality->CustSat 0.512 0.1087 0.6208 % PercQuality->Compliant 0 0.3278 0.3278 % PercQuality->Loyalty 0 0.3233 0.3233 % PercValue->CustSat 0.1948 0 0.1948 % PercValue->Compliant 0 0.1029 0.1029 % PercValue->Loyalty 0 0.1014 0.1014 % CustSat->Compliant 0.5281 0 0.5281 % CustSat->Loyalty 0.4855 0.0353 0.5208 % Compliant->Loyalty 0.0669 0 0.0669 ```

## Plotting Results

Outer model

Blocks of Measurement model

the fuction measurement_graph plots the measurement blocks of the outer model.

measure is a string indicating the values to plot (loadings or weights)

```measure='loadings'; % % r is indicates the size of MV points (default r=2) r=2; % color='blue'; % % measurement_graph(results,measure, r,color,LV_labels,MV_labels) % ```

Outer model assessment plot

Funtion plsplots.m generates some plots useful for outer model assessment

plsplots( results,LV_labels,MV_labels,graph_type)

graph_type is a string indicating the type of plot:

• graph_type='weights' generates a plot of weights evolution along the pls algorithm iterations
• graph_type='scatter' generates a scatterplot matrix among MVs for each measurement block.
```graph_type='weights'; % ```

```graph_type='scatter'; ```

```graph_type='crossloadings'; % ```

## Generating of a Report of the Analysis

the function plspm_publish.m geenrates a report of the analysis in different formats for sharing and publishing results. The function aggregates tables generated by summary_plspm function in a single html,doc, ppt, xls document.

plspm_publish(format)

format options 'format' — Published output file format 'html' (default) | 'doc' | 'latex' | 'ppt' | 'xml' | 'pdf'

the report is stored in the subfolder 'report' of your current working folder

## Bootstrapping plspm

Bootstrap is a nonparametric procedure that can be applied to test whether coefficients such as outer weights, outer loadings and path coefficients are significant.

function boot_conf.m estimates non parametric confidence intervals for plspm parameters through bootstrap procedure.

```%[ CI ] = boot_confint( results,nboot,ci_type,conf_level,bias); % % nboot indicates the number of bootstrap replications (default=500). % The minimum value for nboot is 100. nboot=500; % % ci_type is a string defining the confidence interval procedure: % % The function allows to calculate three different types of confidence intervals: % * ci_type='basic' % The basic bootstrap is the simplest scheme to construct the confidence interval: % one simply takes the empirical quantiles from the bootstrap % distribution of the parameter (see Davison and Hinkley 1997) % * ci_type='percentile' % The percentile bootstrap proceeds in a similar way to the basic bootstrap, % using percentiles of the bootstrap distribution, but with a % different formula (see Efron and Tibshirani 1993). % This method can be applied to any statistic. It will work well in cases where % the bootstrap distribution is symmetrical and centered on the % observed statistic. % * ci_type='studentized' % The studentized bootstrap, also called bootstrap-t, works similarly as the usual % confidence interval, but replaces the quantiles from the normal or student approximation % by the quantiles from the bootstrap distribution of the Student's % t-test (see Davison and Hinkley 1997). The studentized test enjoys % optimal properties as the statistic that is bootstrapped is pivotal % (i.e. it does not depend on nuisance parameters as the t-test follows % asymptotically a N(0,1) distribution), unlike the percentile bootstrap. % % Default value for ci_type is 'basic'. ci_type='studentized'; % % conf_level specifies the confidence level of confidence intervals. % conf_level is a value in the interval [0,1]. Default value is 0.95 conf_level=0.95; % % bias is logical value true or false % * bias=true calculates bias-corrected confidence interval % * bias=false calculates non bias-corrected confidence interval bias=1; % % Bootstrap Results % % [ CI_Tables ] = summary_bootstrap(CI,results,MV_labels,LV_labels,d ) % % CI_Tables is a strucutred array formed by three matrices: % CI_Tables.W contains the confidence interval for outer weigths % CI_Tables.L contains the confidence interval for outer loadings % CI_Tables.B contains the confidence interval for inner path coefficients % the generic row of a CI matrix is composed by 7 elements: % |Sample estimation | Bootstrap estimation | Bias | t stat | Pvalue | CI lower bound | CI upper bound| ```

CI_Tables =

```   W: [24x7 double]
L: [24x7 double]
B: [12x7 double]```

CI_Tables.W;

ans =

```           Sample_estim    Boot_estim     Bias     t_stat    Pvalue    CI_LB    CI_UB
____________    __________    ______    ______    ______    _____    _____```
```   ima1    0.301           0.299          0.002    11.309        0     0.256    0.359
ima2     0.26           0.259          0.001     7.452        0     0.192    0.326
ima3    0.218           0.219         -0.001     6.592        0     0.152    0.282
ima4    0.329           0.329         -0.001    10.944        0     0.263    0.385
ima5    0.325           0.326         -0.001     9.198        0     0.244    0.378
exp1    0.521           0.515          0.006     9.575        0     0.428    0.644
exp2    0.474           0.478         -0.004     6.405        0     0.321    0.601
exp3    0.446            0.44          0.006     6.716        0     0.321    0.587
qua1    0.213           0.213              0     14.02        0     0.178    0.239
qua2    0.145           0.144              0    10.833        0      0.12    0.174
qua3      0.2             0.2              0    16.195        0     0.174    0.223
qua4    0.179           0.179              0    17.394        0     0.158    0.199
qua5    0.179           0.178              0    14.135        0     0.156    0.203
qua6    0.179           0.178          0.001    12.094        0     0.156    0.213
qua7    0.215           0.216         -0.001    13.945        0     0.181    0.242
val1    0.479           0.479              0     23.39        0     0.443    0.524
val2    0.604           0.604              0    22.352        0     0.548    0.648
sat1    0.365           0.365              0    20.108        0     0.331    0.401
sat2    0.383           0.385         -0.002    22.954        0     0.345    0.411
sat3    0.451           0.449          0.002    21.928        0     0.409    0.491
comp        1               1              0       Inf        0         1        1
loy1    0.461           0.459          0.001    16.632        0     0.411    0.525
loy2    0.114            0.11          0.004     1.876    0.031     0.016    0.251
loy3    0.654           0.652          0.002    16.325        0     0.574    0.725```

CI_Tables.L;

ans =

```           Sample_estim    Boot_estim     Bias     t_stat    Pvalue    CI_LB    CI_UB
____________    __________    ______    ______    ______    _____    _____```
```   ima1    0.745           0.738          0.007    17.421        0     0.691    0.856
ima2    0.599           0.596          0.003    10.123        0     0.503    0.729
ima3    0.576           0.574          0.002     9.056        0     0.465    0.707
ima4    0.769           0.764          0.005    18.481        0     0.714    0.874
ima5    0.744           0.747         -0.003    24.415        0     0.681    0.797
exp1    0.771           0.765          0.005    14.782        0     0.704    0.896
exp2    0.691           0.691              0     8.214        0     0.552    0.878
exp3    0.608           0.601          0.006     7.987        0     0.481    0.794
qua1    0.803           0.804         -0.001    33.237        0     0.755    0.851
qua2    0.638           0.636          0.002    12.939        0     0.555    0.745
qua3    0.784           0.784              0    26.584        0     0.734    0.854
qua4    0.769           0.769          0.001    16.818        0     0.691    0.871
qua5    0.755           0.754              0    19.185        0     0.689    0.852
qua6    0.775           0.771          0.004    13.497        0     0.688    0.908
qua7     0.78           0.781         -0.001    25.872        0     0.727    0.847
val1    0.902           0.901          0.001    43.582        0     0.872     0.95
val2     0.94            0.94              0       Inf        0     0.925    0.955
sat1    0.792           0.791          0.001    24.704        0     0.739    0.867
sat2    0.847           0.847              0    36.494        0     0.807    0.896
sat3    0.857           0.856          0.001     45.08        0     0.825    0.898
comp        1               1              0       Inf        0         1        1
loy1     0.82           0.817          0.004    19.097        0      0.76    0.936
loy2    0.202           0.196          0.006     1.918    0.028     0.029    0.442
loy3    0.915           0.914          0.001    81.312        0     0.899    0.943```

CI_Tables.B;

ans =

```                              Sample_estim    Boot_estim     Bias     t_stat    Pvalue    CI_LB     CI_UB
____________    __________    ______    ______    ______    ______    _____```
```   Image->CustExpect          0.505           0.516         -0.011    8.759         0      0.375    0.599
Image->CustSat             0.557           0.561         -0.004    10.22         0       0.44    0.653
Image->Loyalty              0.05            0.06          -0.01    0.619     0.268     -0.137    0.186
CustExpect->PercQuality    0.558           0.551          0.007    6.774         0      0.413    0.732
CustExpect->PercValue      0.179           0.185         -0.006    3.386         0      0.056    0.267
CustExpect->CustSat        0.063           0.064         -0.002    1.274     0.102      -0.04    0.157
PercQuality->PercValue     0.512           0.503          0.009    8.553         0        0.4    0.647
PercQuality->CustSat       0.195           0.199         -0.004    3.315     0.001      0.064    0.303
PercValue->CustSat         0.528           0.525          0.003    9.795         0       0.43    0.659
CustSat->Compliant         0.196           0.206          -0.01     2.47     0.007      0.027    0.334
CustSat->Loyalty           0.485            0.48          0.006    5.759         0      0.344    0.653
Compliant->Loyalty         0.067           0.067              0    1.115     0.133     -0.039    0.186```