Stats for

Psychometrics and Measurement

Maximum Shared Variance (MSV)

Maximum shared variance checks that each construct is distinct from its neighbors.

Maximum shared variance takes a confirmatory factor analysis of several constructs and checks whether each construct explains more of its own items than it shares with its closest neighbor.

Example

Are work engagement, job satisfaction and commitment to the organization really three different things to employees? Three hundred employees rated twelve statements from 1 to 7, four each for engagement, satisfaction and commitment, and we fitted a three-factor model to their answers.

Two or More Constructs + Multi-Item Scales + Fitted CFA → Maximum Shared Variance (MSV)
Estimates
Largest variance a construct shares with another construct
Observations
Independent
Parametric
Yes
Headline Statistic
MSV
Key Estimate
Maximum Shared Variance
Groups
1

The Basics

When to Use It

Use it when you've fitted a confirmatory factor analysis with two or more constructs, each measured by several items, and you want to check, construct by construct, that none of them overlaps with another more than it explains its own items. It's usually reported alongside AVE and, better, alongside the factor correlations and HTMT. For example:

  • Are work engagement, job satisfaction and commitment to the organization really three different things to employees?
  • Does a new loneliness scale measure something other than depressed mood on the PHQ-9 in a sample of older adults?
  • Are test anxiety and general worry distinct enough in students' answers to be scored as separate subscales?

Vocabulary You Need

Definition Maximum Shared Variance (MSV)

For one construct in a measurement model, the largest of its squared correlations with the other constructs. Squaring a factor correlation turns it into shared variance: two constructs correlated .70 have 49% of their variance in common. MSV picks out a construct's closest neighbor and is compared with the construct's average variance extracted (AVE). If a construct shares more variance with another construct than it explains, on average, in its own items, the two may not be distinct. Checking MSV < AVE for every construct is the same as Fornell and Larcker's comparison of each AVE with each squared correlation, organized construct by construct. It should use factor correlations from a confirmatory factor analysis, not correlations between scale scores. Glossary →

Definition Average Variance Extracted (AVE)

The average, across a construct's items, of each item's squared standardized loading: how much of a typical item's variance the construct accounts for, with the rest being measurement error and whatever is specific to that item. It comes from a factor model, usually a confirmatory factor analysis in which each item reflects one construct. An AVE of .50 means the construct explains as much of the average item as everything else does. Because it is an average of single items, it doesn't grow with the number of items, unlike composite reliability; a construct can have reliable items as a set and still a low AVE. With standardized loadings it equals the average of the items' reliabilities, which is why Rönkkö and Cho (2022) suggest calling it average indicator reliability. Fornell and Larcker (1981) proposed it, together with a check for discriminant validity that compares each construct's AVE with the variance it shares with other constructs. Glossary →

Definition Factor Loading (\lambda)

How strongly one observed variable, such as a questionnaire item, reflects a factor: an unobserved trait that a set of variables is assumed to share. A standardized loading puts everything in standard deviations; when each item reflects only one factor, it is the item's correlation with that factor, and its square is the share of the item's variance the factor accounts for. An unstandardized loading is in the item's own units: how much the item's score rises, on average, for each one-unit rise in the factor: one standard deviation when the factor's variance is fixed at 1, or one point of the marker item when that item's loading is fixed at 1. Loadings come from a factor analysis, so they depend on the model, the estimation method and which items are analyzed together. Glossary →

Definition Factor Correlation (\phi)

How closely two factors go together, from −1 to 1, estimated from what their items share rather than from total scores. Because the items' unique noise is left out, it's usually larger in size than the correlation between the two total scores, which measurement error weakens. A correlation well below 1 supports treating the factors as distinct traits; one close to 1 means the two sets of items may be measuring one thing. In a model where each factor's variance is fixed at 1, it's the factors' covariance, written φ (“phi”). Glossary →

Definition Discriminant Validity

Evidence that a measure captures something different from measures of other, related traits. Two scales meant to measure different things, such as worry and rumination, should correlate less than perfectly once measurement error is set aside; if their traits correlate close to 1, they're effectively measuring the same thing, whatever their names say. It's one strand of construct validity, paired with convergent validity (measures of the same trait should agree). It's usually judged from an error-corrected correlation between the two traits, such as the heterotrait-monotrait ratio (HTMT) or the factor correlation from a confirmatory factor analysis, or from the Fornell-Larcker criterion. No cutoff settles it alone: theory about how related the traits should be matters too. Glossary →

Assumptions

1. Correctly Specified Model Your model includes the paths and correlations that really matter.
What It Means
The model's pattern is right in the ways that count: every path, loading or covariance that matters is included, and every one the model fixes at zero really is near zero. In a factor model, the items load on the factors you assigned them to and any residuals that share something (similar wording, a shared method) are allowed to correlate; in a path model, the arrows left out of the diagram really are absent. Every estimate, and every fit index, is conditional on that pattern. An omitted path, cross-loading or residual correlation doesn't just cost fit; the model makes up for it by bending the parameters it does have.
Applies To
Items
How to Check
Specify the model from theory (and, for a factor model, item content) before seeing the data. Then look beyond the overall fit: the residual correlations for pairs the model misses, the modification indices for where it misses most, and paths, loadings or factor correlations that look implausible. Compare the model with plausible alternatives specified in advance. Fit statistics can show a model is wrong; they can't show it's right.
How Much It Matters
A lot. MSV and AVE are read straight off the fitted model. An item that also reflects a second construct, or a missing factor, pushes loadings and factor correlations around, and with them both sides of the comparison. Here the three-factor model fit well.

If It's Violated

  • Alternative Test Exploratory Factor Analysis (EFA). Find out how many factors the items form, and which items cross over, before fitting a confirmatory model.
  • Correction Confirmatory Factor Analysis (CFA). Free a justified cross-loading or add the missing factor in the CFA, then recompute AVE and MSV from the model that fits, and say that you changed it.
  • Design Change Replace items whose wording fits two constructs.
2. No Shared Noise between Items Your items don't share anything beyond the trait, such as near-identical wording.
What It Means
The part of each item that the trait doesn't explain is unrelated from item to item. Items that repeat the same wording, share a response format the others don't, or are all reverse-keyed can share a little variance of their own. The factor model then counts that shared noise as trait, so the loadings, and the coefficients built from them (omega, alpha, AVE, composite reliability), come out too high. If you model the shared noise as a residual correlation, count it as error: omega and composite reliability then need twice that covariance added to the noise in their denominator.
Applies To
Items
How to Check
Look at the item wording for near-duplicates and for clusters of reverse-keyed or differently formatted items. After fitting the factor model, check the residual correlations between items: pairs the factor leaves strongly correlated point to shared noise.
How Much It Matters
Some. Shared noise among one construct's items inflates its loadings and AVE, making MSV < AVE easier to pass. Shared noise across constructs, such as the same response format or a common rater, inflates the factor correlation and so MSV.

If It's Violated

  • Correction Confirmatory Factor Analysis (CFA). Add residual correlations for item pairs with a clear shared source, or a method factor, and recompute from that model.
  • Design Change Measure constructs with different formats or sources where you can, so a shared method doesn't look like a shared construct.
3. Independent Observations The people (or other units) in your study don't influence each other.
What It Means
Each person's data comes from a separate, unconnected source, so knowing one person's scores tells you nothing about anyone else's. In designs that measure people more than once, their own scores are meant to be related; it's different people who must be independent. Methods built for clustered data, such as multilevel models and GEE, also allow members of the same group to be related, as long as the analysis names the grouping; then it's the groups that must be independent.
Applies To
Observations
How to Check
By design, not by a test. Did each person contribute their own data, with no clusters such as roommates, couples, therapy groups or classrooms whose members influence each other? If there are clusters, does the analysis model every one of them?
How Much It Matters
Some. Employees clustered in teams leave the estimates roughly right but make the confidence interval for the factor correlation too narrow, and team-level differences can raise the correlation between constructs.

If It's Violated

  • Alternative Test Multilevel SEM. Estimate the factor model separately within and between clusters.
  • Proceed with Caveat Say how respondents were grouped and treat the interval as too narrow.

Limitations

This Is Not Your Test If…

What It Doesn't Tell You

  • Whether the constructs are really different. MSV > AVE for engagement says its items don't separate it cleanly from satisfaction in these data. Whether engagement and satisfaction are one idea or two is a question for theory and item content; a different set of items could separate them better, or worse.
  • Whether the overlap is the problem. A low AVE fails the check as surely as a high correlation; with stronger items, engagement's same .81 correlation would have passed.
  • Whether the comparison itself can be trusted. MSV < AVE is Fornell and Larcker's comparison under another name, which Rönkkö and Cho (2022) found often flags problems that aren't there, so judge the pair on the factor correlation's interval, with HTMT as a cross-check (see Discriminant Validity).
  • How certain the verdict is. MSV and AVE are estimates, and AVE − MSV has no standard interval. A percentile bootstrap (2,000 resamples of the 300 employees, refitting the CFA each time) puts engagement's margin of −.11 at 95% CI [−.21, −.01]: below zero, but only just. Satisfaction's +.06 runs from −.04 to .16, and it fails in about 1 resample in 8. A margin of a few hundredths can flip in another sample.
  • Who else. The .81 belongs to these simulated employees. In a workplace where engagement and satisfaction vary more independently, or with different items, the constructs could separate more clearly.
  • Whether ASV adds anything. Engagement's ASV of .44 passes, but only because its low overlap with commitment dilutes its high overlap with satisfaction. Any construct that passes MSV < AVE passes ASV < AVE automatically, so ASV never catches a problem MSV misses.

Common Mistakes

  • Don'tDeclare a pair of constructs distinct because one of them passes MSV < AVE.

    InsteadCheck both constructs in the pair. They share one squared correlation, so the pair fails if either construct's AVE falls below it.

  • Don'tTake ASV < AVE as reassurance when MSV < AVE fails.

    InsteadReport the MSV result. An average over several constructs can hide one that is far too close.

  • Don'tTreat MSV < AVE as a test of whether two constructs are distinct.

    InsteadReport the factor correlation with its confidence interval and HTMT, and judge the pair on those and on theory.

  • Don'tCompute AVE from a partial least squares (PLS) model and compare it with MSV.

    InsteadUse a confirmatory factor analysis. PLS overstates loadings, so its AVE is too high to catch real problems.

  • Don'tDrop low-loading items until MSV < AVE passes.

    InsteadKeep the items the construct's definition calls for. Pruning to pass changes what the scale covers and fits this sample's quirks; if you revise the scale, test the revised version in new data.

  • Don'tSquare the correlation between two scale scores and compare it with AVE.

    InsteadSquare the factor correlation from the CFA. Scale-score correlations are weakened by measurement error, so they make the check too easy to pass.

  • Don'tCompare AVE with a correlation instead of a squared correlation.

    InsteadCompare AVE with the squared factor correlation, or √AVE with the correlation itself.

Result Decoder

Interpretation Guidelines

Benchmarks Maximum Shared Variance
  • MSV < AVE Passes

    The construct explains more of its own items' variance, on average, than it shares with any other construct in the model.

  • MSV ≥ AVE Fails

    Some other construct shares at least as much variance with this one as this one explains in its own items. The two may not be distinct, or this construct's items may be weak measures of it.

A pass/fail rule, not graded benchmarks. Tutorial materials such as Gaskin's StatWiki give it as “MSV < AVE” and ask users to cite Hair et al.'s Multivariate Data Analysis (2010); the comparison itself is Fornell and Larcker's (1981) AVE-versus-squared-correlation check. Rönkkö and Cho (2022) found that check biased: it can flag a problem when loadings are modest and the constructs are clearly distinct. Treat a failure as a reason to look at the factor correlation, its confidence interval and HTMT, not as a verdict on its own.

More about effect size ↓

How It's Reported

Equation Form

Example

Engagement: AVE = .55, MSV = .66, ASV = .44; engagement–satisfaction φ = .81, 95% CI [.75, .87], HTMT = .81, 95% bootstrap CI [.75, .87]

Table 1. Average Variance Extracted and Shared Variance for Each Construct

Example
AVEMSVASVMSV < AVE?
Work engagement .55.66.44No (satisfaction)
Job satisfaction .72.66.48Yes
Affective commitment .58.31.27Yes

Note. N = 300. AVE = average variance extracted (mean squared standardized loading); MSV = maximum shared variance (largest squared factor correlation with another construct); ASV = average shared variance. A construct passes when MSV < AVE. Three-factor CFA, maximum likelihood.

Table 2. Shared Variance between Constructs

Example
123
1. Work engagement .55
2. Job satisfaction .66.72
3. Affective commitment .23.31.58

Note. Below the diagonal: squared factor correlations (shared variance). On the diagonal: each construct's AVE. Read along a construct's row and column: its largest off-diagonal value is its MSV, and a value larger than the diagonal entry fails. Factor correlations: engagement–satisfaction .81, engagement–commitment .48, satisfaction–commitment .55.

Full Text (APA Style)

Example

A three-factor confirmatory factor analysis fit the twelve items well, χ²(51) = 57.37, p = .251, CFI = .997, RMSEA = .020, 90% CI [.000, .044], SRMR = .023. Work engagement shared more variance with job satisfaction than it explained in its own items: its maximum shared variance was .66, above its average variance extracted of .55 (ASV = .44; Table 1). Job satisfaction (AVE = .72, MSV = .66) and affective commitment (AVE = .58, MSV = .31) met MSV < AVE. Engagement's shortfall partly reflects its items being the weakest of the three sets. The engagement–satisfaction correlation was high, .81, 95% CI [.75, .87], with HTMT = .81, 95% bootstrap CI [.75, .87]. The correlation's upper limit falls in the .80 to .90 range that Rönkkö and Cho (2022) classify as a marginal problem: treating the constructs as distinct is probably safe, but their high overlap should be acknowledged and discussed.

  • Report AVE, MSV and the factor correlations in one table, so readers can check every pair themselves.
  • Say which construct fails and with which neighbor, not just that "discriminant validity was (not) established."
  • Give the factor correlation with its confidence interval, and HTMT, next to the MSV result.
  • Say how AVE was computed (the mean squared standardized loading from a CFA), since programs differ slightly.

Reading Each Piece

The equation form above, piece by piece, in this order: how big, then how certain.

AVE = .55 Engagement accounts for 55% of the variance in a typical engagement item; the other 45% is unique to the item or error. Its items are the weakest of the three sets.
φ = .81 Employees higher in engagement tend strongly to be higher in satisfaction too. That's a strong correlation, but .81 is still short of the 1 that would make the two indistinguishable.
95% CI [.75, .87] The population correlation is plausibly anywhere from .75 to .87. The upper end sits in the .80 to .90 range that Rönkkö and Cho (2022) classify as a marginal problem: the constructs are probably safe to treat as distinct, but the overlap should be acknowledged.
φ² = .66 Engagement and satisfaction share 66% of their variance: about two thirds of the differences between employees in one line up with differences in the other.
MSV = .66 Engagement's closest neighbor is satisfaction, and the two share 66% of their variance. That is the number held against engagement's AVE. Benchmarks ↑
ASV = .44 On average, engagement shares 44% of its variance with the other two constructs. The average passes because commitment's low overlap dilutes satisfaction's high one.
HTMT = .81 The point estimate is below the common cutoffs of .85 and .90, but a percentile bootstrap (20,000 resamples) puts its 95% interval at [.75, .87], which reaches past .85. That's the same marginal picture as the factor correlation's interval: not a clear pass or a clear failure.

Calculations

The Running Example

Example

The workplace survey study: 300 employees, twelve 1–7 items, three constructs of four items each, one confirmatory factor analysis.

There's no hypothesis to test. For each construct the question is whether MSV < AVE: whether it shares less variance with its closest neighbor than it explains in its own items. \phi (“phi”) is the correlation between two constructs in the population of employees like these, which the model's factor correlation estimates.

What Your Data Should Look Like

One row per person and one numeric column per item, for every construct in the model, with any reverse-worded items already reverse-scored. You also need to know which items belong to which construct: that's the model, and it's decided before the analysis, not from the data. The numbers on this page come from the fitted model, so the data box below only summarizes the items.

Example
employeeengagement_1engagement_2engagement_3engagement_4satisfaction_1satisfaction_2satisfaction_3satisfaction_4commitment_1commitment_2commitment_3commitment_4
1766466554372
2444434444523
3555533444434
4344555335565
5665433354545
6466466665576
… 294 more rows
ItemMSDItem–Total r
Engagement
Engagement 14.321.44.71
Engagement 24.181.45.64
Engagement 34.201.37.66
Engagement 44.251.49.59
Total16.954.66
Satisfaction
Satisfaction 14.251.47.83
Satisfaction 24.171.44.80
Satisfaction 34.151.41.78
Satisfaction 44.251.46.76
Total16.825.12
Commitment
Commitment 14.241.42.74
Commitment 24.251.48.68
Commitment 34.301.43.64
Commitment 44.311.38.68
Total17.094.73

N = 300. Each construct has its own total, adding its own items; each item's r is with the total of the other items in its construct (the corrected item–total correlation).

Simulated data.

Download all 300 rows (data.csv)

Napkin Math

The whole test, one idea at a time. Under each heading, a line says why the step matters, and the green note reads the equation in plain English with the workplace survey study's numbers. Collapse all to read just the headings: they tell the whole story on their own.

  1. 1. Fit One Model for All Three Constructs and Check That It Fits

    Every number on this page comes from one confirmatory factor analysis in which each construct is a factor measured by its own four items and the three factors are free to correlate. If that model didn't fit, its loadings and correlations wouldn't be worth comparing.

    \chi^2 = N \times F_{\text{ML}} =300 \times 0.19124

    \chi^2 = 57.37

    df = 51

    p = .251

    CFI = .997

    RMSEA = .020

    \text{90\% CI}_{\text{RMSEA}} = [.000, .044]

    SRMR = .023

    F_{\text{ML}} measures the gap between the items' observed variances and covariances and the ones the three-factor model implies. 300 × 0.19124 = 57.37 on 51 df (p = .251). That's lavaan's convention; some programs multiply by N − 1 instead. CFI compares the model with one in which no items correlate, so near 1 is good; RMSEA and SRMR measure the misfit left over, so near 0 is good. Hu and Bentler's (1999) often-quoted guides are CFI of about .95 or more, RMSEA of about .06 or less and SRMR of about .08 or less: rules of thumb, not tests. CFI = .997, RMSEA = .020 (90% CI [.000, .044]) and SRMR = .023 are well inside all three, so by these conventions the model fits well.

  2. 2. Measure How Much Each Construct Explains in Its Own Items

    A standardized loading is the correlation between an item and its construct, so its square is the share of the item's variance the construct accounts for. Square each item's loading, then average over the construct's items. That average, the AVE, is the yardstick for everything that follows.

    AVE = \dfrac{\sum \lambda_i^2}{k} =\dfrac{.823^2 + .728^2 + .738^2 + .659^2}{4}

    = .55

    AVE_{\text{sat}} = .72

    AVE_{\text{com}} = .58

    \lambda_i are engagement's four standardized loadings. Squared they're .68, .53, .54 and .43, which add to 2.19; divided by k = 4 items, engagement explains .55 of a typical item's variance. Satisfaction's AVE is .72 and commitment's .58 (Table 1).

  3. 3. Find How Strongly Each Pair of Constructs Correlates

    The model estimates the correlation between each pair of constructs from what their items share, with each item's own noise set aside. That makes these factor correlations the right ones to judge overlap by, not correlations between total scores.

    \phi_{\text{eng,sat}}

    = .81

    \phi_{\text{eng,com}} = .48

    \phi_{\text{sat,com}} = .55

    95\%\ \text{CI} = [.75, .87]

    \phi_{\text{eng,sat}} is the factor correlation between engagement and satisfaction, .81, with a 95% interval from .75 to .87. Engagement and commitment correlate .48, satisfaction and commitment .55.

  4. 4. Square Each Correlation to Get the Variance the Pair Shares

    A correlation isn't a share of anything; its square is. Squaring puts the overlap between two constructs on the same scale as AVE, a proportion of variance.

    \phi_{\text{eng,sat}}^2 =.810^2

    = .66

    \phi_{\text{eng,com}}^2 = .23

    \phi_{\text{sat,com}}^2 = .31

    \phi_{\text{eng,sat}} is the .810 correlation. .810 × .810 = .66, so engagement and satisfaction have 66% of their variance in common. The other pairs share .23 (.48²) and .31 (.55²).

  5. 5. Pick Each Construct's Closest Neighbor

    For each construct, keep only its largest shared variance. That's its maximum shared variance: the overlap with whichever other construct it's hardest to tell apart from.

    MSV_j = \max_{k \neq j} \phi_{jk}^2 =\max(.66,\ .23)

    = .66

    MSV_{\text{sat}} = .66

    MSV_{\text{com}} = .31

    \phi_{jk}^2 are engagement's shared variances with the other two constructs, .66 with satisfaction and .23 with commitment. The larger, .66, is engagement's MSV. It's satisfaction's MSV too, since .66 is also satisfaction's largest; commitment's is .31.

  6. 6. Average Each Construct's Overlap with All the Others

    Some reports also give the average shared variance. It describes a construct's overlap with the model as a whole, and it can look fine when one neighbor is far too close.

    ASV_j = \dfrac{1}{m - 1}\sum_{k \neq j} \phi_{jk}^2 =\dfrac{.656 + .231}{2}

    = .44

    ASV_{\text{sat}} = .48

    ASV_{\text{com}} = .27

    m - 1 = 2 other constructs, and engagement shares .656 and .231 with them. (.656 + .231) ÷ 2 = .44, comfortably below its .55 AVE, even though one of the two is above it.

  7. 7. Compare Each Construct's Closest Overlap with What It Explains in Its Own Items

    Now the rule: a construct should explain more of its own items than it shares with any other construct. Subtracting MSV from AVE gives the margin; a negative margin fails.

    AVE_j - MSV_j =.546 - .656

    AVE_{\text{eng}} - MSV_{\text{eng}} = −.11

    AVE_{\text{sat}} - MSV_{\text{sat}} = .06

    AVE_{\text{com}} - MSV_{\text{com}} = .28

    AVE_{\text{eng}} is .546 and MSV_{\text{eng}} .656, so the margin is .546 − .656 = −.11: engagement fails. Satisfaction passes by .72 − .66 = .06, and commitment by .58 − .31 = .28.

  8. 8. Check the Same Comparison on the Correlation Scale

    Many papers show it another way: √AVE on the diagonal of the correlation table, compared with the correlations. Both sides are the square roots of the MSV < AVE comparison, so it's the same check: engagement fails either way, and a pair counts as distinct only if both AVEs exceed its squared correlation.

    \sqrt{AVE_{\text{eng}}} \;\text{vs}\; |\phi_{\text{eng,sat}}| =\sqrt{.546} = .739 < .810

    \sqrt{AVE_{\text{eng}}} = .74

    \sqrt{AVE_{\text{sat}}} = .85

    \sqrt{AVE_{\text{eng}}} = √.546 = .74, below the .81 correlation, just as .55 is below .81² = .66. Satisfaction's √.72 = .85 clears .81, but one failure is enough to flag the pair.

  9. 9. Cross-Check the Pair with the Heterotrait-Monotrait Ratio

    HTMT asks the same question from the item correlations, without a factor model: do engagement items correlate with satisfaction items nearly as strongly as they do with each other? Henseler et al. (2015) proposed it as a replacement for AVE comparisons. Rönkkö and Cho (2022) show it's a scale-score correlation corrected for measurement error on the assumption that all items are equally good, so treat it as a cross-check on the factor correlation, not a better answer.

    \text{HTMT} = \dfrac{\bar{r}_{\text{eng,sat}}}{\sqrt{\bar{r}_{\text{eng}}\;\bar{r}_{\text{sat}}}}

    = .81

    \bar{r}_{\text{eng,sat}} is the average correlation between an engagement item and a satisfaction item, and the bottom is the geometric mean of the average correlations within each set. The ratio is .81, almost exactly the factor correlation.

Run It in Software

The code below reads the running example's data from data.csv; save it in the same folder you run the code from.

SPSS Amos (version 30, as documented by IBM)

SPSS Statistics itself can't fit a confirmatory factor analysis, and no SPSS procedure prints MSV. Fit the model in IBM SPSS Amos, SPSS's structural equation modeling program, then do the squaring and comparing by hand or in a spreadsheet:

  1. In Amos Graphics, File → Data Files → File Name, and open the data file.
  2. Draw one latent variable (an oval) per construct, with its four items as indicators, and draw a two-headed arrow between every pair of latent variables. Amos fixes each factor's first loading to 1; that's fine, because the standardized estimates are what you need.
  3. View → Analysis Properties → Output, check Standardized estimates, and run the analysis (Analyze → Calculate Estimates).
  4. From Text Output → Estimates, copy the Standardized Regression Weights (the standardized loadings) and the Correlations between the three factors.
  5. For each construct, AVE is the mean of its squared standardized loadings. Square each correlation; each construct's MSV is its largest squared correlation and its ASV the mean of them. Compare MSV with AVE.

Reading the Output

Amos's standardized estimates don't depend on how the factors are scaled, so they match the R results below: standardized loadings from .66 to .82 for engagement, .81 to .88 for satisfaction and .70 to .85 for commitment, and factor correlations of .81 (engagement–satisfaction), .48 (engagement–commitment) and .55 (satisfaction–commitment). From these:

AVE MSV ASV MSV < AVE?
engagement .546 .656 .443 No
satisfaction .715 .656 .482 Yes
commitment .583 .307 .269 Yes

Read the AVE and MSV columns first, then go back to the correlation that produced each MSV. Amos gives no interval for a standardized correlation by default; bootstrap it (Analysis Properties → Bootstrap) or use R.

Output laid out from this page's computed results, not captured from a live run; labels and layout may differ slightly in your version.

R
library(lavaan)
library(semTools)

survey <- read.csv("data.csv")

model <- '
  engagement   =~ engagement_1 + engagement_2 + engagement_3 + engagement_4
  satisfaction =~ satisfaction_1 + satisfaction_2 + satisfaction_3 + satisfaction_4
  commitment   =~ commitment_1 + commitment_2 + commitment_3 + commitment_4
'
fit <- cfa(model, data = survey, std.lv = TRUE)
fitMeasures(fit, c("chisq", "df", "pvalue", "cfi", "rmsea", "srmr"))

# AVE: mean squared standardized loading per construct
lam <- lavInspect(fit, "std")$lambda
ave <- colSums(lam^2) / colSums(lam != 0)

# Shared variance: squared factor correlations
r2 <- lavInspect(fit, "cor.lv")^2
diag(r2) <- NA
msv <- apply(r2, 1, max, na.rm = TRUE)
asv <- rowMeans(r2, na.rm = TRUE)
round(cbind(AVE = ave, MSV = msv, ASV = asv, pass = msv < ave), 3)

# The factor correlations with 95% CIs, and HTMT
subset(standardizedSolution(fit), op == "~~" & lhs != rhs)[, c("lhs", "rhs", "est.std", "ci.lower", "ci.upper")]
htmt(model, data = survey, htmt2 = FALSE)
 chisq     df pvalue    cfi  rmsea   srmr
57.373 51.000  0.251  0.997  0.020  0.023

               AVE   MSV   ASV pass
engagement   0.546 0.656 0.443    0
satisfaction 0.715 0.656 0.482    1
commitment   0.583 0.307 0.269    1

            lhs          rhs est.std ci.lower ci.upper
28   engagement satisfaction   0.810    0.753    0.868
29   engagement   commitment   0.480    0.372    0.588
30 satisfaction   commitment   0.554    0.461    0.648

             enggmn stsfct cmmtmn
engagement    1.000
satisfaction  0.809  1.000
commitment    0.490  0.548  1.000

Check the fit first, then read AVE against MSV row by row (pass is 1 for MSV < AVE), then the correlation and interval behind each MSV, then HTMT. semTools also has AVE(fit), but it weights items by their observed variances, so it gives .545, .716 and .584 here instead of the plain average of squared standardized loadings. htmt() uses a geometric-mean version (HTMT2, .807 here) unless you set htmt2 = FALSE; discriminantValidity(fit) tests each correlation against 1 or a cutoff you choose.

cfa() uses maximum likelihood, which treats the 1–7 ratings as continuous. That's usually fine with five or more answer categories and roughly symmetric answers, as here; with fewer categories or skewed answers, refit with estimator = "MLR" or ordered = TRUE and say which you used. Here the verdict doesn't change: with ordered = TRUE, engagement's AVE is .57, still below its MSV of .65.

Output from a real run: R 4.6.1 (lavaan 0.7-2, semTools 0.5-9), run 2026-10-03.

Python
import numpy as np
import pandas as pd
import semopy

survey = pd.read_csv("data.csv")

desc = """
engagement   =~ engagement_1 + engagement_2 + engagement_3 + engagement_4
satisfaction =~ satisfaction_1 + satisfaction_2 + satisfaction_3 + satisfaction_4
commitment   =~ commitment_1 + commitment_2 + commitment_3 + commitment_4
"""
model = semopy.Model(desc)
model.fit(survey.drop(columns="employee"))
est = model.inspect(std_est=True)

factors = ["engagement", "satisfaction", "commitment"]
load = est[(est.op == "~") & est.rval.isin(factors)]
ave = load.groupby("rval")["Est. Std"].apply(lambda l: np.mean(l**2)).reindex(factors)

cor = est[(est.op == "~~") & est.lval.isin(factors) & est.rval.isin(factors) & (est.lval != est.rval)]
r2 = pd.DataFrame(np.nan, index=factors, columns=factors)
for _, row in cor.iterrows():
    r2.loc[row.lval, row.rval] = r2.loc[row.rval, row.lval] = row["Est. Std"] ** 2

print(pd.DataFrame({"AVE": ave, "MSV": r2.max(axis=1), "ASV": r2.mean(axis=1)}).round(3))
                AVE    MSV    ASV
engagement    0.546  0.656  0.443
satisfaction  0.715  0.656  0.482
commitment    0.583  0.308  0.269

semopy fixes each factor's first loading rather than its variance, but the standardized estimates are the same model. Its estimates differ from lavaan's around the fourth decimal, which is why commitment's MSV prints as .308 rather than .307. semopy.calc_stats(model) gives the fit (χ² = 57.373 on 51 df, CFI = .997, RMSEA = .020). semopy doesn't print intervals for standardized correlations; bootstrap them or use R.

Output from a real run: Python 3.9.6 (semopy 2.3.11, pandas 2.3.3), run 2026-10-03.

Impact

Effect Size

MSV is itself a size: the share of variance a construct has in common with its closest neighbor. It has no units, so it reads the same way whatever the items' response scales, and it's judged against the construct's own AVE rather than against fixed benchmarks.

MSV_{\text{eng}} = \phi_{\text{eng,sat}}^2 = .810^2 = .66 \;>\; AVE_{\text{eng}} = .55

Two thirds of the variation in engagement lines up with variation in satisfaction, while engagement explains only about half of what its own four items measure.

In practical terms, the margin matters more than the verdict. Engagement misses by .11, satisfaction clears by .06 and commitment by .28. What to do about a miss depends on the purpose: if engagement and satisfaction will be entered as separate predictors of turnover, expect their separate coefficients, each holding the other constant, to be unstable and hard to interpret; if the scale is new, look at which engagement items sit closest to satisfaction and whether stronger, more specific items would pull the two apart.

Benchmarks Maximum Shared Variance at a Glance
Passes
MSV < AVE
Fails
MSV ≥ AVE

Full benchmarks and caveats ↑

Uncertainty

MSV comes with no p-value. MSV < AVE is a comparison of two estimates, not a test, so it doesn't say how likely the verdict is to hold in another sample. The uncertainty worth reporting is in the factor correlation behind it.

Engagement and satisfaction correlate .81, 95% CI [.75, .87]. Rönkkö and Cho (2022) suggest judging the upper limit: below .80 is no problem, .80 to .90 a marginal problem, .90 to 1 a moderate one, and 1 or above a severe one, where the two can't be told apart. At .87 this pair is a marginal problem, which fits the MSV failure without making it a clear-cut one.

The one test that does come first is whether the three-factor model fits. Here it did, χ²(51) = 57.37, p = .251. With a large sample that test flags even trivial misfit, so read it alongside CFI, RMSEA and SRMR, and the residual correlations, not on its own.

Precision and Sample Size

Power is the chance that a study detects an effect that's really there. MSV isn't tested against anything, so power in that sense doesn't apply. What you plan instead is precision: enough people that the factor correlations, and the loadings behind AVE, are estimated tightly enough for the comparison to mean something. Precision improves with more people, more items per construct and stronger loadings.

With our 300 employees, the engagement–satisfaction correlation's interval runs about ±.06 around .81. Its width shrinks with the square root of the sample size, so with 100 employees it would be roughly ±.10, from about .71 to .91: wide enough to include both "clearly distinct" and "hard to tell apart."

Plan for precision: decide how narrow the interval for the key correlations needs to be, and choose a sample big enough to reach it. Fewer items per construct or weaker loadings call for more people. There's no calculator for this test.

Other Info

Follow-Up and Post Hoc Tests

None. This page estimates rather than tests, so there are no follow-up comparisons to run.

References

  • Fornell, C., & Larcker, D. F. (1981). Evaluating structural equation models with unobservable variables and measurement error. Journal of Marketing Research, 18(1), 39–50. https://doi.org/10.1177/002224378101800104
  • Hu, L., & Bentler, P. M. (1999). Cutoff criteria for fit indexes in covariance structure analysis: Conventional criteria versus new alternatives. Structural Equation Modeling, 6(1), 1–55. https://doi.org/10.1080/10705519909540118
  • Gaskin, J. (2022, December 4). CFA. Gaskination's StatWiki. https://statwiki.gaskination.com/index.php?title=CFA https://statwiki.gaskination.com/index.php?title=CFA
    “If you need to cite these suggested thresholds, please use the following:” (Validity and Reliability)
    “MSV < AVE” (Validity and Reliability)
  • Henseler, J., Ringle, C. M., & Sarstedt, M. (2015). A new criterion for assessing discriminant validity in variance-based structural equation modeling. Journal of the Academy of Marketing Science, 43(1), 115–135. https://doi.org/10.1007/s11747-014-0403-8
    “To satisfy this requirement, each construct’s average variance extracted (AVE) must be compared with its squared correlations with other constructs in the model.” (Comparing average communality and shared variance, p. 116)
    “The most commonly used approach, the Fornell-Larcker criterion, fails to identify discriminant validity issues in the vast majority of cases” (Sensitivity results, p. 124)
  • Rönkkö, M., & Cho, E. (2022). An updated guideline for assessing discriminant validity. Organizational Research Methods, 25(1), 6–47. https://doi.org/10.1177/1094428120968614
    “Fornell and Larcker (1981a) presented a decision rule that discriminant validity holds for two scales if the AVEs for both are higher than the squared factor correlation between the scales.” (AVE/SV or Fornell-Larcker Criterion, p. 12 (OnlineFirst))
    “Therefore, AVE/SV has a high false positive rate, indicating a discriminant validity problem under conditions where most researchers would not consider one to exist” (AVE/SV or Fornell-Larcker Criterion, p. 12 (OnlineFirst))
    “Thus, if there is a threshold, it is likely to fall between .8 and .9.” (On Choosing a Technique and a Cutoff, p. 29 (OnlineFirst))
    “In the Marginal case, the interpretation of the scales as representations of distinct constructs is probably safe.” (A Guideline for Assessing Discriminant Validity, p. 31 (OnlineFirst))
    “The most common misapplication is to compare the AVE values with the square of the scale score correlation, not the square of the factor correlation” (AVE/SV or Fornell-Larcker Criterion, p. 12 (OnlineFirst))
    “Thus, the term “average indicator reliability” might be more informative than “average variance extracted.”” (AVE/SV or Fornell-Larcker Criterion)
  • Campbell, D. T., & Fiske, D. W. (1959). Convergent and discriminant validation by the multitrait-multimethod matrix. Psychological Bulletin, 56(2), 81–105. https://doi.org/10.1037/h0046016
  • Roemer, E., Schuberth, F., & Henseler, J. (2021). HTMT2—An improved criterion for assessing discriminant validity in structural equation modeling. Industrial Management & Data Systems, 121(12), 2637–2650. https://doi.org/10.1108/IMDS-02-2021-0082
  • MacCallum, R. C., Roznowski, M., & Necowitz, L. B. (1992). Model modifications in covariance structure analysis: The problem of capitalization on chance. Psychological Bulletin, 111(3), 490–504. https://doi.org/10.1037/0033-2909.111.3.490
    “The use of alternative a priori models is recommended as a preferred strategy.” (Abstract)

Spot an error? Something still confusing? Tell us at support@statsforpsychology.com.