Documentation
SEM workbench in the browser: upload survey data, define constructs and paths, run PLS or CB-SEM, read the tables, export a report if you need one. Uploads live in a server session for this visit (they are cleared when the service restarts or sleeps).
Home: https://semstudio.org · workspace: /app · this guide: /guide
Use the bar at the top: Data → Model → Analyze → Results.
On the free Render plan the service can sleep after idle time. The first load after sleep may take half a minute or more — wait for it, then continue.
Questionnaire / Likert data — several numeric items per construct, usually 1–5 or 1–7. Column names have to match the model (Trust_1, PU_2, etc.).
HR-style sheets (name, email, salary, department) will upload but will not run a loyalty or TAM model. If you see “Missing columns…”, the model still lists indicators that are not in the file you just loaded. Change the model or the file; the error is doing its job.
Formats: .csv, .xlsx, .xls, .sav.
For a first pass, download a sample CSV from the sample-data repo, then use Upload dataset in the app:
demo_loyalty.csv — Trust → Satisfaction → Loyaltydemo_loyalty_groups.csv — same, plus Segment / Team for MGA and multileveldemo_tam.csv — PEOU → PU → Intentiondemo_engagement.csv, demo_brand.csv, demo_service_quality.csv, demo_elearning.csv — other startersOpen a file on GitHub → Raw / Download, save it on your computer, then upload it here. The README in that repo lists the intended model paths.
After upload you get a short cleaning report and a preview. Variable summary is optional descriptives. Save project / Load project keep the model and advanced settings as JSON (download starters from the projects/ folder in the sample-data repo if you want). Upload the matching CSV first, then load the JSON.
This is where most mismatches happen. A fresh page still shows the loyalty constructs. Upload TAM columns and leave that alone, and the run fails — correctly.
After upload the app often picks a preset when it recognizes the file. If not: choose the right Model preset and Apply preset, or hit Infer from columns, or edit the canvas / text model yourself.
Indicator names must match the data exactly, including underscores. If a generated CSV used PU1 without an underscore, rename the columns or define constructs with those exact names. Do not leave Trust_1 sitting in the model for that file.
Canvas: drag constructs, draw paths (from → to), click a box to assign indicators. The text areas under Text model stay in sync if you prefer typing.
| Control | Notes |
|---|---|
| Algorithm | PLS-SEM is the usual start. PLSc for consistent PLS. CB-SEM via semopy. |
| Bootstrap samples | Used by Bootstrap and by export. 200 is fine for drafts; go higher when CIs matter. |
| Bootstrap CI | BCa by default; percentile available. |
| Predict mode | Blindfolding Q² or PLSpredict folds. |
| WPLS weight column | Only if you have case weights; otherwise leave empty. |
Run SEM estimates the model and fills Results.
You do not need all of them. Open Advanced parameters when a tool needs names (moderator, group column, IPMA target, and so on).
EFA, Pearson, Spearman, ANOVA, chi-square, clusters, validate are exploratory. They are not a substitute for the SEM run.
Export HTML and Export Word need a completed Run SEM first. Export fills bootstrap, mediation, Q², and PLSpredict when it can, so the file is closer to a packed table set even if you only ran SEM once.
Expect loadings and reliability; HTMT / Fornell–Larcker / cross-loadings; paths with f², VIF, and CIs; total effects; SRMR; bootstrap; mediation; Q² / PLSpredict; MICOM if you ran MGA; a short checklist. HTML is better for printing; Word is for pasting into a thesis.
Layout follows whatever you last clicked. A banner names the report type.
On a normal PLS run you get the path diagram, outer loadings, α / ρ_A / CR / AVE, structural paths (R², adj. R², f², VIF), total effects when there are indirect routes, cross-loadings, HTMT, Fornell–Larcker, and SRMR when it is computed.
Common cutoffs people cite: |loading| ≥ 0.70, reliability ≥ 0.70, AVE ≥ 0.50, HTMT < 0.85, VIF < 5, SRMR < 0.08. Pass/Check labels are reminders, not automated decisions.
Report tables is the readable view. Raw JSON is the full payload. After Bootstrap, Mediation, MGA, and the rest, the tables switch to that analysis — Run SEM again if you want the core layout back.
demo_loyalty.csv from the sample datasetsOwn TAM-style file: upload → replace the loyalty model (Infer or hand-build with the real column names) → Run SEM.
| What you see | Likely cause |
|---|---|
| Missing columns listing Trust_1 / Satisfaction_1 / … | Loyalty model still active on a different file |
| Only Employee_ID, Salary, Email… | Wrong kind of data for SEM |
| Export error | No SEM run in the session yet |
| MGA / multilevel error | Group or cluster column name does not match the file |
| Weak AVE / high HTMT | Items or construct definition — not a software bug |
| Site slow / spins a long time on first open | Free instance waking from sleep — wait and retry |
| Upload or results vanished | Service restarted or slept; upload again |
Save project after the model and advanced fields look right. Next time: upload the same CSV, then Load project. The JSON does not replace the dataset.
Common cutoffs cited in SEM practice: loading ≥ .70, α / ρ_A / CR ≥ .70, AVE ≥ .50, HTMT < .85, VIF < 5, SRMR < .08. Pass/Check labels follow those rules of thumb; interpret them with your research design in mind.