Guides
How to analyze survey data
Weighting, nonresponse, open-ends and testing differences across groups — the steps between a raw response file and a defensible finding.
A survey export is a table of raw answers, and the gap between that table and a finding you can act on is where most of the real work happens. This guide covers what happens after the survey closes: cleaning, weighting, testing, and reading open-ends, whichever tool collected the responses.
Start by checking who actually answered
Before any analysis, compare your respondent profile to what you know about the population you meant to reach — age, region, customer tier, tenure, whatever you have. A gap here is nonresponse bias: the people who chose to respond differ systematically from those who did not, and no amount of clever analysis on the responses you got corrects for the people you never heard from. If your customer base is 60% mobile users but your survey respondents are 30% mobile, either your questions or your findings about mobile users specifically deserve extra scepticism.
Watch the response-rate trend during fielding too. A survey that gets easier to complete near the deadline (shorter, simpler answers, faster completion times) is picking up respondents who are answering to finish, not to inform — a pattern worth flagging or filtering, not silently averaging in.
Weighting: making the sample look like the population
If your respondent mix does not match your target population on variables you care about, survey weighting corrects it before you calculate a topline. The basic mechanism, for a single variable:
weight = population_share / sample_share If customers over 55 are 30% of your customer base but only 15% of your respondents, each respondent over 55 gets a weight of 30/15 = 2.0 — counted twice — while a group that answered in exact proportion to its population share gets a weight of 1.0. Real weighting usually adjusts several variables jointly (age, region, tier), through a method such as raking, rather than one at a time, because adjusting for age alone can throw region back out of balance.
Weighting is not free: it increases the effective margin of error, since a few heavily-weighted respondents now carry outsized influence. Report the unweighted base size alongside the weighted result, and treat any subgroup with a small unweighted base — even after weighting brings its headline number in line — as directional, not precise.
Test differences before you report them
"Segment A scored 4.2, segment B scored 3.9" is not yet a finding — it might be noise. Before reporting a gap between groups as real, check statistical significance: whether the difference is larger than you would expect from sample size alone, typically via a t-test for means or a chi-square test for categorical answers like Yes/No or multiple-choice shares. A rough gut check: with two groups of roughly 100 respondents each, differences under 8–10 percentage points on a simple yes/no question are usually within noise; smaller groups need bigger gaps to trust.
Report a confidence interval alongside key toplines, not just a point estimate — "42% (38–46%)" tells a reader more than "42%" alone, and makes clear when two numbers that look different could plausibly be the same.
-- a simple crosstab: satisfaction by segment, with base sizes
select
segment,
count(*) as base_n,
avg(satisfaction_score) as mean_score,
sum(case when satisfaction_score >= 9 then 1 else 0 end) * 1.0 / count(*) as pct_promoter
from survey_responses
where completion_status = 'complete'
group by segment
order by base_n desc; Always show the base size next to any cut of the data. A promoter share calculated on 12 responses is not comparable to one calculated on 1,200, even though both are single numbers.
Reading open-ends without losing the signal
Open-text answers are where the specific, actionable detail usually lives, and where analysis most often gets skipped because it is slower than averaging a scale. A workable approach for most teams:
- Read a genuine random sample — not just the first fifty — before coding anything, to avoid anchoring on whatever you happened to see first.
- Build a short code list (8–15 themes) from what you actually read, not from what you expected to find.
- Code a sample by hand, or with a text-analytics tool, and check inter-coder agreement if more than one person is coding.
- Report theme frequency alongside representative verbatim quotes — the frequency without the quote is dry, the quote without the frequency is anecdote.
For volume beyond what manual reading can cover, see how to analyze text data for classification and topic-modeling approaches that scale.
Choosing where the data lives
- You need enterprise-grade governance, driver analysis, and a research panel in one platform: Qualtrics is built for large, cross-functional research programs, priced on usage rather than seats.
- You want fast, affordable self-serve collection with built-in significance testing on paid tiers: SurveyMonkey covers the common question types and crosstabs without a large setup project.
- You want full control of the data, self-hosted, with no response caps: LimeSurvey's Community Edition is free and open source, a common choice for academic and institutional researchers who need the raw data to stay on their own infrastructure.
- You need the survey response to trigger a workflow — routing, alerts, a follow-up ticket: Alchemer adds automation on top of standard collection.
Tracking the same question over time
A single wave tells you where things stand; a tracker tells you whether they are moving. If you repeat a question wave over wave, hold the exact wording, response scale, and fielding method constant — a rephrased question, a new response scale, or even a different time of year can shift the topline as much as real opinion change would, and you will have no way to tell the two apart after the fact. Keep a methodology log alongside the data: the exact question text, the sample source, and the weighting scheme used for each wave, so a reader two years from now can tell whether a trend break reflects the world changing or the survey changing.
Common mistakes
- Reporting a topline without the base size, so a reader cannot tell a robust finding from a fragile one.
- Weighting on demographics but never checking whether the unweighted base for a key subgroup is large enough to weight responsibly in the first place.
- Treating sampling bias as something only pollsters worry about — a customer-satisfaction survey sent only to logged-in users, or only to people who didn't churn, has the same problem.
- Skipping the open-ends entirely because the coding is slower than the scale questions, and losing the reason behind the number.
- Comparing two waves of the same tracking survey without checking whether the questionnaire, sample source, or weighting scheme changed between waves — any of which can move the number more than real opinion did.
For choosing a survey platform itself — panel access, question types, pricing model — see how to choose a survey tool and every tool in this category. For the specific challenges of political and public-opinion polling, see how to read an election poll.