This tutorial walks you through building a complete Marketing Mix Model in Simba using sample data. By the end, you will have fitted a model, read the results, run a scenario, and generated an optimized budget recommendation.
Time required: About 2 hours (most of that is model fitting time — you can step away while it runs).
What you’ll need: A Simba account (create one here) and the sample dataset below.
Download the sample CSV file: sample-marketing-data.csv
This is a synthetic dataset with 104 weeks (2 years) of data for a fictional brand. It contains:
| Column | Description |
|---|---|
date |
Weekly dates (Mondays) |
revenue |
Total weekly revenue ($) — this is the target KPI |
tv_spend |
Weekly TV advertising spend ($) |
facebook_spend |
Weekly Facebook/Meta spend ($) |
google_ads_spend |
Weekly Google Ads spend ($) |
email_spend |
Weekly email marketing spend ($) |
avg_price_index |
Average price index (control variable, ~1.0) |
The data is already in the format Simba expects: one row per week, a date column, a KPI column, media spend columns, and a control variable. For your own data, see Data Requirements.
daterevenueavg_price_index is classified as a control variableIf the semantic matcher doesn’t auto-classify a column correctly, you can drag it to the right category. See Smart Defaults for how Simba identifies channels.
After uploading, click Run Data Validator. The Data Validator runs 10 automated checks on your data:
With the sample data, you should see mostly green (pass) results. If you see warnings about outliers, that’s expected — the Validator flags them for your review, but they don’t block model fitting.
For this tutorial, accept the Smart Defaults — Simba’s automatic configuration:
You don’t need to change anything for your first model. The defaults are designed to produce good results for most datasets. Once you’re comfortable with the platform, you can customize every prior — see Model Configuration.
Click Fit Model to start the Bayesian estimation process.
What to expect: Model fitting takes 15–60 minutes depending on data size. You’ll see a progress indicator. You can close the browser and come back — the model runs on Simba’s servers.
Once the model finishes, navigate to the Active Model tab. You’ll see several key outputs:
A stacked area chart showing how total revenue breaks down into:
Look for: Which channel contributes the most? Is the base demand high (meaning marketing adds a small layer) or low (meaning marketing drives most of the revenue)?
For each channel, Simba reports the posterior mean ROAS with a 94% HDI (credible interval). For example:
TV ROAS: 1.85 (94% HDI: 1.20 – 2.55)
This means: for every $1 spent on TV, the model estimates $1.85 in incremental revenue, and there’s a 94% probability the true value falls between $1.20 and $2.55.
Click the Response Curves tab to see saturation curves for each channel. These show how each channel’s incremental return changes with spend level. Look for:
Navigate to the Scenario Planner tab. This lets you ask “what if?” questions about your budget:
google_ads_spend by 20% and decrease tv_spend by 20%.Simba will show you the projected change in total revenue, with uncertainty bands. Compare the scenario to the current allocation to see whether the reallocation improves or hurts total performance.
See Scenario Planning for the full guide.
Navigate to the Optimization tab. The Budget Optimizer finds the mathematically optimal allocation:
The optimizer will recommend a reallocation that maximizes expected revenue given the response curves and your constraints. Compare the “Current” vs “Optimized” allocation to see where the model suggests moving budget.
In this tutorial, you:
Ready to use your own data?
Want to customize the model?
Something not working?