这一讲要回答两个问题:
- 现实里的决定,为什么往往不是"要不要",而是"再多一点,值不值"?
- 人为什么会"对激励做出反应"?为什么这件事听上去简单,用起来却很容易出岔子?
上一讲,我们学会了把"被放弃的东西"算清楚,这叫机会成本。这一讲,我们要把这个工具磨得更锋利:不是算整件事的代价,而是算"多做一点"的代价。
一、晚上九点,你要不要再多学一小时?
明天要期末考试。今晚你有 7 个小时,可以用来复习。你也可以去做家教,每小时 40 块。
现在是晚上九点,你已经复习了 3 个小时。你坐在桌前,看着时钟,在想:还要不要再学一小时?
先停一下。注意你面对的是什么问题。
你不是在问"我要不要复习",这个问题早就有答案了:当然要。你也不是在问"复习这件事划不划算"。你问的是:在已经学了 3 个小时的基础上,再多学一个小时,值不值?
这是现实里大部分决定的真实样子。你不会在"完全不吃"和"吃到撑"之间一次性选一个,你是一口一口地吃,每一口都在问"再来一口吗"。你不会在"完全不运动"和"每天练 3 小时"之间选,你是在"今天要不要再跑一公里"这种小问题上一次次做选择。
为了把问题讲清楚,我们给每个小时标一个数:这一小时让你多得到的价值,折成钱是多少。 学得越多,边际上能再提高的地方越少,所以这个数是递减的:
| 第几个小时 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|
| 这一小时多带来的价值(元) | 120 | 90 | 70 | 50 | 30 | 20 | 10 |
为什么递减?因为你会先复习最重要的内容。第 1 个小时,你学的是最容易丢分、也最容易学会的重点,收获最大。越到后面,剩下的都是边边角角,一小时的收获越来越少。
先猜一猜。 每多学一小时,你就少做一小时家教,要放弃 40 块。你今晚应该学几个小时?
先想一个答案,再往下看。
二、边际:多一点,会怎样
2.1 一小时一小时地想
我们顺着时间,一小时一小时地问:多学这一小时,得到的比放弃的多吗?
| 第几个小时 | 多得到的价值 | 多放弃的(机会成本) | 值得学吗? |
|---|---|---|---|
| 1 | 120 | 40 | 值得,净赚 80 |
| 2 | 90 | 40 | 值得,净赚 50 |
| 3 | 70 | 40 | 值得,净赚 30 |
| 4 | 50 | 40 | 值得,净赚 10 |
| 5 | 30 | 40 | 不值得,净亏 10 |
| 6 | 20 | 40 | 不值得,净亏 20 |
| 7 | 10 | 40 | 不值得,净亏 30 |
所以答案是 4 个小时。学到第 4 个小时,每一小时还是划算的;从第 5 个小时开始,多学一小时的收获,已经不够抵你放弃的 40 块了。
把它画出来:每根柱子是这一小时的边际收益,橙色横线是每小时的机会成本。柱子比橙线高的小时值得学(蓝色),比橙线低的不值得(灰色)。
图里的红色虚线是一个对照:如果兼职时薪涨到 65 元,只有前 3 根柱子比它高,你就只该学 3 小时。这一点后面第五节会用到。
这个"多出来的那一点",在经济学里有一个名字:边际(marginal)。
边际收益(marginal benefit):多做一单位,多得到的好处。 边际成本(marginal cost):多做一单位,多付出的代价。
上面表格的第二列是边际收益,第三列是边际成本。这里的边际成本,就是你上一讲学的机会成本:多学一小时,要放弃的那一小时家教。
2.2 一条决策规则
把上面的做法总结成一句话:
只要多做一单位的边际收益大于边际成本,就继续;一旦边际收益不再大于边际成本,就停下。
在连续的情形里(比如你可以学 3.7 小时),最优点就是边际收益恰好等于边际成本的地方。我们这里是一小时一小时的整数,所以说成"只要大于就继续"。
2.3 为什么这条规则是对的
你可能会问:为什么不去算"总共"?学得越多,总收益越高啊(7 个小时共 390 元),为什么不学满 7 个小时?
因为你要看的不是总收益,是总收益减去总成本(净收益)。我们把每种学法的净收益算出来:
| 学了几小时 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|---|
| 总净收益(元) | 0 | 80 | 130 | 160 | 170 | 160 | 140 | 110 |
净收益一路涨到 4 小时(170),然后开始下降。涨的时候,是因为每一小时多得到的比多放弃的多;降的时候,是因为每一小时多得到的比多放弃的少。 峰顶,恰好就是边际收益刚好不再大于边际成本的地方。
画出来更直观:
曲线先上升、后下降,最高点在 4 小时。上升的那一段,对应上图里蓝色的柱子(每多学一小时都在净赚);下降的那一段,对应灰色的柱子(每多学一小时都在净亏)。 两张图说的是同一件事,一张看"每一小时",一张看"累计起来"。
2.4 让代码替你算一遍
我们用两种方法求最优学习时间:一种是"暴力",把每种学法的净收益都算出来取最大值;另一种是上面的边际规则。两种方法应该给出同样的答案。然后我们让兼职时薪变一变,看最优学习时间怎么变。
import numpy as np
# 复习:第 1、2、3…小时,各自"多带来"的价值(元,已折算成钱)
mb = np.array([120, 90, 70, 50, 30, 20, 10]) # 边际收益:一小时比一小时少
def best_hours(wage):
"""每多学一小时,就少兼职一小时,机会成本是 wage 元。返回 (净收益最大的小时数, 学 0~7 小时的净收益)。"""
total_benefit = np.concatenate([[0], np.cumsum(mb)]) # 学 0~7 小时的总收益
net = total_benefit - wage * np.arange(len(mb) + 1) # 总收益 - 总机会成本
return int(np.argmax(net)), net
h, net = best_hours(40)
print("兼职时薪 40 元:学 0~7 小时的净收益 =", net.astype(int).tolist())
print(f"净收益最大:学 {h} 小时")
# 边际规则:只要"多学一小时的收益 > 多学一小时的成本",就继续学
rule = int(np.sum(mb > 40))
print(f"边际规则的答案:{rule} 小时,和上面一致:{rule == h}")
print("\n兼职时薪 -> 最优学习小时数(暴力求最大 / 边际规则)")
for wage in [25, 45, 65, 85, 115, 130]:
print(f"{wage:>4} 元 {best_hours(wage)[0]} / {int(np.sum(mb > wage))}")
输出:
兼职时薪 40 元:学 0~7 小时的净收益 = [0, 80, 130, 160, 170, 160, 140, 110]
净收益最大:学 4 小时
边际规则的答案:4 小时,和上面一致:True
兼职时薪 -> 最优学习小时数(暴力求最大 / 边际规则)
25 元 5 / 5
45 元 4 / 4
65 元 3 / 3
85 元 2 / 2
115 元 1 / 1
130 元 0 / 0
两件事值得看:
- 两种方法每一行都一致。 边际规则不是一个经验口诀,它和"把所有方案都算一遍"得到的结果完全相同,只是省事得多。你不用把所有方案摆出来,只需要一小时一小时地问。
- 时薪越高,你学得越少。 兼职时薪 25 元时学 5 小时;涨到 65 元,只学 3 小时;涨到 130 元,一小时都不值得学了。你的"学习意愿"一点没变,变的是多学一小时要放弃的东西。这个想法,我们在第五节会用到。
2.5 一个容易觉得别扭的地方
第一次读到这里,你可能会问:我已经学了 3 个小时了,吃了那么多苦,这些难道不该算进"要不要再学"的决定里吗?
不该。因为不管你接下来学不学第 4 个小时,前 3 个小时都已经过去了,它们不会因为你的新决定而改变。这和上一讲沉没成本是同一个道理:决策只看"接下来会怎样",不看"已经怎样了"。 你要比较的,永远是"多做这一点"和"不多做这一点"之间的差别。
小结: 边际 = 多做一单位带来的变化。决策规则:边际收益大于边际成本就继续,不再大于就停。最优点在边际收益刚好不再大于边际成本的地方。
三、为什么看"边际",不看"平均":一个航班
边际思维最实用的地方,是它能帮你避开一个很常见的错误:用平均数做决定。
3.1 一个收益经理的难题
假设你是一家航空公司的收益经理。一趟航班的账是这样的(数字为示意):
- 这趟航班只要起飞,不管坐多少人,都要花 90,000 元(燃油、机组、起降费……)
- 每多载一位乘客,额外多花 100 元(餐食、行李、少量燃油……)
- 现在已经卖出了 150 个座位
平均每位乘客的成本是多少?(90,000 + 100 × 150) ÷ 150 = 700 元。
这时,一个旅行团来找你:他们想包下 10 个空座位,每个座位出 300 元。
先猜一猜。 你接不接?
很多人的第一反应是:“300 比 700 低,亏本,不接。”
3.2 对的算法
我们换一种问法:接这 10 个座位,会让航班多花多少钱?多赚多少钱?
- 多花的:10 个人 × 每人 100 元 = 1,000 元(边际成本)
- 多赚的:10 个人 × 每人 300 元 = 3,000 元(边际收益)
- 净多出:2,000 元
接。因为那 90,000 元的固定成本,不管你接不接这个团,都已经确定要花了。它是平均成本 700 元里的大头,却和"要不要多载这 10 个人"这个决定无关。如果你拒绝,而且这个时候也没有别的乘客会来买这 10 个座位(这是例子的前提),它们就会空着飞走,一分钱也赚不到。
# ── 航班:起飞前还有空座,一个旅行团想包下 10 个,每个座位出 300 元 ──
fixed = 90_000 # 这趟航班不管坐多少人都要花的钱(燃油、机组、起降费…)
per_pax = 100 # 多载一位乘客,额外多花的钱(餐食、行李、少量燃油…)
sold = 150 # 已经卖出的座位
offer = 300
avg_cost = (fixed + per_pax * sold) / sold
print(f"平均每位乘客的成本:{avg_cost:.0f} 元;多载一位乘客的边际成本:{per_pax} 元")
print(f"拿平均成本比:{offer} < {avg_cost:.0f},拒绝? 拿边际成本比:{offer} > {per_pax},接受。")
print(f"接受这 10 个座位,航班利润多出 {(offer - per_pax) * 10} 元")
# ── 销售提成:同一个客户,销售员可以报 100,也可以打八折报 80 ──
unit_cost, rate = 60, 0.05
options = {"报价 100": (100, 0.40), "报价 80": (80, 0.70)} # (价格, 客户肯成交的概率)
print()
for name, (price, prob) in options.items():
profit = (price - unit_cost) * prob # 公司的期望利润
by_sales = rate * price * prob # 按销售额提成:销售员的期望提成
by_profit = rate * profit # 按利润提成:销售员的期望提成
print(f"{name}:公司期望利润 {profit:5.2f} | 销售员期望提成:按销售额 {by_sales:.2f},按利润 {by_profit:.2f}")
输出:
平均每位乘客的成本:700 元;多载一位乘客的边际成本:100 元
拿平均成本比:300 < 700,拒绝? 拿边际成本比:300 > 100,接受。
接受这 10 个座位,航班利润多出 2000 元
报价 100:公司期望利润 16.00 | 销售员期望提成:按销售额 2.00,按利润 0.80
报价 80:公司期望利润 14.00 | 销售员期望提成:按销售额 2.80,按利润 0.70
(代码的后半段留到第五节再解释。)
3.3 但这不等于"所有座位都可以卖 300"
这里我要提醒一个很容易被带偏的地方。边际思维回答的是"多做一单位,值不值",不回答"这件事整体,值不值得做"。
如果这趟航班的 180 个座位全部按 300 元卖掉:收入是 180 × 300 = 54,000 元,成本是 90,000 + 100 × 180 = 108,000 元,亏 54,000 元。航空公司长期必须让总收入覆盖总成本,否则这条航线就开不下去。
所以,两个层面的问题要分开看:
| 你在问什么 | 该看什么 |
|---|---|
| 在已有的基础上,再多做一单位,值不值? | 边际收益 vs 边际成本 |
| 这件事整个项目,值不值得做?长期能不能活下去? | 总收入 vs 总成本(以及机会成本) |
另外,现实里的机票定价还要更复杂:临近起飞的机票有时反而更贵,因为这时买票的往往是赶时间的商务旅客,愿意付更高的价格。这涉及怎么对不同的人收不同的价钱,我们在第 15 讲会专门讲。这里的例子只是想说明一件事:一个决定要不要"多做一点",看的是边际,不是平均。
小结: 平均成本里混着已经确定要花的钱,它不适合用来判断"多做一单位"。判断"多做一点",要看边际。
四、钻石与水:边际决定价值
边际思维还解开了经济学史上一个很有名的谜。
4.1 一个让人困惑的问题
水对生命来说,比什么都重要。没有水,你活不过几天。钻石呢?除了好看,几乎没什么实际用处。
可是在大多数地方,水几乎不要钱,钻石却贵得惊人。为什么?
4.2 答案:看边际,不看总量
关键是要分清两个问题:
- 水整体对你有多重要?(总价值)非常重要。
- 再多一杯水,对你有多重要?(边际价值)取决于你已经有多少水。
在城市里,你一天用掉几十杯水:喝、做饭、洗澡、冲厕所、浇花。最后多出来的那一杯水,大概只是用来拖地。它的边际价值很低,所以价格很低。
在沙漠里,你手里只剩最后一杯水。这一杯水可能关系到你能不能走出沙漠。它的边际价值极高,价格也就极高。同样是水,价格差了几十倍,不是因为水变了,而是因为你"已经有多少"变了。
钻石呢?它稀少,每个人拥有的数量很少,多一颗钻石的边际价值很高,所以贵。
价格反映的是边际价值,不是总价值。
4.3 一段历史
这个问题常被称作"水与钻石的悖论",通常和亚当·斯密(1776 年的《国富论》)联系在一起。
1871 年,Carl Menger 和 William Stanley Jevons 分别出版了书,用"边际"的想法重新讲价值;1874 年,Léon Walras 也提出了类似的想法。三个人是各自独立想到的。这件事后来被称为"边际革命"。
需要说明的是:有史学研究认为,斯密本人未必把这当成一个"悖论",“悖论"的说法是后人塑造出来的。但不管历史上谁想到了什么,它是理解"价格看边际、不看总量"的最好例子。
到第 7 讲,你会看到这个想法在市场里长什么样:决定价格范围的,正是"边际上"的买家和卖家,也就是刚好买得起的那个人、刚好愿意卖的那个人。
4.4 边际成本也会越来越高
边际成本通常也不是固定的。想想上一讲那座小岛:让第 1 个人从打鱼改种稻,只少 3 担鱼;让第 8 个人改种稻,要少 16 担鱼。每多种一担稻要放弃的鱼,越来越多。那条越来越陡的生产可能性边界,说的就是边际成本递增。
边际收益往往递减(你越学越吃力),边际成本往往递增(你越做越顾不上别的)。两条线迟早会相交,那个交点,就是你该停下的地方。这也是为什么现实里没有人会无限地做某件事,哪怕那件事本身是好事。
五、激励:改变边际,就改变行为
5.1 激励就是边际的变化
回到学习这个例子。刚才我们看到,兼职时薪从 25 元涨到 130 元,最优学习时间从 5 小时降到 0 小时。你的"学习意愿"没有变,变的是多学一小时要放弃什么。
这就是经济学里的激励(incentive):
激励:任何改变"做某件事的边际收益或边际成本"的东西。
做家教的时薪涨了,是改变了"多学一小时"的成本。考试对你突然变得更重要了,是改变了"多学一小时"的收益。激励不是什么神秘的东西,它就是边际变了。
经济学说”人会对激励做出反应",意思是:当边际变了,人们会调整自己的选择。这不等于"人只为钱行动"。激励可以是钱,也可以是时间、名誉、舒适、风险、面子。凡是改变了"做这件事的好处或代价"的东西,都是激励。
5.2 但激励常常带来设计者没想到的结果
激励听上去简单:想让人多做什么,就奖励什么。可是真正麻烦的地方在于:人会对"你实际奖励的东西"做出反应,而你实际奖励的,常常不是你真正想要的。
我们看一个例子。你是一家公司的老板,销售员每卖出一件商品,拿销售额的 5% 作为提成。商品的成本是 60 元,标价 100 元。
现在,销售员面对一个客户,有两种报价:
- 报价 100 元:客户肯买的概率是 40%
- 打八折,报价 80 元:客户肯买的概率是 70%
先猜一猜。 销售员会报哪个价?你作为老板,希望他报哪个价?
我们回头看代码的后半段(输出里的最后两行):
- 报价 100 元:公司期望利润 (100 − 60) × 0.4 = 16.00;销售员期望提成 5% × 100 × 0.4 = 2.00。
- 报价 80 元:公司期望利润 (80 − 60) × 0.7 = 14.00;销售员期望提成 5% × 80 × 0.7 = 2.80。
销售员会选打折(2.80 > 2.00),公司却更希望他不打折(16.00 > 14.00)。
问题出在哪?销售员的提成,按销售额算,而不是按利润算。打折虽然让每件的利润变少,但销量上去了,销售额(也就是他的提成)反而更高了。他没有做错,他只是对你给他的激励做出了反应。
如果你把提成改成按利润算(5% 的利润):报价 100 时是 0.80,报价 80 时是 0.70,销售员的偏好就和公司对齐了。
不过,按利润提成也不是万能的:销售员往往影响不了成本,利润也可以被"做账"左右,他可能因此回避那些利润不确定的新客户。没有完美的激励,只有"更少偏离你的目标"的激励。 这类问题,经济学里叫"委托—代理问题",第 21 讲会系统讲。
小结: 激励不是魔法,它就是边际的变化。人会对激励做出反应,但反应的是"你实际奖励的",不一定是"你想要的"。设计激励的第一个问题,是问:我奖励的东西,和我想要的东西,是同一个吗?
六、证据、局限与争议
6.1 当罚款变成价格
“人会对激励做出反应”,最直接的推论是:对一件事收费或罚款,这件事就会变少。 这条推论大体成立,但有一个很有名的反例。
Uri Gneezy 和 Aldo Rustichini 在 2000 年发表于 Journal of Legal Studies 的一项研究,在以色列海法的 10 家托儿所做了实验(1998 年 1 月到 6 月)。当时的问题是:总有家长接孩子迟到,让老师不得不留下来等。
实验分三个阶段:
- 前 4 周:只记录迟到的家长数量。
- 中间 12 周:10 家托儿所里的 6 家,开始对迟到的家长收取一笔小额罚款;另外 4 家不收(作对照)。
- 最后 4 周:取消罚款。
结果出人意料:收了罚款之后,迟到的家长反而明显增加了。 更奇怪的是,取消罚款之后,迟到的人数也没有降回去。
怎么解释?研究者的解释是:在没有罚款的时候,迟到会让家长觉得对不起老师,这是一种社会性的责任感。罚款一出现,这件事的性质变了:迟到变成了"花钱买老师多照看一会儿",一笔明码标价的交易。既然付了钱,心理负担就没有了。而且,当罚款被取消后,这件事已经被当成"可以买的服务"了,责任感回不来。
这个例子告诉我们两件事:
- 激励不只是"价格"。给一件事加上价格,可能会改变这件事在人们心里的意义。
- “对激励做出反应"是对的,但你要先搞清楚人们是怎么理解这个激励的。
需要诚实地说一句:这项研究只有 10 家托儿所,解释也不是唯一的。但它至少提醒我们,把"罚款"当成一个简单的"加成本"是不够的。
6.2 边际思维的局限
边际思维很有用,但它不是万能的:
- 有些决定不能拆成"一点一点”。 要不要读研究生?要不要买房?这种决定是"全有或全无"的,你没法"读 0.3 个研究生"。这时你要比较的是整体,而不是边际。不过,机会成本的思路依然成立:你要问的还是"放弃了什么"。
- 边际量很难精确估计。 我们的复习例子里,每小时值 120、90、70 元,这些数字是编出来说明问题的。现实里,你不知道第 4 小时到底值多少钱,只能有个大概的感觉。边际思维是一种问法,帮你把问题想清楚,不是一台精确的计算器。
- 人并不总是这样想。 研究发现,人们常常忽视机会成本,也常常被沉没成本绊住。这是第 39 讲行为经济学要讲的内容。
6.3 常见的误用
| 误用 | 正确的想法 |
|---|---|
| “我都投入这么多了,不能半途而废” | 过去的投入已经发生,不影响"再多做一点"的决定。只看接下来的边际 |
| “用平均成本判断要不要多做一单位” | 平均成本里混着已经确定要花的钱。该看边际成本 |
| “边际 = 很小的、不重要的” | 边际指"多一单位",不是"次要"。很多重要的决定恰恰发生在边际上 |
| “边际收益递减 = 越做越没用” | 总收益还在增加,只是增加得越来越慢。我们的例子里,7 个小时共 390 元,比 4 个小时的 330 元还多 |
| “激励 = 钱” | 任何改变"做一件事的好处或代价"的东西都是激励。有时加钱反而适得其反(见托儿所的例子) |
| “人是完美的边际计算器” | 这是一个模型。人们大致朝这个方向行事,但并不精确 |
七、小结
这一讲有五个想法,请带走:
- 边际:多做一单位带来的变化。现实里大部分决定,是"再多一点,值不值"。
- 决策规则:边际收益大于边际成本,就继续;不再大于,就停。最优点在两者刚好相交的地方。
- 看边际,不看平均:平均成本里混着已经确定要花的钱,用它判断"多做一单位"会出错。但边际思维不等于整体值得:长期还要覆盖总成本。
- 价格反映边际价值:水之所以便宜、钻石之所以贵,是因为"多一杯水"和"多一颗钻石"的边际价值不同。
- 激励就是边际的变化:人会对激励做出反应,但反应的是你实际奖励的东西,不一定是你想要的。激励有时还会改变事情本身的意义。
下一讲,我们要把这两个工具(机会成本和边际)用到一个更大的问题上:为什么两个人各自做自己最擅长的事、再互相交换,比每个人什么都自己做,结果更好? 这就是比较优势,也是人类为什么会有分工和贸易的根本原因。
思考题
1. 一家自助餐厅,每位 98 元,随便吃。你已经付了钱。你应该吃到什么时候停?为什么自助餐厅敢这样定价,不怕亏本?
提示:98 元已经付了,无论你吃多少都收不回来,这是沉没成本,不影响你吃不吃下一盘。多吃一盘的边际成本(食物本身)对你是 0,但吃得越多越撑,边际收益会递减,最后变成负的。你应该吃到"再吃一盘让你更难受"为止。餐厅敢这样定价,是因为每个人的边际收益都会很快递减,没有人能无限地吃下去。
2. 回到复习的例子。如果这次考试对你特别重要,每一个小时带来的价值都变成原来的 1.5 倍(即 180、135、105、75、45、30、15),兼职时薪仍是 40 元。你应该学几个小时?
提示:只要某一小时的价值 > 40 就学:180、135、105、75、45 都大于 40,30 和 15 小于 40。所以学 5 个小时,比原来多 1 小时。注意:变的只是边际收益,规则没变。
3. 一家工厂生产 100 件产品的总成本是 10,000 元(平均每件 100 元)。现在有一个一次性的特殊订单,要求再生产 1 件,生产这第 101 件的边际成本是 70 元,客户愿意出 90 元。你接不接?
提示:接。边际收益 90 > 边际成本 70,多赚 20 元。平均成本 100 元不应该成为拒绝的理由。前提是:这单不会拉低你对其他客户的价格,而且产能够用。
4. 一家公司按代码行数给程序员发奖金。你觉得会发生什么?你会怎么重新设计?
提示:程序员对激励做出反应:每多写一行有奖金,边际收益变高。他会倾向于把一行拆成多行、复制粘贴、写冗长的代码。公司想要的是"好用的软件",奖励的却是"行数",两者不一致。重新设计没有完美方案:按交付的功能、按用户使用情况、按团队整体成果……每一种都有新的问题,这正是第 21 讲要讨论的难题。
5. 如果有一天,人们发现了一个巨大的钻石矿,钻石的数量变得像沙子一样多,钻石的价格会怎样?注意,钻石"好看"这个特性并没有变。
提示:价格会暴跌。钻石的总价值(它的用途)没有变,但多一颗钻石的边际价值大大下降了,因为每个人手里已经有很多。用后面(第 7 讲)会讲的话说,这是供给大幅增加,价格下降、数量上升。
参考与延伸
- Gneezy, U., & Rustichini, A. (2000). A Fine Is a Price. Journal of Legal Studies, 29(1), 1–17.
- Menger, C. (1871). Grundsätze der Volkswirtschaftslehre;Jevons, W. S. (1871). The Theory of Political Economy;Walras, L. (1874). Éléments d’économie politique pure。