输入与变量
投入、季节性与基准
输入与变量 是 CoddyKit 上的免费 Digital Marketing Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Digital Marketing Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Digital Marketing Academy 课程共包含 4 节课。
MMM输入数据的构成
MMM的效果取决于其输入数据的质量。输入数据分为三类:媒体变量(您可以控制的杠杆)、控制变量(您无法控制的驱动因素)以及因变量(您要预测的结果)。
以正确的粒度和频率准备好这些数据,是构建可信模型的大部分工作。
dependent : sales or revenue (weekly)
media : spend or impressions per channel
controls : price, promo, seasonality, macro
transforms: adstock, saturation因变量
请选择清晰的结果指标:销量、收入或新客户数。请明确保持口径一致,包括采用含税还是未税口径,以及是否排除退货。
请按照您能够采取行动的粒度建模,通常是全国或地区层面的周度数据。日度数据会增加噪声,月度数据则会掩盖动态变化。
媒体变量:投入与展示次数
您可以将媒体数据作为投入,或作为曝光量(展示次数、总收视点、点击次数)输入。展示次数可以将投放量与成本分离开来,这在每千次展示成本大幅波动时很重要。
一种常见做法是:用展示次数建模响应曲线,再换算回投入以计算ROI。请始终确保同一渠道内的单位保持一致。
TV -> GRPs
Search -> clicks or spend
Social -> impressions
OOH -> spend (no impression feed)广告滞后效应(累积影响)
广告投放结束后,其效果仍会持续。广告滞后效应模型会刻画这种衰减,因此本周的销售额会反映前几周的媒体投放。
衰减率λ控制记忆长度:0.0表示没有累积影响,0.8表示较长的尾部效应。TV通常比搜索具有更高的广告滞后效应。
adstock_t = media_t + lambda * adstock_(t-1)
lambda=0.3 (search): fast decay
lambda=0.7 (TV): slow decay, long memory饱和效应(边际回报递减)
投入翻倍很少会带来销量翻倍。饱和变换用于捕捉边际回报递减,避免模型永远进行线性外推。
希尔变换或对数变换会使响应曲线弯曲,为每个渠道提供合理的上限和高效运营区间。
Hill: response = x^a / (x^a + k^a)
low spend -> steep gains
high spend -> flattening curve (saturated)控制变量
控制变量吸收非媒体驱动因素,避免这些因素被错误地归功于广告。关键变量包括:价格、促销、分销或可获得性、竞争对手活动以及宏观经济指数。
遗漏重要控制变量会使媒体系数产生偏差,通常会夸大恰好在促销期间投放的那个渠道的作用。
price : average selling price
promo : 0/1 flag or % discount depth
distribution : stores or % ACV
competitor : share of voice / spend
macro : consumer confidence, CPI季节性与趋势
许多产品具有明显的季节性模式。可以使用月份或周次虚拟变量、傅里叶项或季节性指数来捕捉这些模式,并加入趋势项反映潜在的增长或下降。
如果没有这些变量,旺季中恰好投放的媒体渠道就会错误吸收季节性销售增长。
fourier: sin(2*pi*t/52), cos(2*pi*t/52)
trend: t (linear) or spline
holiday: black_friday_flag, holiday_flag基础与增量的拆分
MMM会将基础部分(在没有新增媒体投入时仍能实现的销售额,包括品牌资产、分销和价格带来的部分)与媒体驱动的增量贡献分离开来。
健康的模型通常会显示一个规模较大且稳定的基础部分。如果媒体“解释”了几乎所有结果,说明控制变量可能过于薄弱。
total_sales = base + sum(media_contributions)
base : 70%
incremental : 30% (split across channels)多重共线性的陷阱
当各渠道同步投放时,模型无法区分它们各自的效果,系数会变得不稳定,有时甚至会反转符号。
请使用相关矩阵和VIF进行诊断。可以通过随时间改变投入、增加地理区域差异,或使用贝叶斯先验来稳定估计结果。
corr(TV, Social) = 0.91 -> high collinearity
VIF > 10 -> unstable estimate
fix: stagger flights, add geo splits, priors变量规范检查清单
将所有序列对齐到同一个日历和时区。请有意识地填补缺口,不要默默填入零,因为零可能表示“没有投入”,也可能表示“没有数据”。
如果时间窗口较长,请对货币序列进行通胀调整,并记录每一次变换,以确保结果可复现。
整合输入数据
最终的设计矩阵会叠加原始控制变量和经过变换的媒体变量。每个媒体列在进入回归之前,都已经先进行广告滞后效应处理,再进行饱和变换。
这个流程顺序很重要:先处理累积影响(效果何时产生),再处理饱和效应(效果产生多少)。
raw_TV -> adstock(lambda=0.7) -> saturation(Hill)
-> column TV_eff in model
sales = base + b1*TV_eff + b2*Search_eff
+ b3*price + b4*promo + season快速检查
为正确的现象选择正确的变换。
总结
MMM的输入包括因变量、媒体变量(先经过广告滞后效应处理,再进行饱和变换)以及控制变量(价格、促销、分销、季节性和宏观因素)。
强有力的控制变量可以防止媒体渠道被过度归功,而干净、尺度一致且记录完善的序列数据则是可信模型的基础。
常见问题解答
「输入与变量」课时是免费的吗?
是的 — 「输入与变量」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Digital Marketing Academy 课程的其余内容,请升级到 CoddyKit PRO。 Digital Marketing Academy 课程共包含 4 节课。
「输入与变量」这节课中我会学到什么?
投入、季节性与基准 你通过在浏览器中直接运行的动手代码来练习 Digital Marketing Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Digital Marketing Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Digital Marketing Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「输入与变量」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Digital Marketing Academy 课中编写并运行代码吗?
能。每节 Digital Marketing Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。