Paper tutorial / Research in practice

Event appeal and visitor loyalty with CFA and CB-SEM

Check four fan-event measures, then estimate how satisfaction connects programme and place appeal with loyalty.

19 min read

We use this paper to show how a similar analysis can be carried out in QuickPLS. Follow the steps with the supplied practice data, then adapt the setup and calculations to your own study. The practice data are a separate teaching example.

The research behind this exercise

Gómez-Morales, Sánchez-Castillo and Nieto-Ferrando analysed 352 responses about a Game of Thrones fan event. Their factor and structural analyses linked the programme, location and fan cultural capital with satisfaction and loyalty. A March 2026 correction changed affiliations and part of a reference; it did not state a model-result change. This lesson uses a new event setting and a smaller CFA/SEM model.

In QuickPLS you will check the four-factor measurement model, fit the separate event-satisfaction structure and request the two indirect routes to loyalty. This original teaching study adapts the paper’s measurement and structural questions without reproducing its data or implying that its authors used QuickPLS. Read the linked corrected paper for the complete design and findings.

The question you will answer

A fan event takes place at a location associated with a favourite story. Visitors may enjoy the activities, love the place, or both. Can the questionnaire distinguish those experiences before you explain satisfaction?

Programme appeal concerns the organised activities. Place appeal concerns the setting and its meaning to the visitor. Event satisfaction evaluates this particular visit. Event loyalty describes the intention to remain connected to the event. This original four-factor model deliberately leaves fan cultural capital outside the exercise so you can concentrate on the measurement distinction.

Choose the event visit as the reference point and one respondent as the unit. A devoted fan who attended several editions should not answer some items about this year and others about the entire franchise unless that distinction is intentional. Define whether Loyalty means another event visit, recommendation or following related content.

The specified factor model. Exact structural paths for this practice file. The CFA is a separate measurement-only model with factor covariances.
Exact structural paths for this practice file. The CFA is a separate measurement-only model with factor covariances.

Step 1. Download the original practice file

The download has 300 complete fictional records: one fictional fan-event visitor per row. Its continuous values sit within a 1–7 teaching response range; they are not rounded survey categories. The number of rows makes the exercise convenient to practise. It is not a sample-size recommendation for a real study.

Open the codebook before importing. Check the meanings and direction of the columns, then confirm the row count and numeric values in QuickPLS. Keep case_id only as a row identifier. It is not an indicator, predictor or control. These files have no planned missing entries, so an unexpected blank calls for an import check.

For your own study, distinguish a missing response from a genuine zero and document exclusions before analysis. Reverse a question only when its wording and scoring require it. The practice columns are already oriented as described below.

After import, verify the PROG, PLACE, SAT and LOY columns against the guide. Keep programme and place appeal in separate indicator blocks, with case_id used only to identify visitors.

  1. Open the import

    Open a writable project and choose File → Import Data… or Ctrl+I. In Import dataset click Choose data file… and select this lesson’s CSV.

  2. Review the preview

    The dialog moves from Choose file to Review & import. Set Input represents to raw data, Header row to 1, separator to comma and Decimal convention to Dot (1.25). Confirm the teaching columns are Continuous. Keep case_id out of the analysis.

  3. Complete the import

    Check that the preview separates the columns correctly, then click Import dataset. Wait for Dataset imported and verified. Open the imported data and confirm the expected case count before building the analysis.

On a small screen, swipe the table sideways to see every column.

Idea or roleColumnsHow this exercise uses them
Programme appealPROG1, PROG2, PROG3reflective construct
Place appealPLACE1, PLACE2, PLACE3reflective construct
Event satisfactionSAT1, SAT2, SAT3reflective construct
Event loyaltyLOY1, LOY2, LOY3reflective construct

Step 2. Create four common factors for the first CFA

A factor is an underlying idea represented by its measured indicators. This exercise treats each three-column block as reflective and explicitly identifies it as a Common factor. Selecting Reflective alone describes indicator direction; the common-factor representation and marker establish the scientific measurement specification.

Use the exact assignments in the column table. The planned structural paths are Programme appeal → Event satisfaction; Place appeal → Event satisfaction; Event satisfaction → Event loyalty. These are the planned paths for the second, structural model. First create the measurement-only CFA below without those directed arrows.

  1. Create the CFA model

    With this lesson’s imported data open, choose File → New Model…. Name it fan-event-satisfaction CFA, select the lesson dataset under Dataset version, confirm 300 Cases and click Create model.

  2. Create the first block

    In Indicators, Ctrl-select PROG1, PROG2 and PROG3. Check 3 selected and click Create construct.

    What you should see: The first block contains Programme appeal indicators; the common-factor setting and marker follow below.

  3. Name the block and choose reflective measurement

    Choose Select and click the construct body. Open View → Show Properties if the panel is hidden. Under Properties → Model enter its name and press Enter. Under Parameter → Measurement model choose Reflective.

  4. Create all four blocks

    Repeat the indicator selection, Create construct, naming and Reflective steps for each three-column block. To correct an assignment use Properties → Data Binding → Remove, then select the intended column and use Assign to [construct name].

  5. Confirm a common factor and its marker

    At the top of Properties change Inspector mode from Basic to Expert. Select each construct and open Parameter. Under Scientific representation set Representation to Common factor. Choose Marker indicator as follows: Programme appeal: PROG1, Place appeal: PLACE1, Event satisfaction: SAT1, Event loyalty: LOY1. Confirm the displayed common-factor message. The chosen marker loading is fixed at 1; you do not type 1 into every loading.

  6. Keep the first model measurement-only

    Leave out the directed research paths for now. Save the project. The next step adds covariances between the factors to create the CFA specification.

Screenshot to be addedBuild the fan-event measurement model

Step 3. Fit the measurements first, then the structural model

Covariance-based structural equation modelling, or CB-SEM, asks whether the proposed factors and arrows can account for the observed pattern of relationships among indicators. Confirmatory factor analysis, or CFA, checks the measurement part first. The continuous teaching data let you practise a continuous maximum-likelihood workflow; ordered survey categories in a real study need a separate estimation decision.

In the Result dropdown, distinguish fan-event-satisfaction CFA from fan-event-satisfaction Structural. Read Model parameters, Standardized parameters and residual information for the selected model; the structural result should contain only the planned paths and Programme/Place covariance.

  1. Add the six CFA factor covariances

    Choose Connect and drag between the two factor bodies. Return to Select and click that relationship. In Properties → Parameter set Relationship type to Covariance. With Inspector mode set to Expert, under Relationship use choose Use → Model covariance, then click Apply relationship use. Repeat for these six pairs: Programme appeal ↔ Place appeal; Programme appeal ↔ Event satisfaction; Programme appeal ↔ Event loyalty; Place appeal ↔ Event satisfaction; Place appeal ↔ Event loyalty; Event satisfaction ↔ Event loyalty. These are factor covariances, not residual/error covariances between indicators. Save the model.

  2. Run the CFA

    Click Calculate… and choose CB-SEM / CFA. Set Estimation workflow to Existing CFA / recursive SEM and Inference to Maximum-likelihood point estimates. Check Model topology says Confirmatory factor analysis. Confirm the dataset and complete-case setup, review Readiness and click Start calculation.

  3. Inspect the measurement result

    In Results choose this CFA run. Read loadings, factor relationships, residual variances, model fit and residuals. Investigate failed convergence or improper values before proceeding. Save the result with the CFA model.

  4. Create a separate structural model

    Choose File → New Model… using the same dataset and name it fan-event-satisfaction Structural. Repeat the four indicator blocks, Reflective measurement, Common factor representation and the same marker choices above. Draw the directed paths listed in the model plan using Connect, then return to Select. This preserves the CFA as a separate saved model.

  5. Set the structural covariance

    Use the same covariance procedure to join Programme appeal and Place appeal. These are the two factors with no incoming structural paths. Do not retain the CFA’s other between-factor covariances in this structural model. Save the structural model.

  6. Choose structural estimation

    Open Calculate… → CB-SEM / CFA. Set Estimation workflow to Continuous-linear structural ML, Moment structure to Covariances and Inference to Maximum-likelihood point estimates. Use Maximum iterations per stage 1000 and Convergence tolerance 0.0000001 for practice. Under Numerical solver choose Solver → Improved convergence. Review Readiness and Start calculation; continue in the returned protected copy if one is created.

  7. Locate the parameter and diagnostic tables

    Select the completed structural run in Results. Use Search result outputs to find Model parameters and Standardized parameters. Open Model fit for fit summaries and Diagnostics and warnings for residual information. Clear the search afterwards to see all folders again.

Screenshot to be addedKeep the event CFA and structural models separate

Check the factor models for these 300 cases

Use continuous maximum likelihood with the first indicator loading fixed to 1 for each factor. The CFA allows every factor pair to covary. The structural model retains only the paths and exogenous-factor covariances listed in this lesson. No indicator residual covariance is added.

Programme appeal and Place appeal remain separate factors. Their covariance is retained in the structural model. Both can relate to Satisfaction; a good overall fit does not establish that visitors see them as the same experience.

About these answers: Comparison answers calculated in lavaan 0.7.3, with independent checks of covariances and standardised estimates.

On a small screen, swipe the table sideways to see every column.

Saved modelChi-square / dfCFIRMSEASRMR
cfa58.991 / 480.9970.0280.020
structural61.322 / 500.9970.0270.028
What these checks establish

All reference models converged and passed lavaan’s check for allowable parameter estimates. A separate calculation reconstructed the covariances predicted by each model, the observed covariances, standardised loadings and paths, and the maximum-likelihood discrepancy used to assess fit. It did not independently refit the model or check the standard errors used for the Wald intervals.

The reference uses continuous maximum likelihood and fixes each first loading at 1 to set the factor’s scale. Ungrouped runs fit the covariances; grouped runs also include intercepts. The supplied individual-path intervals are normal-theory Wald intervals, not bootstrap intervals.

A CFI rounded to 1 or RMSEA of 0 is not a certificate that the theory is true. Read the residuals, measurement meaning and design alongside overall fit. The download retains all parameters, warnings and covariance records.

Read the structural estimates on the right scale

The raw coefficient uses the marker-defined factor unit. The standardised coefficient uses standard-deviation units. The displayed interval belongs to the raw estimate; do not attach it to the standardised value.

About these answers: External ML point estimates. The intervals below are normal-theory Wald intervals, not the case-bootstrap intervals requested later in the app lesson.

On a small screen, swipe the table sideways to see every column.

PathRaw estimateStandardised estimateRaw 95% Wald interval
Programme appeal → Event satisfaction0.4400.4500.339 to 0.541
Place appeal → Event satisfaction0.3660.3750.267 to 0.464
Event satisfaction → Event loyalty0.6580.6400.552 to 0.763
Check the CFA measurement values

Check the CFA measurement values

The first raw loading is fixed at 1 to set each factor’s scale. Its standardised value can differ from 1. The other loadings are estimated.

About these answers: Measurement-only CFA from lavaan; not the structural model or a PLS loading table.

On a small screen, swipe the table sideways to see every column.

Factor / indicatorRaw loadingStandardised loading
Programme appeal / PROG11.0000.923
Programme appeal / PROG20.9980.921
Programme appeal / PROG30.9940.918
Place appeal / PLACE11.0000.932
Place appeal / PLACE20.9940.925
Place appeal / PLACE30.9970.928
Event satisfaction / SAT11.0000.905
Event satisfaction / SAT21.0190.925
Event satisfaction / SAT31.0360.938
Event loyalty / LOY11.0000.929
Event loyalty / LOY20.9980.925
Event loyalty / LOY30.9920.922

Step 4. Read the factor model as evidence, not a checklist

Focus first on Programme appeal and Place appeal. A statement praising “the wonderful event location and activities” combines two ideas. It cannot tell you which factor a participant endorsed. The supplied blocks represent separate teaching concepts; for a real survey, use interviews and piloting to check that respondents understand the distinction.

Read fixed and free rows differently. A fixed loading of 1 establishes the factor’s scale; its empty standard-error cell is not an estimated zero error. Compare standardized estimates only when the same standardization is used. Std.lv and Std.all need not mean the same thing: one standardizes latent factors, while the other also standardizes observed variables.

Inspect overall fit together with local residuals and degrees of freedom. A good-looking fit index cannot rescue an impossible variance. A model with no remaining degrees of freedom cannot provide a meaningful global test of its own restrictions. Add a residual relationship only when you can explain its measurement source.

Step 5. Keep each interval with the quantity it describes

With the structural model open, return to Calculate… → CB-SEM / CFA. Keep Estimation workflow → Continuous-linear structural ML and Moment structure → Covariances. Set Inference to Case-resampling bootstrap. Under Bootstrap enter Bootstrap samples 1000, Confidence level (%) 95 and Seed 261107108. Set Interval method to Percentile (Type 7) and Alternative to Two-sided. These are the ordinary Calculate controls for this exercise.

For indirect effects, set Structural effects to Effects with bootstrap inference. Open Requested effects and path limit, click Add requested effect, and set Effect type to Specific indirect path. Choose the intended first and second arrows under Path step 1 and Path step 2, in that order. Add another requested effect for a second named route when needed. Direct effects and the supported structural decomposition are included automatically; retain the names and formulas of the rows you report. For the programme route select Programme appeal → Event satisfaction, then Event satisfaction → Event loyalty. A second requested route begins with Place appeal → Event satisfaction.

Click Start calculation and inspect the original fit, usable refits, failures and intervals. The point solver selection does not describe the bootstrap procedure. Keep each interval beside the estimate and scale it actually describes. A standardized point estimate needs uncertainty for that same standardized quantity; never attach an original-unit interval merely because it appears nearby. If an effect is unavailable, investigate its recorded reason.

Screenshot to be addedRead the two satisfaction-mediated routes

What the measurement-only model can tell you

The CFA asks whether the proposed four-factor structure is compatible with the pattern among the indicators. It does not discover a correct questionnaire simply because the factors have appealing names. Start with loadings and factor correlations, then inspect residual variances and unexplained indicator relationships.

If Programme and Place factors correlate extremely strongly, compare their wording. Shared enthusiasm for the franchise may influence both, but adding a general fandom factor after inspecting results is an exploratory redesign. Keep the original specification and explain why a separate study might test that extension.

Investigate a shared phrase before adding a residual covariance

Two items may share wording or a specific event feature beyond their intended factor. A residual covariance represents that remaining association. It should have a defensible reason, such as both questions referring to the same performance, rather than being added solely because it improves a fit index.

Read the residual pattern with the item definitions. If many cross-block residuals are large, one isolated covariance is unlikely to explain the broader measurement problem. A cleaner instrument in a new sample may be more convincing than a heavily modified model fitted to the original responses.

Hypothetical example

Illustrative reading example

Suppose the Programme–Place factor correlation is 0.92 and several indicator pairs repeat the phrase “immersive atmosphere”. That pattern warrants a content review even if their loadings are high. It does not automatically prove the two concepts are identical. A separate illustrative standardized Satisfaction → Loyalty coefficient of 0.58 needs its matching interval and a usable measurement model before interpretation. These are invented examples.

Step 6. Explain what loyalty means in this model

After the CFA review, read the two predictors of Satisfaction together, then Satisfaction → Loyalty. A direct programme coefficient accounts for the included place factor. It is not an isolated rating of event quality. Report both estimates and their intervals rather than selecting the larger coefficient as the event’s sole explanation.

An intention to revisit can remain high even if a venue changes, or low despite a pleasant visit because travel is expensive. A follow-up study could distinguish loyalty to the event from loyalty to the location. The current block cannot silently represent both.

What to check when the result is unexpected

If CFA converges but gives a negative residual variance, check indicator duplication and factor overlap. Do not describe that result as perfect reliability. Review identification and the complete warning before interpreting the structural paths.

If a revised model fits better after many correlated errors, list every revision and its reason. The result is no longer a clean test of the originally specified structure. Where possible, assess that revised measurement model in new data.

If the programme path becomes weak when Place appeal is included, inspect overlap and uncertainty. The conditional coefficient and the simple programme–satisfaction association answer different questions.

Save the original model and the reason for each genuine correction. Keep unsupported relationships in the results you report. A more convincing study explains a weak or uncertain finding and plans better evidence; it does not erase cases, items or paths until every test is favourable.

Write a clear Methods and Results account

Methods outline: We distinguished Programme appeal, Place appeal, Event satisfaction and Event loyalty using [indicator definitions]. We fitted the measurement model with [factor scaling, estimator and mean settings], reviewed [fit and residual evidence], then fitted the stated structural model.

Results outline: The measurement assessment indicated [findings]. Programme and Place appeal had conditional associations of [estimates and intervals] with Satisfaction. Satisfaction related to the defined Loyalty outcome by [estimate and interval]. Any residual relationships were [list and rationale].

Include the analysed case count, exact file or data version, model diagram, measurement decisions, calculation settings and the uncertainty procedure. Attach the relevant full tables rather than only the strongest row. Explain which decisions were planned and which followed inspection.

For this exercise, call the records simulated teaching data. In an actual paper, replace every bracketed placeholder with the result from the named saved run. Remove any illustrative numbers from this lesson before drafting your findings. Cite the original study for the research context and the relevant methodological references for the analysis.

Explain the model comparison

We fitted the stated CFA and structural model to 300 synthetic teaching cases using continuous maximum likelihood and first-indicator markers. We kept the CFA measurement covariances separate from the structural specification.

Report fit and measurement evidence before the paths. If you use the reference intervals here, call them normal-theory Wald intervals. The lesson’s app bootstrap is a separate procedure with its own resampling count, failures and intervals.

Check your conclusion before you finish

  • Define loyalty to the event separately from loyalty to the location.
  • Inspect factor overlap before interpreting competing predictors.
  • Give a content reason for every residual covariance.
  • Retain and cite the corrected source record.

Further reading

Related guides