这一讲要回答两个问题:

  1. 现实里的决定,为什么往往不是"要不要",而是"再多一点,值不值"?
  2. 人为什么会"对激励做出反应"?为什么这件事听上去简单,用起来却很容易出岔子?

上一讲,我们学会了把"被放弃的东西"算清楚,这叫机会成本。这一讲,我们要把这个工具磨得更锋利:不是算整件事的代价,而是算"多做一点"的代价。

一、晚上九点,你要不要再多学一小时?

明天要期末考试。今晚你有 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 月)。当时的问题是:总有家长接孩子迟到,让老师不得不留下来等。

实验分三个阶段:

  1. 前 4 周:只记录迟到的家长数量。
  2. 中间 12 周:10 家托儿所里的 6 家,开始对迟到的家长收取一笔小额罚款;另外 4 家不收(作对照)。
  3. 最后 4 周:取消罚款。

结果出人意料:收了罚款之后,迟到的家长反而明显增加了。 更奇怪的是,取消罚款之后,迟到的人数也没有降回去。

怎么解释?研究者的解释是:在没有罚款的时候,迟到会让家长觉得对不起老师,这是一种社会性的责任感。罚款一出现,这件事的性质变了:迟到变成了"花钱买老师多照看一会儿",一笔明码标价的交易。既然付了钱,心理负担就没有了。而且,当罚款被取消后,这件事已经被当成"可以买的服务"了,责任感回不来。

这个例子告诉我们两件事:

  • 激励不只是"价格"。给一件事加上价格,可能会改变这件事在人们心里的意义。
  • “对激励做出反应"是对的,但你要先搞清楚人们是怎么理解这个激励的。

需要诚实地说一句:这项研究只有 10 家托儿所,解释也不是唯一的。但它至少提醒我们,把"罚款"当成一个简单的"加成本"是不够的。

6.2 边际思维的局限

边际思维很有用,但它不是万能的:

  • 有些决定不能拆成"一点一点”。 要不要读研究生?要不要买房?这种决定是"全有或全无"的,你没法"读 0.3 个研究生"。这时你要比较的是整体,而不是边际。不过,机会成本的思路依然成立:你要问的还是"放弃了什么"。
  • 边际量很难精确估计。 我们的复习例子里,每小时值 120、90、70 元,这些数字是编出来说明问题的。现实里,你不知道第 4 小时到底值多少钱,只能有个大概的感觉。边际思维是一种问法,帮你把问题想清楚,不是一台精确的计算器。
  • 人并不总是这样想。 研究发现,人们常常忽视机会成本,也常常被沉没成本绊住。这是第 39 讲行为经济学要讲的内容。

6.3 常见的误用

误用 正确的想法
“我都投入这么多了,不能半途而废” 过去的投入已经发生,不影响"再多做一点"的决定。只看接下来的边际
“用平均成本判断要不要多做一单位” 平均成本里混着已经确定要花的钱。该看边际成本
“边际 = 很小的、不重要的” 边际指"多一单位",不是"次要"。很多重要的决定恰恰发生在边际上
“边际收益递减 = 越做越没用” 总收益还在增加,只是增加得越来越慢。我们的例子里,7 个小时共 390 元,比 4 个小时的 330 元还多
“激励 = 钱” 任何改变"做一件事的好处或代价"的东西都是激励。有时加钱反而适得其反(见托儿所的例子)
“人是完美的边际计算器” 这是一个模型。人们大致朝这个方向行事,但并不精确

七、小结

这一讲有五个想法,请带走:

  1. 边际:多做一单位带来的变化。现实里大部分决定,是"再多一点,值不值"。
  2. 决策规则:边际收益大于边际成本,就继续;不再大于,就停。最优点在两者刚好相交的地方。
  3. 看边际,不看平均:平均成本里混着已经确定要花的钱,用它判断"多做一单位"会出错。但边际思维不等于整体值得:长期还要覆盖总成本。
  4. 价格反映边际价值:水之所以便宜、钻石之所以贵,是因为"多一杯水"和"多一颗钻石"的边际价值不同。
  5. 激励就是边际的变化:人会对激励做出反应,但反应的是你实际奖励的东西,不一定是你想要的。激励有时还会改变事情本身的意义。

下一讲,我们要把这两个工具(机会成本和边际)用到一个更大的问题上:为什么两个人各自做自己最擅长的事、再互相交换,比每个人什么都自己做,结果更好? 这就是比较优势,也是人类为什么会有分工和贸易的根本原因。

思考题

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。