两步法,CCP(Conditional Choice Probability)完全指南
CCP(Conditional Choice Probability)完全指南
第一章:CCP 的基本概念
1.1 直观理解:一句话定义
CCP = 在给定状态下,选择某个决策的概率
|
|
1.2 正式定义
设:
- $x_t$ = 状态(连续变量,如里程、年龄、财务状况等)
- $d_t \in \{0, 1\}$ = 决策(是否采取某个行动)
- $\epsilon_t$ = 不可观测的私人冲击(econometrician 看不到)
条件选择概率:
$$P(d_t = 1 | x_t = x) = \Pr(d_t = 1 | x_t = x)$$含义:给定状态为 $x$ 时,代理人选择 $d=1$ 的概率。
1.3 为什么有"冲击"?
现实观察:同样的状态下,决策不同
|
|
引入冲击的目的:
- ✓ 解释同状态下的决策异质性
- ✓ 使得 CCP 是"概率"(0 到 1 之间)
- ✓ 允许用离散选择模型(logit, probit 等)
第二章:从理论到实证的三个层次
2.1 层次 1:理论模型中的 CCP
动态规划模型:
代理人最大化:
$$V(x) = \max_{d} \{ u(x,d) + \beta \mathbb{E}[V(x') | x, d] \}$$这导出最优决策规则 $d^*(x)$(确定性)。
但加入冲击后:
代理人最大化:
$$V(x) = \max_d \{ u(x,d) + \epsilon_d + \beta \mathbb{E}[V(x') | x, d] \}$$给定状态 $x$ 和冲击 $\epsilon = (\epsilon_0, \epsilon_1)$,最优决策是:
$$d^*(x, \epsilon) = \begin{cases} 1 & \text{if } u(x,1) + \epsilon_1 + \beta \mathbb{E}[V|d=1] \geq u(x,0) + \epsilon_0 + \beta \mathbb{E}[V|d=0] \\ 0 & \text{otherwise} \end{cases}$$CCP 的定义:
$$P(d=1|x) = \Pr(d^*(x,\epsilon) = 1 | x) = \Pr(\epsilon_1 - \epsilon_0 \leq \Delta u(x))$$其中 $\Delta u(x) = [u(x,0) - u(x,1)] + \beta[\mathbb{E}[V|d=0] - \mathbb{E}[V|d=1]]$
2.2 层次 2:在数据中观察 CCP
原始数据(观测到的):
|
|
构造 CCP(从数据提取):
|
|
典型形状:S 形曲线
|
|
其中 $x^*$ 是维修阈值(CCP = 0.5 的点)
2.3 层次 3:在估计中使用 CCP
结构估计的关键角色:
给定参数 $\theta = (\rho, RC, c_1, c_2)$,可以:
- 求解动态规划模型 → 得到价值函数 $V(x; \theta)$
- 从价值函数计算理论 CCP:$P(d=1|x; \theta)$
- 比较理论 CCP 与数据中的经验 CCP
- 最小化二者的距离 → 估计 $\theta$
|
|
第三章:数学细节
3.1 离散选择模型中的 CCP
假设:私人冲击 $\epsilon$ 服从 Type-I 极值分布(Gumbel)
$$F_\epsilon(\epsilon) = \exp(-e^{-\epsilon})$$结果:CCP 有 logit 形式
$$P(d=1|x) = \frac{\exp(V_1(x))}{\exp(V_0(x)) + \exp(V_1(x))} = \frac{1}{1 + \exp(V_0(x) - V_1(x))}$$其中:
- $V_a(x)$ = 选择 $a$ 的"消费效用" + 未来期望价值
- $V_0(x) = u(x,0) + \beta \mathbb{E}[V(x')|d=0]$
- $V_1(x) = u(x,1) + \beta \mathbb{E}[V(x')|d=1]$
logit 的含义:
|
|
3.2 Rust 模型中的 CCP
具体例子:车辆维修决策
状态:$x_t$ = 里程
流收益:
$$ u(x,d) = \begin{cases} -c(x) & \text{if } d = 0 \text{ (不维修,支付维护成本)} \\ -RC - c(0) & \text{if } d = 1 \text{ (维修,支付维修成本RC)} \end{cases} $$状态转移:
$$x_{t+1} = x_t + 1 + \epsilon_{growth,t}$$(假设每期里程增加 1 个单位,加随机冲击)
Bellman 方程(discrete time, 1-period):
$$V(x) = \max_d \{ u(x,d) + \epsilon_d + \beta \mathbb{E}[V(x+1) | d] \}$$简化(忽略状态增长的冲击):
$$V(x) = \max_d \{ u(x,d) + \epsilon_d + \beta V(x+1) \}$$CCP(利用 logit 假设):
$$P(d=1|x) = \frac{\exp(\bar{V}_1(x))}{\exp(\bar{V}_0(x)) + \exp(\bar{V}_1(x))}$$其中:
$$\bar{V}_0(x) = -c(x) + \beta V(x+1)$$$$\bar{V}_1(x) = -RC - c(0) + \beta V(0)$$
关键观察:
$$P(d=1|x) = \frac{\exp(-RC - c(0) + \beta V(0))}{\exp(-c(x) + \beta V(x+1)) + \exp(-RC - c(0) + \beta V(0))}$$简化(令 $\Delta = -RC + c(x) - c(0) + \beta V(0) - \beta V(x+1)$):
$$P(d=1|x) = \frac{1}{1 + \exp(-\Delta)}$$第四章:CCP 的三种估计方法
4.1 方法 1:非参数估计(无模型)
直接从数据计算经验频率
|
|
输出示例:
|
|
4.2 方法 2:半参数估计(Hotz-Miller CCP 方法)
思路:用非参数 CCP 反推模型参数
|
|
4.3 方法 3:参数最大似然估计
思路:给定参数,计算理论 CCP,匹配数据中的经验 CCP
|
|
第五章:CCP 的性质与应用
5.1 CCP 的关键性质
性质 1:CCP 由状态唯一确定
$$P(d=1|x) = f(x)$$即:给定状态,决策概率是确定的(虽然决策本身不确定,但概率是)
|
|
性质 2:CCP 的平滑性
如果状态 $x$ 连续变化,CCP 应该相对平滑变化(除非有结构性的阈值)
|
|
性质 3:CCP 的有界性
$$0 \leq P(d=1|x) \leq 1, \quad \forall x$$
|
|
5.2 CCP 在识别中的作用
应用 1:识别维修成本 RC
|
|
应用 2:检验模型假设
|
|
第六章:CCP 的常见陷阱与注意事项
6.1 陷阱 1:数据稀疏导致的 CCP 不稳定
|
|
6.2 陷阱 2:忽视选择偏差
|
|
6.3 陷阱 3:状态测量误差
|
|
第七章:CCP vs 直接模型估计
7.1 为什么要用 CCP?
| 方面 | CCP 方法 | 直接动态规划 |
|---|---|---|
| 计算效率 | ✓ 快(非参数 CCP 一次性估计) | ✗ 慢(每次梯度步都要解) |
| 模型灵活性 | ✗ 依赖 Logit 假设 | ✓ 更灵活 |
| 参数识别 | ✓ 半参数更稳健 | ✗ 容易过拟合 |
| 反事实分析 | ✗ 困难(需要完整模型) | ✓ 容易 |
7.2 CCP vs 直接极大似然对比
|
|
总结:CCP 速查表
CCP 的定义
$$P(d=1|x) = \Pr(选择\ d=1\ |\ 状态\ x)$$三种估计方法
| 方法 | 算法 | 优点 | 缺点 |
|---|---|---|---|
| 非参数 | 局部平均/光滑 | 无模型假设 | 样本需求大 |
| 半参数 | CCP → 反演 V → 估计 θ | 快速 | 需要 Logit 假设 |
| 参数 | θ → 解 DP → CCP → MLE | 精确 | 计算慢 |
快速检查清单
- CCP 是否在[0,1]范围内?
- CCP 是否有 S 形(单调)形状?
- 样本量是否足够(n > 100)?
- 是否存在测量误差?
- 是否有选择偏差?
- 状态是否合理变化?
通俗版
CCP(条件选择概率)的直观讲解
第一章:CCP 是什么
1.1 最简单的定义
CCP = 在给定状态下,选择某个行动的概率
比如:
- 状态:你的旧车已跑了 15 万公里
- 行动:是否进行大修
- CCP:在 15 万公里这个状态,你选择大修的概率是多少?
1.2 为什么叫"条件"选择概率
因为概率以状态为条件,记作:
$$P(d=1|x)$$其中:
- $d$ = 决策(1=大修,0=不大修)
- $x$ = 状态(里程)
- 竖线表示"给定…条件"
1.3 为什么有概率而不是确定决策
现实中同样的里程,不同人做出不同决策:
15 万公里的 100 辆车中:
- 45 辆选择大修
- 55 辆选择不大修
这种异质性可能来自:
- 每个人对可靠性的偏好不同
- 每个人的经济状况不同
- 有些人打算卖车,有些人打算继续开
- 还有我们看不到的其他原因
经济学家的处理方式: 用概率来描述这种异质性
$$P(d=1|x=15) = \frac{45}{100} = 0.45$$第二章:CCP 的三个来源
2.1 来源 1:经验观察(数据中的 CCP)
直接计数法:
如果我们有很多观测,可以这样计算 CCP:
- 找出所有状态在$x$附近的观测
- 计算这些观测中选择$d=1$的比例
- 这个比例就是 CCP 的估计值
例如,汽车维修数据中:
- 在 15 万公里 ±5 万公里的所有观测中
- 统计有多少车选择了大修
- 大修的比例 ≈ 该里程的 CCP
这就是非参数 CCP 估计,完全不需要任何模型假设,直接从数据读出。
2.2 来源 2:理论模型(动态规划中的 CCP)
想象一个决策者面临以下问题:
状态:车的状态为$x$(里程)
两个选择:
- 选择 0:不大修,支付维护成本$c(x)$,车状态下期增加到$x+1$
- 选择 1:进行大修,支付大修费用$RC$,车状态重置为 0
决策者要最大化生命周期效用:
$$V(x) = \max_d \{ u(x,d) + \beta \mathbb{E}[V(x')|d] \}$$其中:
- $u(x,d)$ = 当期收益(成本)
- $\beta$ = 折现因子
- $\mathbb{E}[V(x')|d]$ = 选择$d$后的未来期望价值
关键问题: 给定状态$x$,决策者选择$d=1$的概率是多少?
答案取决于:两个选择的价值比较结果
2.3 来源 3:私人冲击(为什么出现概率)
即使模型是确定的,我们也观察到随机决策,原因是私人冲击:
每个代理人选择时面临的效用不完全相同:
$$V(x) = \max_d \{ u(x,d) + \epsilon_d + \beta \mathbb{E}[V(x')|d] \}$$其中$\epsilon_d$是 econometrician(数据分析者)看不到的因素。
这些不可观测的因素可能是:
- 对舒适度/安全的个人偏好
- 对可靠性的风险态度
- 出行计划(计划卖车的时间)
- 其他我们没有数据的私人信息
经济学家假设: $\epsilon_d$服从某个分布(通常是极值分布)
结果: CCP 变成一个概率
$$P(d=1|x) = \Pr(\text{选择1的效用} \geq \text{选择0的效用})$$$$= \Pr(\epsilon_1 - \epsilon_0 \leq \Delta V(x))$$
如果$\epsilon$服从标准的极值分布,这等价于logit 形式:
$$P(d=1|x) = \frac{\exp(V_1(x))}{\exp(V_0(x)) + \exp(V_1(x))} = \frac{1}{1+\exp(V_0(x)-V_1(x))}$$第三章:理解 CCP 的形状
3.1 典型的 CCP 曲线
想象维修决策的 CCP 随里程增加而变化:
|
|
这是为什么?
- 里程少时(x 很小):车状况好,维护成本低,不值得大修 → P(维修)≈0
- 里程中等时(x≈x*):维修与不维修的成本接近,边际情况 → P(维修)≈0.5
- 里程多时(x 很大):车状况差,维护成本高,必须大修 → P(维修)≈1
3.2 维修阈值$x^*$的经济含义
在维修阈值处,两个选择的价值完全相等:
$$V_0(x^*) = V_1(x^*)$$即:
$$-c(x^*) + \beta V(x^*+1) = -RC + \beta V(0)$$重新整理:
$$RC = c(x^*) - c(0) + \beta[V(0) - V(x^*+1)]$$这说明: 如果我们知道:
- 维修阈值$x^*$在哪(从 CCP 曲线看)
- 成本函数$c(x)$的参数
- 折现因子$\beta$
- 价值函数的值
就可以直接计算出维修成本 RC!
这是 CCP 在参数识别中最重要的应用。
第四章:从数据到理论的三层递进
4.1 第一层:非参数 CCP(纯数据,无模型)
做法: 直接从数据计算选择比例
给定状态$x$,找出所有处于该状态附近的观测,计算其中选择$d=1$的比例:
$$\hat{P}(d=1|x) = \frac{\sum_i \mathbb{1}(d_i=1, x_i \approx x)}{\sum_i \mathbb{1}(x_i \approx x)}$$优点:
- 完全不需要模型假设
- 直观易懂
- 可以检验模型是否合理
缺点:
- 需要足够样本
- 在数据稀疏的状态区间估计方差大
应用: 作为"事实"来检验理论模型
4.2 第二层:理论 CCP(给定参数)
做法:
- 给定参数(成本函数、折现因子、维修成本)
- 求解动态规划问题 → 得到价值函数$V(x)$
- 根据价值差异计算 CCP
其中:
- $V_0(x)$ = 不维修的价值 = $-c(x) + \beta V(x+1)$
- $V_1(x)$ = 维修的价值 = $-RC + \beta V(0)$
关键观察: 理论 CCP 取决于参数的选择
不同的参数 → 不同的理论 CCP 曲线
4.3 第三层:参数估计(反向求解)
问题: 哪个参数值能使理论 CCP 最接近数据中的经验 CCP?
做法:
- 猜测一个参数值
- 计算该参数下的理论 CCP
- 与数据中的经验 CCP 比较
- 调整参数,重复直到最接近
这就是最大似然估计或矩估计
第五章:CCP 在识别参数中的角色
5.1 识别问题的本质
困境: 我们想估计维修成本 RC,但它不能直接观测
怎么办?用 CCP 来反推!
5.2 识别的关键:边界条件
在维修阈值$x^*$处(即 CCP = 0.5 的地方),有一个特殊性质:
两个选择的价值相等,这给了我们一个等式约束:
$$V_0(x^*) = V_1(x^*)$$展开:
$$-c(x^*) + \beta V(x^*+1) = -RC + \beta V(0)$$从这个等式中解出 RC:
$$RC = c(x^*) - c(0) + \beta[V(0) - V(x^*+1)]$$这说明: 如果我们知道上面等式右边的所有项,就能唯一确定 RC!
5.3 具体识别步骤
第一步:从数据估计经验 CCP
- 用非参数方法从原始数据计算
- 得到一条 S 形曲线
第二步:找维修阈值
- 从 CCP 曲线找到 P(d=1|x) = 0.5 的点
- 记这个状态为$x^*$
第三步:固定其他参数
- 假设我们知道成本函数$c(x)$的参数(从账目数据)
- 假设我们知道折现因子$\beta$(从其他来源)
- 这两个假设很重要!
第四步:反向求解
- 计算$c(x^*) - c(0)$
- 用边界条件等式反解 RC
第五步:验证
- 用估计的 RC 和其他参数,求解动态规划
- 计算理论 CCP
- 检查理论 CCP 是否与数据的经验 CCP 吻合
5.4 为什么说 RC 的识别需要"强假设"
关键问题: 边界条件等式中,包含了$V(0)$和$V(x^*+1)$这两个未知的价值函数值。
要计算这两个值,需要:
- 知道成本函数$c(x)$的参数
- 知道折现因子$\beta$
- 知道维修成本 RC(但这正是我们要求的!)
这里有个循环依赖!
解决方法:
- 外生固定 β 和 c(x) → 然后可以唯一解出 RC
- 或者用价值函数的形状约束 → 从 CCP 的二阶特征反推
- 或者加入额外数据 → 如二手车价格、维修账单等
这就是为什么说:"RC 的识别需要强假设"
第六章:识别的困难与直观理解
6.1 为什么 RC 难以识别
根本原因: 多组参数可能产生相同的 CCP
例子:
情况 A:
- 维修成本 RC = 10(很贵)
- 折现因子 β = 0.95(关心未来)
- 结果:人们倾向延迟维修
- CCP 曲线:平缓,阈值较高
情况 B:
- 维修成本 RC = 5(便宜)
- 折现因子 β = 0.80(不太关心未来)
- 结果:人们也倾向延迟维修(高成本的人更不舍得修,不关心未来的人也不修)
- CCP 曲线:也是平缓,阈值也较高
同一条 CCP 曲线,不同的参数组合都能解释!
6.2 识别强度的直观判断
CCP 识别 RC 的"识别强度"取决于:
-
CCP 的变化幅度
- 如果 CCP 从 0 变到 1,变化剧烈 → 识别强
- 如果 CCP 始终在 0.3 到 0.7 之间 → 识别弱
-
样本量和数据覆盖
- 如果在很多不同状态都有观测 → 识别强
- 如果观测集中在某个小区间 → 识别弱
-
模型假设的确定性
- 如果 β 和 c(x)完全确定 → 识别相对强
- 如果这些也不确定 → 识别很弱
6.3 “部分识别"的概念
有时候,我们无法唯一确定 RC,但可以得到一个范围:
比如,可能推断出:RC 在 8 到 12 之间,而不是精确值。
这叫做部分识别(Partial Identification)。
第七章:CCP 与其他参数的替代关系
7.1 RC 与 β 的替代
两种方式可以导致相同的维修延迟倾向:
方式 1: RC 很高 + β 正常
- 维修很贵,所以宁可忍受高维护成本
方式 2: RC 一般 + β 很低
- 维修费用不算太贵,但不关心未来的节省
结果: CCP 曲线完全相同
解决方案: 必须从外部信息固定其中一个,才能识别另一个
通常的做法:
- 从其他研究/数据固定 β(比如利率数据)
- 或固定 RC(比如从维修账单)
- 然后反推另一个
7.2 RC 与 c(x)的替代
高维修成本的世界 vs 高维护成本的世界
如果:
- 世界 A:维修成本 RC = 10,维护成本 c(x) = 0.1x
- 世界 B:维修成本 RC = 5,维护成本 c(x) = 0.2x
可能产生完全相同的 CCP!
解决方案: 必须直接观测维护成本
- 从维修账单数据估计 c(x)
- 或从二手车市场价格推断
第八章:三种估计方法的对比
8.1 非参数 CCP 估计
方法: 直接从数据计算选择比例
步骤:
- 将状态空间分成若干箱(或用平滑方法)
- 在每个箱内,计算选择 d=1 的比例
- 画出 CCP 曲线
特点:
- 不需要任何模型假设
- 快速简单
- 但有样本量要求
8.2 半参数 CCP 方法(Hotz-Miller)
方法: 用非参数 CCP 反演出价值函数,然后估计参数
步骤:
- 估计经验 CCP(非参数)
- 从 logit 的逆函数,反推价值差异:$V_0(x) - V_1(x)$
- 利用贝尔曼方程的递推关系,反演出$V(x)$
- 用反演的价值函数估计参数
特点:
- 相对快速(不用反复求解动态规划)
- 半参数更稳健
- 仍然需要 logit 假设
8.3 参数最大似然估计
方法: 猜测参数 → 求解模型 → 计算理论 CCP → 与数据比较 → 优化
步骤:
- 给定参数值
- 求解贝尔曼方程得到$V(x)$
- 计算理论 CCP
- 计算似然函数(理论 CCP 与观测选择的匹配度)
- 调整参数最大化似然
特点:
- 最直接(直接拟合原始模型)
- 但计算慢(需要多次求解动态规划)
- 对模型假设敏感
第九章:实际应用中的 CCP
9.1 CCP 的主要应用场景
应用 1:设备维修与更新决策
- 状态:设备年龄或故障率
- 决策:是否进行大修或更新
- CCP 用途:识别维修成本,优化维修计划
应用 2:汽车购买与维修
- 状态:车龄和里程
- 决策:是否进行大修或换新车
- CCP 用途:识别消费者对可靠性的价值评估
应用 3:医疗干预决策
- 状态:患者的健康指标
- 决策:是否进行昂贵的医疗程序
- CCP 用途:评估医疗成本效益
应用 4:环保投资
- 状态:企业的污染排放水平
- 决策:是否投资污染控制
- CCP 用途:估计污染控制的成本
9.2 CCP 在实证分析中的检验作用
即使不关心参数识别,CCP 也很有用:
检验 1:模型是否合理
- 计算理论 CCP
- 与经验 CCP 比较
- 如果接近 → 模型假设合理
- 如果偏离 → 需要改进模型
检验 2:边界条件
- CCP 应该从 0 变到 1(如果数据充分)
- CCP 应该是单调的(至少在总体趋势上)
- 如果出现奇怪的非单调性 → 可能有数据问题或模型误设
检验 3:稳健性检验
- 用子样本估计 CCP(如不同时期、不同地区)
- 应该大致相同
- 如果有系统差异 → 可能有遗漏的状态变量
第十章:核心要点总结
核心概念
CCP = 给定状态$x$,选择$d=1$的概率 = $P(d=1|x)$
三个来源
- 经验 CCP:直接从数据计算(非参数)
- 理论 CCP:给定参数求解动态规划(参数模型)
- 私人冲击:解释同状态下的决策异质性
识别逻辑
$$\text{经验CCP} + \text{模型假设} \rightarrow \text{反推参数}$$关键使用点:
- 在维修阈值$x^*$处(CCP=0.5),价值相等
- 这给了我们一个等式约束
- 利用此约束可以识别成本参数
识别强度的决定因素
✓ 强识别的条件:
- CCP 有剧烈的 S 形变化(从接近 0 到接近 1)
- 样本量足够,数据充分覆盖状态空间
- 其他参数(β, c(x))外生确定
✗ 弱识别的条件:
- CCP 始终在中间范围(如 0.3-0.7)
- 样本集中在某个小区间
- 其他参数也不确定
最重要的警告
RC 的识别依赖于以下关键假设:
- 折现因子 β 已知或可外生固定
- 维护成本函数 c(x)的形式已知
- 私人冲击服从极值分布(logit)
- 没有遗漏的状态变量
- 状态测量准确
任何一个假设违反,识别可能就失效。
快速参考:CCP 的四个关键公式
公式 1:经验 CCP(从数据)
$$\hat{P}(d=1|x) = \frac{n_1(x)}{n(x)}$$其中$n_1(x)$是状态$x$附近选择$d=1$的观测数,$n(x)$是状态$x$附近的总观测数。
公式 2:理论 CCP(从模型)
$$P(d=1|x) = \frac{1}{1 + \exp(V_0(x) - V_1(x))}$$其中$V_d(x)$是选择$d$的价值。
公式 3:价值函数关系(贝尔曼方程)
$$V_0(x) = -c(x) + \beta V(x+1)$$$$V_1(x) = -RC + \beta V(0)$$
公式 4:识别约束(维修阈值处)
$$V_0(x^*) = V_1(x^*) \Rightarrow RC = [c(x^*) - c(0)] + \beta[V(0) - V(x^*+1)]$$这些公式构成了从数据到参数估计的完整逻辑链条。