The same results as lavaan, AMOS and SmartPLS — checked, not just claimed
Explonia computes your analysis in the browser. To prove the numbers are right, we run each analysis on one shared dataset in Explonia and in an independent Python reference (statsmodels, scipy), and for every analysis in the tables below also in R (lavaan, psych, afex, car, seminr, semTools). Power analysis is not yet checked against R here; it is checked against Python and internal consistency tests. The engines agree within a strict numerical tolerance: most values agree to three decimals, and every difference is shown in the tables below. The data and the R script are here too; reproduce it yourself.
The short version: on one shared dataset, Explonia's analysis engine produces the same numbers as R — the widely used open-source reference implementation (lavaan, psych, afex) — across descriptive statistics, CFA, CB-SEM, reliability, EFA, measurement invariance, t-tests, ANOVA, repeated measures, regression, mediation, moderation, crosstabs and conjoint.
Nearly every value below agrees to three decimal places, and each difference is shown in the tables. The dataset and the R script are published at the bottom of this page, so you can run the comparison yourself.
How we tested it
One synthetic dataset (N = 450, four latent factors of 3–4 items each, plus grouping and outcome variables) was analysed by up to three independent engines (power analysis is not yet checked against R):
- Explonia's engine — the exact code that runs in your browser.
- Python reference — an independent implementation in
statsmodels,scipyandnumpy. - R reference — widely used open-source references:
lavaan(CFA/SEM),psych(reliability, EFA),afex(repeated measures),car,seminr(PLS-SEM),semTools(HTMT).
Every metric is compared automatically. When the engines agree within a strict numerical tolerance, the result is treated as correct. In the tables below, the Explonia column is the in-browser engine value and the R column is the independent R value — both rounded to three decimals.
Beyond the numbers below, the same checking process also covers analyses run with missing data, edge cases (very small samples, zero variance, tied ranks), every user-facing option (post-hoc tests, rotations, bootstrap settings), the wording of the automatic APA write-ups, the numbers in exported reports (Word, LaTeX), and the R/Python scripts Explonia generates so a result can be reproduced outside the browser.
Descriptive statistics
| Statistic | Explonia | R (base R) | Match |
|---|---|---|---|
| Mean | 3.893 | 3.893 | ✓ |
| SD | 1.410 | 1.410 | ✓ |
| Skewness | 0.066 | 0.066 | ✓ |
| Kurtosis (excess) | −0.509 | −0.509 | ✓ |
N = 450. Skewness and kurtosis use the adjusted Fisher-Pearson estimator (G1/G2) — the standard APA/SPSS-reporting convention.
Measurement model — CFA, reliability & validity
| Metric | Explonia | R (lavaan / psych) | Match |
|---|---|---|---|
| CFI | 0.997 | 0.997 | ✓ |
| TLI | 0.996 | 0.996 | ✓ |
| RMSEA | 0.016 | 0.016 | ✓ |
| SRMR | 0.029 | 0.027 | ✓ |
| Cronbach's α (factor TR) | 0.853 | 0.853 | ✓ |
| McDonald's ω / CR (factor TR) | 0.853 | 0.853 | ✓ |
| AVE (factor TR) | 0.592 | 0.592 | ✓ |
| AVE (factor SA) | 0.600 | 0.600 | ✓ |
Model degrees of freedom = 84 in both. The small SRMR difference (0.029 vs 0.027) is well within normal cross-program variation and gives the same conclusion: excellent fit. ω/CR are computed from standardized loadings (so ω = CR for a congeneric one-factor model, matching lavaan's standardizedSolution).
Structural model — CB-SEM
| Metric | Explonia | R (lavaan) | Match |
|---|---|---|---|
| CFI | 0.997 | 0.997 | ✓ |
| RMSEA | 0.015 | 0.015 | ✓ |
| β (TR → LO), standardized | 0.401 | 0.401 | ✓ |
| β (SA → LO), standardized | 0.314 | 0.314 | ✓ |
CB-SEM uses the same maximum-likelihood estimator as AMOS and lavaan. The table above compares fit statistics and standardized paths with lavaan; AMOS itself is not run in the harness.
Structural model - PLS-SEM (composite algorithm)
| Metric | Explonia | R (seminr) | Match |
|---|---|---|---|
| β (TR → LO), standardized | 0.365 | 0.365 | ✓ |
| β (SA → LO), standardized | 0.292 | 0.292 | ✓ |
| β (TR → ME), standardized | 0.393 | 0.393 | ✓ |
| R² (LO) | 0.492 | 0.492 | ✓ |
| R² (ME) | 0.155 | 0.155 | ✓ |
| HTMT (TR, LO) | 0.702 | 0.702 | ✓ |
| ρA (construct TR) | 0.857 | 0.857 | ✓ |
| AVE (construct TR) | 0.693 | 0.693 | ✓ |
Same N = 450 dataset (paths TR, SA, ME → LO and TR → ME), estimated as composite PLS with path weighting - the classic algorithm SmartPLS calls "PLS Algorithm", not PLSc. R reference: seminr::composite() for loadings, weights, paths, R², f², reliability and AVE; semTools::htmt() for HTMT. Bootstrap (B = 5000, independent random seed on each side) agrees in sign and significance on every path, with |Δp| ≤ 0.02. SmartPLS itself is not run in the harness - the verification scripts are part of the engine test suite.
Measurement invariance (multi-group CFA)
| Model | CFI | RMSEA | Δχ² p, Explonia | R | Match |
|---|---|---|---|---|---|
| Configural | 1.000 | 0.000 | — | — | ✓ |
| Metric (vs. configural) | 1.000 | 0.000 | 0.785 | 0.785 | ✓ |
| Scalar (vs. metric) | 1.000 | 0.000 | 0.741 | 0.741 | ✓ |
| Strict (vs. scalar) | 1.000 | 0.000 | 0.235 | 0.235 | ✓ |
Tests whether the measurement model holds across groups by adding constraints step by step — equal loadings (metric), then equal intercepts (scalar), then equal residual variances (strict). A non-significant Δχ² p-value at each step means invariance holds; here it holds at every step, matching lavaan's compareFit.
Group differences, regression, mediation & conjoint
| Analysis | Statistic | Explonia | R | Match |
|---|---|---|---|---|
| Independent t-test | t | −6.128 | −6.128 | ✓ |
| effect size | Cohen's d | −0.579 | −0.579 | ✓ |
| One-way ANOVA | F (2, 447) | 33.434 | 33.434 | ✓ |
| effect size | η² | 0.130 | 0.130 | ✓ |
| Two-way ANOVA | F (interaction) | 7.709 | 7.709 | ✓ |
| Repeated measures | F (2, 898) | 191.705 | 191.705 | ✓ |
| Linear regression | R² | 0.219 | 0.219 | ✓ |
| Logistic regression | odds ratio (x1) | 2.487 | 2.487 | ✓ |
| Mediation | indirect effect | 0.377 | 0.377 | ✓ |
| Moderation | interaction b | 0.424 | 0.424 | ✓ |
| Crosstab | χ² (4) | 124.405 | 124.405 | ✓ |
| effect size | Cramér's V | 0.372 | 0.372 | ✓ |
| Conjoint | importance, attr. A | 42.3% | 42.3% | ✓ |
EFA (KMO, Bartlett, eigenvalues) is also covered by the same harness and matches psych exactly. PLS-SEM follows the same composite PLS algorithm (path weighting) as SmartPLS and is cross-checked against the R package seminr and semTools (HTMT): loadings, path coefficients, R², f², reliability (alpha, ρA, ρC) and AVE agree to three decimals, HTMT to six, and bootstrap intervals (B = 5000) agree in sign and significance. SmartPLS itself is not run in the harness; bootstrap intervals differ between packages by seed. See the full PLS-SEM comparison below.
Reproduce it yourself
Don't take our word for it. The exact dataset and the R reference script are here — open R, run the script on the data, and compare the numbers with the tables above.
- golden_data.csv — the shared synthetic dataset (N = 450).
- golden_ref.R — the R reference script (
lavaan,psych,afex,car). - golden_R.json — the values R produced (the R column above).
Inside Explonia this same check runs before every release that touches the analysis engine, so the numbers stay aligned as the product evolves. See the underlying methods — estimators, thresholds and citations — under Methods.
Frequently asked questions
Does Explonia give the same results as lavaan, AMOS and SmartPLS?
On a shared dataset, Explonia's descriptive statistics, CFA, CB-SEM, reliability (α, ω, CR, AVE), measurement invariance, ANOVA, regression, mediation and conjoint match the values from R (lavaan, psych, afex) within a strict numerical tolerance — most values to three decimal places, and every difference is shown in the table. CB-SEM uses the same maximum-likelihood estimator as AMOS and lavaan. Fit statistics and standardized paths are compared with lavaan on this page; AMOS itself is not run in the harness. PLS-SEM follows the same composite PLS algorithm (path weighting) as SmartPLS and is cross-checked against the R package seminr and semTools (HTMT): loadings, path coefficients, R², f², reliability (α, ρA, ρC) and AVE agree to three decimals, HTMT to six, and bootstrap intervals (B = 5000) agree in sign and significance. SmartPLS itself is not run in the harness; bootstrap intervals differ between packages by seed.
How is the validation done?
Every analysis is computed independently on one dataset — Explonia's own in-browser engine, an independent Python reference (statsmodels/scipy), and for most analyses an R reference (lavaan, psych, afex, car, seminr, semTools). The paths are compared automatically; agreement indicates the result is correct. PLS-SEM is cross-checked against R (seminr, semTools); power analysis has no exact open R reference, so it is checked against Python and internal-consistency tests.
Can I reproduce the validation myself?
Yes. The synthetic dataset, the R reference script and the resulting R values are published on this page for download, so you can re-run the comparison and check the numbers independently.
Run your whole study in one place
Build it, collect it, and get results you can defend — without leaving your browser. Free to start. No credit card.
Start free