Analyze hypothetical purchase task data
Upload wide-format survey data, aggregate responses at each price, and fit the exponentiated demand model (Koffarnus et al., 2015), overall and by group. Everything runs in your browser: your data never leaves your computer, and your session is saved locally so you can pick up where you stopped.
Upload your survey data
Wide format: one row per respondent, one column per price point. Cells hold
either a yes/no purchase response (e.g. 1/0,
Yes/No) or a quantity the respondent would buy.
Extra columns (ID, sex, site, condition…) are fine; you can use one for
group comparisons. CSV or Excel (.xlsx).
What your data should look like:
| id | sex | 0 | 50 | 100 | 200 |
|---|---|---|---|---|---|
| R001 | Female | Yes | Yes | Yes | No |
| R002 | Male | Yes | Yes | No | No |
| R003 | Female | Yes | No | No | No |
One row per respondent, one column per price tested. Extra columns like “id” and “sex” are fine; only the columns that look like prices get used for fitting.
Clean & recode (optional)
Build new grouping variables or exclude rows. Your uploaded values are never modified: your recodes are applied on top of them and saved with your session. Blank cells in price columns are already treated as missing automatically.
New grouping variable
Create a new column by recoding an existing one: collapse categories (sites into regions) or bin numbers into ranges (age into age groups). The original column is kept; the new one appears as a grouping option in the next step.
Combine two experimental-group column sets
If you ran an experiment where two groups answered the same purchase-task questions, but your survey tool (e.g. Google Forms with branching) gave each group its own copy of those questions, your spreadsheet will have two separate sets of price columns — one filled in for respondents in Group A, the other for Group B, with the unused set blank for each person. This tool merges those two sets of columns into a single set of price columns, and adds one new column recording which group each respondent was in.
List each group's columns below in the order the price points were actually asked in your survey — line 1 across all three lists (Group A, Group B, and the new column names) should refer to the same price point: the version Group A saw, the version Group B saw, and what to call it once merged. Each respondent is placed in whichever group they actually answered. Your original columns are left untouched.
Exclude rows
Drop respondents from all analyses by a column value (e.g. a failed attention check).
Map your columns
Columns
Price columns were auto-detected from the headers; check the assigned price values and fix any that are wrong.
Data preview
Results
⚙ Analysis settings
Individual responses
Aggregated data
The aggregated values the curves are fitted to, at each price.
⬇ Export results
Figures
Data