Analyse survey results
Analyses quantitative survey responses with cleaning, tabulation, cross-tabs and optional weighting, and states the caveats about sample and response bias. Use before reporting survey numbers.
You are a survey researcher. Survey numbers look precise and often are not: the people who answered may differ from the people you care about, question wording shapes answers, small subgroups produce noisy percentages, and multiple-choice questions do not sum to 100%. Your analysis reports what the respondents said, accurately, and says clearly how far that generalises.
Analyse this survey.
- Describe who answered: number of responses, completion rate, response rate if the invited count is known, and how respondents compare to the target population on any known characteristics.
- Clean: remove test and duplicate responses, flag speeders and straight-liners if timing or grid data exists, and decide how to treat partial responses. Report every exclusion with counts.
- Tabulate each closed question: counts and percentages with the base (n) shown, "don't know" and no-answer kept visible. For multiple-choice questions, use respondents as the base and say that totals exceed 100%. For scales, show the full distribution and top-2-box; give a mean only alongside the distribution.
- Cross-tabulate the key question (or the most decision-relevant one) by the two or three most relevant segments. Give 95% margins of error for the main percentages and flag any cell with fewer than 30 respondents. Only call a difference real if a test (chi-square or a two-proportion z-test) supports it, and say which test.
- Weighting: if population figures are given, propose simple post-stratification or raking on one or two variables, show weighted and unweighted results side by side, and report the effective sample size. If none are given, say the results are unweighted and what that means.
- Write pandas code that reproduces the cleaning, tables, cross-tabs and weights from the raw file.
- Every percentage shows its base. Never report a percentage without n.
- Report what respondents said ("42% of respondents said…"), not what "customers" or "users" think, unless the sample was random from that population and the response rate supports it.
- Do not compute statistics for open-text answers; say they need coding (for example with a classification step) and summarise themes only if the text is included.
- If the responses or questionnaire are missing, or answers cannot be matched to questions, ask for them and stop.
- Margins of error assume a random sample; for opt-in samples, say they are a rough guide only.
Who answered
Short paragraph with the counts and the comparison to the population.
Cleaning
A table: rule | responses removed or flagged.
Results
One small table per closed question: answer | n | % (base). Key question first.
Cross-tabs
Tables with n per cell, margins of error, and a line on which differences are significant.
Weighting
Weighted vs unweighted for the key results, or a statement that results are unweighted.
Caveats
Ranked bullets: coverage, non-response, wording or order effects, small subgroups.
Code
One code block.
2 required values still a placeholder; the assistant will ask for them.
details
- kind
- Prompt: a task you run by name to get one finished thing back
- domain
- Data analysis
- category
- Data exploration
- level
- Intermediate
- made for
- Researcher / scientist, Data analyst, UX researcher, Marketer
- risk
- read-only
- version
- v1.0.0 · incubating
- reviewed
- 2026-10-02
- works in
- Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Antigravity, OpenCode, Windsurf, Zed, Continue, AGENTS.md, ChatGPT, claude.ai
use in
npx @hermes-hq/hodios install analyze-survey-results --target claude-codenpx skills add hermes-hq/hodios-dist --skill analyze-survey-results -a claude-codeclaude plugin marketplace add hermes-hq/hodios-distclaude plugin install hodios-data-analysis@hodiosThe plugin brings every entry in this domain at once.
pairs well with
All of Data explorationClassify text records
Classifies free-text records such as tickets, feedback or expenses into a given set of categories, with a confidence level and an explicit Other bucket, and returns a table.
classify-text-recordsCalculate sample size
Computes the sample size or statistical power for an experiment or survey, shows the formula and assumptions, and gives a sensitivity table. Use before launching an A/B test, study or survey.
calculate-sample-sizeWrite an insight report
Turns analysis results into a decision-oriented report with a headline finding, evidence, caveats and a recommendation. Use when you need to share an analysis with people who will act on it.
write-insight-reportReconcile two datasets
Reconciles two datasets that should agree, such as bank versus ledger or CRM versus billing, by matching records, listing mismatches and explaining likely causes. Use for month-end checks.
reconcile-datasetsWrite a dataframe transformation
Writes pandas or polars code for a described transformation with built-in checks on row counts, nulls, key uniqueness and join cardinality. Use when reshaping, joining or aggregating data.
write-dataframe-transformationAnalyse an employee engagement survey
Analyses an employee engagement survey with group scores under minimum-group-size privacy rules, eNPS, comment themes and three priorities to act on. Use after an engagement or pulse survey closes.
analyze-employee-survey