背景与挑战
品牌画像:一家北美 DTC 护肤品牌,主要通过 Shopify 独立站销售。月营销预算约 $200k,分布在 6 个渠道:Google Search、Google Shopping、Meta (Facebook+Instagram)、TikTok、YouTube、Amazon Ads。
核心痛点:
- 每个渠道的 Platform ROAS 都"看起来不错",但总销售增长不及预期
- CEO 问"到底哪个渠道在真正拉动销售",没人能给出有数据支撑的回答
- 双11 大促前需要做预算分配决策,但没有量化依据
- 请外部咨询做 MMM 报价 $50k + 8 周交付周期,太慢太贵
关键矛盾:各平台自报 ROAS 之和 = 4.7x,但总收入 / 总花费 = 2.8x。中间的差距被平台归因的重复计算和"搭便车"效应吃掉了。
数据准备
品牌的数据团队花了一个下午收集了 2 年(104 周)的周粒度数据:
广告花费(6 列)
- 从各平台 Ads Manager 导出周花费,统一为美元
- Google Search + Shopping 合并为 google_search_spent
- Meta 从 Ads Manager 导出,含 Facebook + Instagram
- TikTok 从 TikTok Ads Manager 导出
- YouTube 从 Google Ads 导出(视频 campaign)
- Amazon Ads 从 Seller Central 导出
销售数据(1 列)
- 从 Shopify 后台导出周净收入(不含税、不含运费)
- Amazon 销售单独一列,合计到总 revenue 中
控制变量(4 列)
- discount_depth:每周折扣力度(百分比)
- holiday_flag:节假日虚拟变量(黑五、网一、母亲节等 = 1)
- competitor_promo:竞品大促标记(1/0)
- new_product_launch:新品上市标记(1/0)
数据格式
最终 CSV:11 列 × 104 行。date 列用每周一日期。所有花费列空白填 0。总大小约 15KB。
运行 Instant Mode
上传 CSV 到 SparkX Instant Mode。9 步 Pipeline 自动执行:
- 数据质量检查(3 秒):检测到 2 个潜在异常值(双11 周收入是平均值的 4 倍),标记为节假日效应,保留但加入 holiday_flag 控制
- 自动列识别(1 秒):正确识别 6 个花费列、1 个目标列、4 个控制列
- EDA 探索性分析(5 秒):生成相关性矩阵,发现 Meta 和 YouTube 花费相关系数 0.72(中等共线性),不影响建模但会在报告中标注
- Adstock 拟合(8 秒):为每个渠道拟合衰减率,TikTok 衰减率最高(0.85),说明 TikTok 的广告记忆衰减最快
- Hill 饱和拟合(10 秒):每个渠道拟合饱和曲线参数。YouTube 已接近饱和(花费达到半饱和点的 2.3 倍),TikTok 远未饱和(只到半饱和点的 0.3 倍)
- 模型回归(15 秒):Ridge 回担 + Block Bootstrap CI。R² = 0.91,MAPE = 6.8%
- 预算优化(5 秒):基于 miROAS 均衡原则计算最优分配
- AI 洞察生成(8 秒):Claude 生成中文执行摘要和行动建议
- HTML 报告打包(2 秒):可下载的完整报告
总耗时:57 秒。比报价 $50k / 8 周的咨询方案快了约 700,000 倍。
结果解读
| 渠道 | 花费 | 贡献度 | ROAS | miROAS | 饱和度 |
|---|---|---|---|---|---|
| Google Search | $45k | 23% | 3.4x | 2.1 | 68% |
| Meta | $60k | 31% | 3.1x | 1.3 | 82% |
| TikTok | $20k | 18% | 5.2x | 4.7 | 21% |
| YouTube | $35k | 12% | 1.8x | 0.3 | 95% |
| Amazon Ads | $25k | 11% | 2.9x | 1.1 | 74% |
| Google Shopping | $15k | 5% | 2.2x | 0.9 | 81% |
关键发现
- TikTok 是最大机会:miROAS 4.7(最高),饱和度仅 21%。每多花 $1 回来 $4.7,但当前预算只占 10%
- YouTube 过度投放:饱和度 95%,miROAS 仅 0.3。再花 $1 只回来 $0.3,应该砍预算
- Meta 接近饱和:ROAS 看起来不错(3.1x),但 miROAS 只有 1.3,继续加预算不划算
- Google Search 仍有空间:miROAS 2.1,饱和度 68%,可以适度增加
行动与复盘
基于 MMM 结果,品牌调整了下一季度的预算分配:
| 渠道 | 调整前 | 调整后 | 变化 |
|---|---|---|---|
| TikTok | $20k | $45k | +125% |
| YouTube | $35k | $10k | -71% |
| Meta | $60k | $55k | -8% |
| Google Search | $45k | $50k | +11% |
| Amazon Ads | $25k | $25k | 0% |
| Google Shopping | $15k | $15k | 0% |
总预算保持 $200k 不变,只是重新分配。
6 周后复盘
调整执行 6 周后,结果:总收入增长 14.2%(从周均 $580k 到 $662k),总 ROAS 从 2.8x 提升到 3.3x。TikTok 的 ROAS 从 5.2x 降到 3.8x(符合预期 — 加预算后边际收益递减),但总收入增量远大于其他渠道的减量。
经验教训
- 不要用 Platform ROAS 做预算决策:各平台自报 ROAS 之和远大于真实 ROAS,差距来自重复归因。MMM 消除了这个问题。
- miROAS 比 ROAS 更重要:TikTok 的 ROAS(5.2x)确实最高,但关键是 miROAS(4.7)也最高 — 说明它还没饱和。如果只看 ROAS,你不知道该加还是不该加。
- 饱和度是隐性杀手:YouTube 的 ROAS(1.8x)不算最低,但饱和度 95% 意味着几乎每一块钱都在浪费。砍掉 $25k YouTube 预算转移给 TikTok 是回报最高的动作。
- Instant Mode 足够做预算决策:不需要 Expert Mode 的贝叶斯后验分布。Ridge + Bootstrap CI 的精度足以支撑季度预算分配。
- 每季度跑一次:执行预算调整后,渠道饱和度会变化。建议每季度重跑一次 MMM,更新 miROAS 和最优分配方案。
最终结论:从"不知道哪个渠道有效"到"有数据支撑的预算方案",总耗时 = 1 个下午(数据准备)+ 57 秒(建模)= 半天。而外部咨询需要 8 周和 $50k。