# Day 15: 建模与量化决策 — 从数据到决策的完整链条

> **核心问题：** 手上有数据，怎么建立模型？模型建好了，怎么用它做出比直觉更好的商业决策？

> **前置条件：** Day 14 的 p 值、置信区间、概率分布是今天所有内容的基础。如果你还不太确定 p 值到底是什么——先回去看 Day 14 第四节。

> **今天的目标：** 学完之后，你面对任何一个"数据 + 决策"的商业问题，知道该用什么模型、怎么跑、怎么解读结果、怎么向非技术人员解释。

> **Day 14 vs Day 15 的区别：** Day 14 教你"从样本推断总体"（这个差异是真实的还是噪音？）；Day 15 教你"用数据建立预测和做选择"（给定多个可能方案，选哪个？）。前者是判断，后者是决策。

---

## 第一节：回归分析深入 — 商业中最被滥用的工具，也是最强大的工具

> 回归分析是投行和咨询面试中最常被问到的量化工具。你不仅要会说"我做过回归"，还要能解释 R² 到底什么意思、p 值为什么可能骗你、以及为什么加了更多变量 R² 一定不会降。

### 1.1 简单线性回归 — 手动计算斜率和截距

> 回归的本质：找到一条直线 Ŷ = β₀ + β₁X，使得所有数据点到这条直线的垂直距离平方和最小。这就是**普通最小二乘法（OLS）**。

**场景：** 一家零售品牌过去 5 个季度的广告支出与销售收入：

| 季度 | 广告支出 X (百万) | 销售收入 Y (百万) |
|------|:---:|:---:|
| Q1 | 2 | 12 |
| Q2 | 3 | 15 |
| Q3 | 5 | 20 |
| Q4 | 4 | 17 |
| Q5 | 6 | 22 |

> **第一步：计算均值。**
>
> X̄ = (2 + 3 + 5 + 4 + 6) ÷ 5 = 20 ÷ 5 = 4.0
>
> Ȳ = (12 + 15 + 20 + 17 + 22) ÷ 5 = 86 ÷ 5 = 17.2

> **第二步：构建完整计算表格。**

| 季度 | X | Y | X - X̄ | Y - Ȳ | (X - X̄)(Y - Ȳ) | (X - X̄)² |
|------|:---:|:---:|:---:|:---:|:---:|:---:|
| Q1 | 2 | 12 | -2.0 | -5.2 | 10.4 | 4.0 |
| Q2 | 3 | 15 | -1.0 | -2.2 | 2.2 | 1.0 |
| Q3 | 5 | 20 | +1.0 | +2.8 | 2.8 | 1.0 |
| Q4 | 4 | 17 | 0.0 | -0.2 | 0.0 | 0.0 |
| Q5 | 6 | 22 | +2.0 | +4.8 | 9.6 | 4.0 |
| **合计** | **20** | **86** | **0** | **0** | **25.0** | **10.0** |

> 验证：X - X̄ 的和必须为零（-2 -1 +1 +0 +2 = 0 ✓），Y - Ȳ 的和也应为零（-5.2 -2.2 +2.8 -0.2 +4.8 = 0 ✓）。

> **第三步：计算斜率 β₁。**
>
> β₁ = Σ(X - X̄)(Y - Ȳ) ÷ Σ(X - X̄)² = 25.0 ÷ 10.0 = **2.5**

> **第四步：计算截距 β₀。**
>
> β₀ = Ȳ - β₁ × X̄ = 17.2 - 2.5 × 4.0 = 17.2 - 10.0 = **7.2**

> **第五步：写出回归方程。**
>
> **Ŷ = 7.2 + 2.5X**

> **第六步：解读回归系数。**
>
> β₁ = 2.5 的含义：**每增加 100 万广告支出，销售收入平均增加 250 万。**
>
> β₀ = 7.2 的含义：**即使广告支出为零，基础销售收入约为 720 万。**（但要注意：X=0 不在我们的数据范围内，β₀ 是外推值，不一定可信。）
>
> 这个 β₁ 就是**边际效应**（marginal effect），也是面试中你要脱口而出的词。

> **思考：** 为什么用"平均"二字？因为回归给出的是条件期望 E(Y|X)，不是确定性的 Y。X=5 时，Ŷ=7.2+2.5×5=19.7，但实际 Q3 的 Y=20——差的那 0.3 就是残差（residual），我们马上会用到。

### 1.2 R² — "模型解释了多少变异"

> R² 是回归输出的"明星指标"，也是最容易被误解的指标。它的精确定义：**Y 的总变异中，有多少比例能被 X 的变异解释。**

> 继续上面的例子。先计算每个 X 对应的预测值 Ŷ：
>
> Q1: Ŷ = 7.2 + 2.5×2 = 12.2
> Q2: Ŷ = 7.2 + 2.5×3 = 14.7
> Q3: Ŷ = 7.2 + 2.5×5 = 19.7
> Q4: Ŷ = 7.2 + 2.5×4 = 17.2
> Q5: Ŷ = 7.2 + 2.5×6 = 22.2

> **第一步：计算总平方和 SS_total（Total Sum of Squares）——Y 自身的总变异。**
>
> SS_total = Σ(Y - Ȳ)² = (12-17.2)² + (15-17.2)² + (20-17.2)² + (17-17.2)² + (22-17.2)²
>
> = (-5.2)² + (-2.2)² + (2.8)² + (-0.2)² + (4.8)²
>
> = 27.04 + 4.84 + 7.84 + 0.04 + 23.04 = **62.80**

> **第二步：计算残差平方和 SS_residual ——模型没有解释掉的变异。**
>
> SS_residual = Σ(Y - Ŷ)² = (12-12.2)² + (15-14.7)² + (20-19.7)² + (17-17.2)² + (22-22.2)²
>
> = (-0.2)² + (0.3)² + (0.3)² + (-0.2)² + (-0.2)²
>
> = 0.04 + 0.09 + 0.09 + 0.04 + 0.04 = **0.30**

> **第三步：计算回归平方和 SS_regression ——模型解释掉的变异。**
>
> SS_regression = SS_total - SS_residual = 62.80 - 0.30 = **62.50**

> **第四步：计算 R²。**
>
> R² = SS_regression ÷ SS_total = 62.50 ÷ 62.80 = **0.9952**
>
> 解读：**广告支出解释了销售收入 99.5% 的变异。**

> **重要提醒：** 这个 R² 异常高（接近 1.0），因为这是一个仅 5 个数据点的教学示例。在实际商业数据中，R² 通常在 0.3-0.7 之间。**R² 高不代表模型好**——如果你加了 50 个自变量，R² 几乎肯定会变高（哪怕这些变量纯粹是噪音），但你的模型可能严重过拟合。

> **面试中常见的 R² 陷阱问题：**
>
> 问："我往回归里多加了 5 个变量，R² 从 0.45 变成了 0.48，模型变好了吗？"
>
> 答：不一定。R² 永远不会因为增加变量而下降。应该看**调整 R²（Adjusted R²）**，它会对新增变量的个数进行惩罚。公式：
>
> Adjusted R² = 1 - [(1 - R²)(n - 1) ÷ (n - k - 1)]
>
> 其中 n=样本量，k=自变量个数。如果新增变量没有带来足够的解释力提升，Adjusted R² 会下降。

### 1.3 回归系数的显著性检验 — "β₁ = 2.5 是真实的广告效果，还是随机噪音？"

> 这是我们 Day 14 学过的假设检验在回归中的直接应用。零假设 H₀: β₁ = 0（广告对销售没有影响）。备择假设 H₁: β₁ ≠ 0。

> **第一步：计算残差的均方 MS_residual。**
>
> MS_residual = SS_residual ÷ (n - 2) = 0.30 ÷ 3 = **0.10**
>
> 为什么分母是 n-2？因为我们估计了 2 个参数（β₀ 和 β₁），损失了 2 个自由度。

> **第二步：计算 β₁ 的标准误 SE(β₁)。**
>
> SE(β₁) = √[MS_residual ÷ Σ(X - X̄)²] = √(0.10 ÷ 10.0) = √0.01 = **0.10**
>
> 直观理解：SE(β₁) 衡量的是"如果我们重复抽取样本 100 次，每次算出的 β₁ 会波动多少"。X 的变异越大（Σ(X-X̄)² 越大），SE 越小——这意味着你的估计更精确。

> **第三步：计算 t 统计量。**
>
> t = β₁ ÷ SE(β₁) = 2.5 ÷ 0.10 = **25.0**
>
> 自由度 df = n - 2 = 3

> **第四步：计算 p 值和置信区间。**
>
> 查 t 分布表：t₃, ₀.₀₂₅ = 3.182（双侧，α = 0.05 时每侧 2.5%）
>
> 25.0 >> 3.182，所以 p << 0.001（极其显著）。
>
> 95% 置信区间：β₁ ± t₀.₀₂₅,₃ × SE(β₁) = 2.5 ± 3.182 × 0.10 = 2.5 ± 0.318 = **[2.182, 2.818]**
>
> 解读：**我们有 95% 的把握认为，每增加 100 万广告支出，销售收入的实际增加在 218 万到 282 万之间。**
>
> 因为整个 CI 都在 0 以上（且 p < 0.001），我们拒绝 H₀：广告支出对销售收入有统计显著的正向影响。

> **Day 14 的连接：** 这个 t 检验的逻辑和 Day 14 第四节的双样本 t 检验完全一样——都是"信号 ÷ 噪音"（估计值 ÷ 标准误），只是这里"信号"变成了回归系数而不是均值差。

### 1.4 残差分析 — "模型在哪些地方犯了错"

> 回归给了一个单一的 β₁ 和 R²，但这不代表模型在每个数据点上都同样准确。残差分析帮你诊断四个关键问题：

> **残差 = Y - Ŷ = 实际值 - 预测值**

| 季度 | X | 实际 Y | 预测 Ŷ | 残差 e |
|------|:---:|:---:|:---:|:---:|
| Q1 | 2 | 12 | 12.2 | -0.2 |
| Q2 | 3 | 15 | 14.7 | +0.3 |
| Q3 | 5 | 20 | 19.7 | +0.3 |
| Q4 | 4 | 17 | 17.2 | -0.2 |
| Q5 | 6 | 22 | 22.2 | -0.2 |

> **你应该检查的四件事：**

> **1. 线性性（Linearity）：** 画残差 vs 预测值图。如果残差呈现 U 形或倒 U 形分布，说明 X 和 Y 的关系不是线性的——你可能需要加 X² 项，或者对 Y 取对数。
>
> **2. 同方差性（Homoscedasticity）：** 残差的散布应该在所有预测值水平上大致相同。如果残差图呈"喇叭形"（预测值越大，残差波动越大），说明存在**异方差性**（heteroscedasticity）。这会使得 SE(β₁) 的估计不准确，进而导致 p 值不可靠。
>
> **3. 独立性（Independence）：** 对于时间序列数据（如季度销售），残差不应有自相关。如果 Q1 的残差是负的，Q2 也是负的，Q3 也是负的——说明模型系统性地在某个阶段高估了。用 Durbin-Watson 统计量检测。
>
> **4. 正态性（Normality）：** 残差应大致服从正态分布（尤其是小样本时）。画 Q-Q 图：如果点大致落在 45° 线上，残差正态；如果尾巴偏离，说明有异常值或偏态。

> **为什么这些检查重要：** 如果残差有明显的模式，那么你的标准误、p 值、置信区间都可能不准确。面试官问"你建完模型之后做什么"，正确答案不是"报告结果"，而是"检查残差"。

### 1.5 多元线性回归 — 当不止一个因素在影响结果

> 简单回归只控制了一个变量。现实商业中，销售收入受多种因素影响。**多元回归的核心价值：在控制其他变量不变的情况下，分离出每个变量的"纯净"效应。**

**场景扩展：** 我们的零售品牌发现，销售收入可能还受"销售人员数量"的影响。在原数据中增加一列：

| 季度 | 广告支出 X₁ (百万) | 销售人数 X₂ (人) | 销售收入 Y (百万) |
|------|:---:|:---:|:---:|
| Q1 | 2 | 3 | 12 |
| Q2 | 3 | 4 | 15 |
| Q3 | 5 | 5 | 20 |
| Q4 | 4 | 4 | 17 |
| Q5 | 6 | 6 | 22 |

> 多元回归的手动计算需要矩阵代数（β = (X'X)⁻¹X'Y），对于 3 个参数那就涉及 3×3 矩阵求逆——手算过于复杂。我们直接看软件输出式的结果：

> **多元回归结果：**
>
> Ŷ = **6.0** + **1.2** × X₁ + **1.8** × X₂
>
> R² = 0.98，Adjusted R² = 0.96
>
> β₁ 的 p 值 = 0.03（显著），β₂ 的 p 值 = 0.01（显著）

> **关键解读——这是多元回归最核心的洞见：**
>
> - 在简单回归中，β₁_ad = 2.5（每增加 100 万广告，销售增加 250 万）
> - 在多元回归中，β₁_ad = 1.2（在**控制销售人员数量不变**的情况下，每增加 100 万广告，销售增加 120 万）
>
> **为什么从 2.5 降到了 1.2？** 因为在简单回归中，β₁ = 2.5 实际上"偷走"了销售人员的部分贡献。广告支出高的季度，通常销售人员也多（相关性 r ≈ 0.89）——简单回归把本该归功于销售人员的销售增长也算在了广告头上。这种偏误叫做**遗漏变量偏误（Omitted Variable Bias）**。
>
> β₂ = 1.8 的含义：在控制广告支出不变的情况下，每多 1 名销售人员，销售收入增加 180 万。

> **这就是为什么我们要做多元回归：不是为了把 R² 堆高，而是为了更准确地估计每个变量的因果效应。**

### 1.6 多重共线性 — "解释变量之间纠缠不清"

> 多元回归的一个核心假设：自变量之间不能高度相关。如果两个解释变量几乎在说同一件事，模型就无法区分它们各自的影响。

> **衡量工具：VIF（Variance Inflation Factor，方差膨胀因子）**
>
> VIFⱼ = 1 ÷ (1 - R²ⱼ)
>
> 其中 R²ⱼ 是：把 Xⱼ 作为因变量，对其他所有 X 做回归得到的 R²。

> **计算示例：**
>
> 在我们的数据中，广告支出 X₁ 和销售人员 X₂ 的相关系数 r = 0.89。
>
> 这意味着 R²₁₂ ≈ 0.89² = 0.79（将 X₁ 对 X₂ 回归的 R²）
>
> VIF_广告 = 1 ÷ (1 - 0.79) = 1 ÷ 0.21 = **4.76**
>
> 同理，VIF_销售人数 ≈ 4.76

> **判断标准：**
>
> | VIF 范围 | 严重程度 | 行动 |
> |:---:|------|------|
> | 1 | 完全不相关 | 理想状态（很少见） |
> | 1-5 | 中等相关 | 通常可接受 |
> | 5-10 | 高相关 | 需要关注，SE 被膨胀 2-3 倍 |
> | >10 | 严重共线性 | 必须处理 |

> 我们的 VIF ≈ 4.76，处于"可接受但偏高"的临界值。

> **多重共线性的后果（非常重要）：**
>
> 1. β 的估计值仍然是无偏的（期望值等于真实值）
> 2. 但标准误被放大（这就是"方差膨胀"的含义）
> 3. 导致 t 值变小，p 值变大——你可能错误地认为某个变量"不显著"，事实上它只是标准误被吹大了
> 4. β 的估计对数据的微小变化极其敏感——加一个数据点，系数可能大幅跳动

> **补救措施：**
> - 删除一个高度相关的变量（最简单，但丢信息）
> - 将相关变量合并为复合指标（如将"广告"和"销售人数"合并为"市场投入强度"）
> - 使用岭回归（Ridge Regression）或 LASSO（在模型中加惩罚项，自动压缩系数）
> - 增加样本量（更多数据 → 更多独立变异 → 更容易区分各变量的贡献）

### 1.7 逻辑回归 — 当 Y 不是数字而是"是/否"

> 至此我们一直在处理连续的 Y（销售收入可以是 12.5，可以是 20.3）。但商业中大量问题只有两个答案：客户流失了吗？（是/否），贷款违约了吗？（是/否），并购成功了吗？（是/否）。

> **为什么不能直接用线性回归？**
>
> 假设 Y=1 表示违约，Y=0 表示不违约。用线性回归 Ŷ = β₀ + β₁X，当 X 很大或很小时，Ŷ 可能小于 0 或大于 1——概率不能在这个范围之外。

> **解决方案：逻辑函数（Logistic Function）**
>
> P(Y = 1) = 1 ÷ (1 + e^-(β₀ + β₁X))
>
> 这个函数的值域为 (0, 1)，完美对应概率的范围。形状是 S 形曲线。

> **关键概念：胜率（Odds）和胜率比（Odds Ratio）**
>
> 胜率 = P ÷ (1 - P)。如果违约概率是 0.2，胜率 = 0.2 ÷ 0.8 = 0.25（"违约的胜率是 1:4"）。
>
> 在逻辑回归中，e^β₁ = 胜率比 = "X 每增加 1 单位，胜率乘以多少"。

> **完整工作示例：用信用评分预测贷款违约**

> 场景：银行有 200 个历史贷款申请人的数据。用信用评分（范围 300-850）预测是否违约（Yes=1, No=0）。
>
> 逻辑回归输出：
>
> log(P/(1-P)) = 5.2 - 0.008 × credit_score
>
> 即 β₀ = 5.2，β₁ = -0.008

> **解读 β₁：**
>
> e^β₁ = e^(-0.008) = **0.9920**
>
> **信用评分每提高 1 分，违约胜率乘以 0.992——也就是说，违约胜率下降约 0.8%。**
>
> 如果信用评分提高 50 分：
> 胜率比 = (e^(-0.008))^50 = e^(-0.008 × 50) = e^(-0.40) = **0.6703**
>
> **评分提高 50 分，违约胜率降低约 33%。**

> **具体预测示例：**
>
> 一个信用评分为 650 的申请人：
>
> log(P/(1-P)) = 5.2 - 0.008 × 650 = 5.2 - 5.2 = 0
>
> P/(1-P) = e⁰ = 1 → P = 0.5（违约概率 50%）
>
> 一个信用评分为 700 的申请人：
>
> log(P/(1-P)) = 5.2 - 0.008 × 700 = 5.2 - 5.6 = -0.4
>
> P/(1-P) = e^(-0.4) = 0.6703
>
> P = 0.6703 ÷ (1 + 0.6703) = 0.6703 ÷ 1.6703 = **0.401**
>
> **违约概率从 50%（650 分）降到 40%（700 分）。**

> **面试要点：** 线性回归给的是边际效应（每单位 X 变动带来的 Y 变动量，是常数），逻辑回归给的是胜率比（每单位 X 变动带来的胜率倍数变动，是乘数）。两者不能混用。

---

## 第二节：ANOVA — 不止两组，怎么同时比较

> Day 14 我们学了 t 检验来比较两组均值。但如果有三组、五组、十组呢？做两两 t 检验？问题在于：每多做一次检验，犯第一类错误的概率就累积——10 组两两比较要做 45 次 t 检验，即使 H₀ 全为真，至少有 1 次"显著"的概率接近 90%。**ANOVA（方差分析）一次性检验"所有组均值是否相等"，把整体错误率控制在 α。**

### 2.1 单因素 ANOVA — 完整手动计算

**场景：** 测试三种广告策略的效果。每种策略在 5 个城市试点，记录销售增长百分比：

| | 策略 A（短视频） | 策略 B（搜索广告） | 策略 C（KOL 种草） |
|------|:---:|:---:|:---:|
| | 12 | 15 | 20 |
| | 14 | 17 | 22 |
| | 11 | 16 | 19 |
| | 15 | 18 | 23 |
| | 13 | 14 | 21 |
| **nⱼ** | **5** | **5** | **5** |
| **x̄ⱼ** | **13.0** | **16.0** | **21.0** |
| **sⱼ²** | **2.5** | **2.5** | **2.5** |

> **第一步：计算总均值（Grand Mean）。**
>
> x̄ = (13.0 × 5 + 16.0 × 5 + 21.0 × 5) ÷ 15 = (65 + 80 + 105) ÷ 15 = 250 ÷ 15 = **16.667**

> **第二步：计算组间平方和 SSB（Sum of Squares Between）。**
>
> SSB = 5 × (13.0 - 16.667)² + 5 × (16.0 - 16.667)² + 5 × (21.0 - 16.667)²
>
> = 5 × (-3.667)² + 5 × (-0.667)² + 5 × (4.333)²
>
> = 5 × 13.444 + 5 × 0.445 + 5 × 18.778
>
> = 67.22 + 2.22 + 93.89 = **163.33**
>
> SSB 衡量的是**各组均值与总均值之间的差异**。SSB 大 → 各组之间差异大。

> **第三步：计算组内平方和 SSW（Sum of Squares Within）。**
>
> 关键公式：对于第 j 组，Σ(X - x̄ⱼ)² = (nⱼ - 1) × sⱼ²
>
> SSW = (5-1) × 2.5 + (5-1) × 2.5 + (5-1) × 2.5 = 10 + 10 + 10 = **30.0**
>
> SSW 衡量的是**各组内部的随机波动**（不受策略影响的纯噪音）。

> **第四步：计算自由度。**
>
> df_between = k - 1 = 3 - 1 = **2**
>
> df_within = N - k = 15 - 3 = **12**

> **第五步：计算均方（Mean Square）。**
>
> MSB = SSB ÷ df_between = 163.33 ÷ 2 = **81.67**
>
> MSW = SSW ÷ df_within = 30.0 ÷ 12 = **2.50**
>
> MSW = 2.50 也是各组的共同方差估计（因为我们假设了方差齐性，且三组的 s² 恰好相同）。

> **第六步：计算 F 统计量。**
>
> F = MSB ÷ MSW = 81.67 ÷ 2.50 = **32.67**
>
> F 统计量的直观理解：**组间变异是组内变异的多少倍。** 如果各组均值真的完全相等，F 应该接近 1。F 越大，越不可能"各组均值相等"。

> **第七步：查 F 分布表并做决策。**
>
> 查 F(2, 12) 在 α = 0.05 的临界值：**3.89**
>
> 32.67 >> 3.89 → **拒绝 H₀**
>
> 结论：**三种广告策略的销售增长均值不全相等。至少有一种策略的效果显著不同。**

> **Day 14 的连接：** t 检验的 t² 等于 F(1, df)。ANOVA 是 t 检验从两组到多组的推广。

### 2.2 事后检验（Post-Hoc Test）— "哪两组之间显著不同？"

> ANOVA 告诉你"至少有一组不同"，但没告诉你是哪两组。事后检验在 ANOVA 显著后进行两两比较，同时对多重比较进行校正。

> **Tukey HSD（Honestly Significant Difference）——最常用的事后检验：**
>
> HSD = q(α, k, df_within) × √(MSW ÷ n)
>
> 其中 q 是学生化范围分布（Studentized Range）的临界值，需查表。
>
> q(0.05, k=3, df=12) ≈ **3.77**
>
> HSD = 3.77 × √(2.50 ÷ 5) = 3.77 × √0.50 = 3.77 × 0.7071 = **2.67**

> **两两比较：**

| 对比 | 均值差绝对值 | HSD | 结果 |
|------|:---:|:---:|:---:|
| A vs B | \|13 - 16\| = 3.0 | 2.67 | 3.0 > 2.67 → **显著** |
| A vs C | \|13 - 21\| = 8.0 | 2.67 | 8.0 > 2.67 → **显著** |
| B vs C | \|16 - 21\| = 5.0 | 2.67 | 5.0 > 2.67 → **显著** |

> 结论：**三种策略彼此之间存在显著差异。按照效果排序：C（KOL 种草）> B（搜索广告）> A（短视频）。**

> **如果某两组差值小于 HSD**，意味着它们的差异在统计上和随机噪音无法区分——即使它们的样本均值不同，也不能说"一个比另一个好"。

### 2.3 ANOVA 的假设与诊断

> 和所有统计方法一样，ANOVA 有三个关键假设：

> **假设 1：正态性**——每组数据应来自正态分布。检验方法：Shapiro-Wilk 检验（每组单独做）。如果 p > 0.05，不能拒绝正态性假设。在我们的例子中，每组 5 个数据点太少，SW 检验的效力很低，建议看 Q-Q 图做视觉判断。
>
> **假设 2：方差齐性**——各组的总体方差应相等。检验方法：Levene 检验。H₀: 各组方差相等。如果 Levene 检验的 p < 0.05，拒绝 H₀ → 方差不等。
>
> **假设 3：独立性**——各组数据之间相互独立（一个城市的销售增长不影响另一个城市）。这在实验设计中保障，无法用统计检验。

> **如果假设被违反怎么办？**
>
> | 违反的假设 | 替代方法 |
> |------|------|
> | 正态性（严重偏态） | Kruskal-Wallis 检验（非参数 ANOVA） |
> | 方差齐性（方差不相等） | Welch ANOVA（不假设等方差） |
> | 独立性 | 改用重复测量 ANOVA 或混合效应模型 |

### 2.4 双因素 ANOVA — 不止一个分类变量

> 回到广告策略的例子。如果不同策略的效果还取决于**城市规模**（一线城市 vs 二线及以下），我们就有两个因素。双因素 ANOVA 可以同时检验：
> - 策略的主效应（不同策略之间有差异吗？）
> - 城市规模的主效应（不同规模城市之间有差异吗？）
> - **交互效应**（策略 C 在一线城市是否效果特别好？）

> 设计：2 × 3 因子设计（2 种城市规模 × 3 种策略 = 6 个条件组合）。每个组合 5 个观测值，共 30 个数据点。

> **交互效应的直观理解：**
>
> 如果没有交互：策略 C 在所有城市类型中都优于 A 和 B，且差距大致相同。两条"策略-效果"线平行。
>
> 如果有交互：策略 C 在一线城市效果极好（增长 25%），但在二线及以下效果一般（增长 15%），而策略 A 在两种城市中效果相近。两条线交叉。

> **F 检验分解：**
>
> 双因素 ANOVA 将总变异分解为四部分：
> - SS_策略（策略主效应）
> - SS_城市（城市规模主效应）
> - SS_交互（策略 × 城市交互效应）
> - SS_误差（组内随机变异）
>
> 每个效应都有自己的 F = MS_效应 ÷ MS_误差，都有自己的 p 值。

> **业务含义：** 如果交互效应显著，意味着"哪种策略最好"的答案取决于城市类型——你不能一刀切地推荐策略 C。在面试中展示你理解交互效应，说明你能想到"策略效果是有场景依赖的"。

---

## 第三节：主成分分析与因素分析 — 压缩 50 个变量到 3 个因子

> 投行和 PE 面试中，如果你能讨论 PCA 和因素模型，说明你的量化深度远超平均候选者。定性地说：你有 50 个高度相关的变量，怎么把它们的信息压缩到 3 个不相关的"超级变量"里？

### 3.1 PCA 主成分分析 — 手动计算（3×3 相关矩阵）

**场景：** 3 只科技股（苹果、微软、谷歌）过去 5 天的日收益率：

| 天 | 苹果 | 微软 | 谷歌 |
|----|:---:|:---:|:---:|
| 1 | +1.0% | +0.8% | +0.6% |
| 2 | -0.5% | -0.3% | -0.4% |
| 3 | +2.0% | +1.8% | +1.5% |
| 4 | -1.0% | -0.8% | -0.7% |
| 5 | +0.5% | +0.4% | +0.3% |

> **第一步：去均值。** 计算每只股票的平均收益率并减去。
>
> 苹果均值 = (1.0 - 0.5 + 2.0 - 1.0 + 0.5) ÷ 5 = 2.0 ÷ 5 = 0.4%
>
> 微软均值 = (0.8 - 0.3 + 1.8 - 0.8 + 0.4) ÷ 5 = 1.9 ÷ 5 = 0.38%
>
> 谷歌均值 = (0.6 - 0.4 + 1.5 - 0.7 + 0.3) ÷ 5 = 1.3 ÷ 5 = 0.26%
>
> 去均值后的数据（为简洁，略去详细表格——每行减去对应股票的均值）。

> **第二步：计算 3×3 协方差矩阵，再标准化为相关矩阵。**
>
> 用去均值后的数据计算两两相关系数：

| | 苹果 | 微软 | 谷歌 |
|------|:---:|:---:|:---:|
| 苹果 | 1.00 | 0.98 | 0.95 |
| 微软 | 0.98 | 1.00 | 0.92 |
| 谷歌 | 0.95 | 0.92 | 1.00 |

> 三只股票的回报率高度相关——这不奇怪，因为它们都属于科技板块，受共同的宏观和行业因素驱动。

> **第三步：提取特征值（Eigenvalues）和特征向量。**
>
> 特征值的计算需要解行列式方程 |R - λI| = 0。对于 3×3 矩阵，这是一个三次方程，我们直接给出结果：
>
> - **λ₁ = 2.86**（解释 95.3% 的总方差）
> - **λ₂ = 0.12**（解释 4.0% 的总方差）
> - **λ₃ = 0.02**（解释 0.7% 的总方差）
>
> 验证：λ₁ + λ₂ + λ₃ = 2.86 + 0.12 + 0.02 = 3.00 = 变量总数 ✓

> **第四步：解读载荷（Loadings）——第一主成分 PC1：**
>
> PC1 的特征向量（载荷）：
>
> - 苹果：0.58
> - 微软：0.57
> - 谷歌：0.58
>
> 三只股票在 PC1 上的载荷几乎完全相同。含义：**PC1 捕捉到了一个共同的"科技板块因子"——当科技板块整体上涨时，三只股票同步上涨；当板块下跌时，三只股票同步下跌。** PC1 解释了 95.3% 的总变异，意味着这三只股票几乎完全被同一个因子驱动。
>
> PC2 的载荷：苹果 +0.70, 微软 -0.15, 谷歌 -0.70。这捕捉了苹果和谷歌之间的**相对差异**（可能在反映硬件 vs 服务的商业模式差异），但只解释了 4% 的变异——不重要。
>
> PC3 解释不足 1%，基本可以忽略。

> **核心洞见：** 你原本有 3 个变量（3 列 × 5 行的数据矩阵），经过 PCA，你发现**几乎所有的信息都可以用 1 个主成分（PC1）来概括**——维度从 3 降到了 1，信息损失不到 5%。

### 3.2 PCA vs 因素分析 — 什么时候用哪个

> 面试中经常被混淆的两个概念，它们的区别决定了你该在什么场景下用哪个。

| 维度 | PCA（主成分分析） | FA（因素分析） |
|------|------|------|
| 目标 | 维度压缩：用更少的变量保留尽可能多的方差 | 发现潜变量：假设观测变量由少数不可直接观测的"因素"生成 |
| 数学逻辑 | 纯几何变换：旋转坐标轴，让新轴沿方差最大方向 | 统计模型：X = ΛF + ε（观测变量 = 载荷×因子 + 独特误差） |
| 对方差的处理 | 不区分"共同方差"和"独特方差"——所有方差都保留 | 区分共同方差（多个变量共享）和独特方差（单个变量独有） |
| 是否允许测量误差 | 不允许——PC1 是原始变量的精确线性组合 | 允许——每个变量有独特的误差项 εᵢ |
| 适用场景 | 纯数据压缩、去噪、可视化高维数据、构建指数 | 心理学量表开发、客户满意度调查、发现隐藏的市场细分维度 |

> **实用经验法则：**
> - 如果你只是想压缩数据（如把 20 只股票的回报压缩成 3 个因子用于风险管理）→ PCA。
> - 如果你相信数据背后存在不可直接测量的"构念"（如"品牌忠诚度""服务质量感知"）→ FA。
> - 在大样本下，两者的结果通常很接近。样本量 < 100 时，FA 比 PCA 更可靠。

### 3.3 Fama-French 三因素模型 — PCA 思想在金融中的经典应用

> Fama-French 模型是资产定价领域引用量最高的成果之一（2013 年诺贝尔经济学奖）。它不是说"我们跑了 PCA，提取了三个因子"——恰恰相反，**因子是预先根据经济理论构建的，不是从数据中提取的。** 这一点在面试中说出来，说明你真的理解两者的区别。

> **三因子：**
>
> 1. **市场因子（MKT）：** Rm - Rf（市场组合回报减去无风险利率）——这与 CAPM 相同
> 2. **规模因子（SMB, Small Minus Big）：** 小盘股组合的平均回报 - 大盘股组合的平均回报
> 3. **价值因子（HML, High Minus Low）：** 高账面市值比（B/M）组合的平均回报 - 低 B/M 组合的平均回报

> **SMB 的构建方法（以 6 个组合为例）：**

> 第一步：按市值将股票分为 Small（市值下 50%）和 Big（市值上 50%）。
>
> 第二步：按 B/M 将股票分为 High（前 30%）、Medium（中间 40%）、Low（后 30%）。
>
> 第三步：形成 2×3 = 6 个交叉组合：

| | Low B/M（成长股） | Medium B/M | High B/M（价值股） |
|------|:---:|:---:|:---:|
| **Small（小盘）** | S/L | S/M | S/H |
| **Big（大盘）** | B/L | B/M | B/H |

> 第四步：SMB = (S/L + S/M + S/H) ÷ 3 - (B/L + B/M + B/H) ÷ 3
>
> HML = (S/H + B/H) ÷ 2 - (S/L + B/L) ÷ 2

> **一个小型数值示例（单期数据）：**

| 组合 | 该期平均回报 | 说明 |
|------|:---:|------|
| S/L | +0.8% | 小盘 + 成长 |
| S/M | +1.2% | 小盘 + 中性 |
| S/H | +1.5% | 小盘 + 价值 |
| B/L | +0.5% | 大盘 + 成长 |
| B/M | +0.9% | 大盘 + 中性 |
| B/H | +1.1% | 大盘 + 价值 |

> SMB = (0.8 + 1.2 + 1.5) ÷ 3 - (0.5 + 0.9 + 1.1) ÷ 3 = 1.167 - 0.833 = **+0.334%**
>
> 解读：本期小盘股平均比大盘股多涨了 0.334%。如果 SMB 长期为正，意味着小盘股有规模溢价。
>
> HML = (1.5 + 1.1) ÷ 2 - (0.8 + 0.5) ÷ 2 = 1.30 - 0.65 = **+0.65%**
>
> 解读：本期价值股平均比成长股多涨了 0.65%。如果 HML 长期为正，意味着价值股有"价值溢价"。

> **回归方程（你可以用它来分析任何一只股票）：**
>
> Rᵢ - Rf = αᵢ + βᵢ × MKT + sᵢ × SMB + hᵢ × HML + εᵢ
>
> - βᵢ：对市场因子的敏感度（如果 βᵢ > 1，这只股票比市场波动更大）
> - sᵢ：对规模因子的暴露（sᵢ > 0 → 表现得像小盘股）
> - hᵢ：对价值因子的暴露（hᵢ > 0 → 表现得像价值股）
> - αᵢ：截距项——如果 αᵢ 显著 > 0，说明模型无法解释的超额收益（Jensen's alpha，即基金经理追求的"α"）

### 3.4 因素分析在商业中的应用 — 消费者调研实例

> **场景：** 某护肤品品牌让 200 名消费者对 15 个产品属性打分（1-7 分）。15 个属性包括："包装美观""成分天然""吸收快""香味好闻""品牌知名度高""朋友推荐购买"等等。
>
> 如果逐项分析，15 个维度太散，无法形成清晰的战略建议。

> **因素分析过程：**

> **第一步：提取因子。** 对 15 个变量的相关矩阵做因素分析。使用 Kaiser 准则（特征值 > 1 的因子才保留），发现 3 个因子的特征值大于 1。

| 因子 | 特征值 | 解释方差% | 累计% |
|------|:---:|:---:|:---:|
| F1 | 5.4 | 36.0% | 36.0% |
| F2 | 3.2 | 21.3% | 57.3% |
| F3 | 1.8 | 12.0% | 69.3% |
| F4 | 0.9 | 6.0% | 75.3% |

> F4 及之后的特征值 < 1 → 保留 3 个因子。这 3 个因子共解释了 69.3% 的总方差。

> **第二步：旋转（Varimax Rotation）。** 旋转前，很多变量在多个因子上都有中等载荷（如"包装美观"在 F1=0.40, F2=0.35, F3=0.38——看不出它到底属于哪个因子）。旋转后，每个变量的载荷朝向一个主要因子"收敛"。

> **第三步：命名因子。** 旋转后的载荷矩阵：

| 变量 | F1（产品体验） | F2（品牌信任） | F3（社交驱动） |
|------|:---:|:---:|:---:|
| 吸收快 | **0.85** | 0.12 | 0.08 |
| 香味好闻 | **0.78** | 0.05 | 0.20 |
| 包装美观 | **0.72** | 0.25 | 0.18 |
| 成分天然 | 0.45 | **0.68** | 0.10 |
| 品牌知名度 | 0.15 | **0.82** | 0.12 |
| 老品牌信赖 | 0.08 | **0.79** | 0.05 |
| 朋友推荐 | 0.22 | 0.15 | **0.88** |
| 网红推荐 | 0.10 | 0.08 | **0.91** |

> 变量在某个因子上的载荷 > 0.6 即为"高载荷"。我们发现：
> - F1 = "产品体验因子"（使用感受相关的变量都高载荷）
> - F2 = "品牌信任因子"（成分、品牌认知相关的变量都高载荷）
> - F3 = "社交驱动因子"（口碑传播相关的变量都高载荷）

> **共同度（Communality）：** "成分天然"的共同度 = 0.45² + 0.68² + 0.10² = 0.2025 + 0.4624 + 0.01 = **0.675**。这意味着 3 个因子共同解释了"成分天然"67.5% 的方差——剩下的 32.5% 是该变量独有的信息（独特方差）。

> **商业行动建议：** "原来我们的消费者价值主张是三维的——不是只有一个'满意度'。产品团队优化 F1，品牌部强化 F2，营销部围绕 F3 设计社交传播——各司其职。"

---

## 第四节：聚类分析 — "物以类聚"的数学实现

> 分类是你天天在做的事（这个客户有价值，那个没有），但直觉分类有两大问题：不一致（不同分析师分类不同），不系统（遗漏隐藏的群体模式）。聚类分析把分类变成算法。

### 4.1 K-means 聚类 — 手动迭代一次

**场景：** 一家电商平台有 6 个客户，用两个维度刻画他们的行为：

| 客户 | R（距上次购买天数） | F（年购买次数） |
|------|:---:|:---:|
| A | 5 | 30 |
| B | 10 | 25 |
| C | 80 | 3 |
| D | 90 | 5 |
| E | 7 | 28 |
| F | 95 | 2 |

> 设定 K=2（我们希望分成两组），初始质心（centroid）选取 A 和 C：
>
> C1 = (5, 30)，C2 = (80, 3)

> **第一次迭代：分配每个点到最近的质心。**

> 距离使用欧氏距离：d = √[(R₁-R₂)² + (F₁-F₂)²]

> **A(5, 30):**
> - d(C1) = √[(5-5)² + (30-30)²] = 0
> - d(C2) = √[(5-80)² + (30-3)²] = √(5625 + 729) = √6354 ≈ 79.7
> - 分配 → **C1**

> **B(10, 25):**
> - d(C1) = √[(10-5)² + (25-30)²] = √(25 + 25) = √50 ≈ 7.1
> - d(C2) = √[(10-80)² + (25-3)²] = √(4900 + 484) = √5384 ≈ 73.4
> - 分配 → **C1**

> **C(80, 3):**
> - d(C1) ≈ 79.7, d(C2) = 0
> - 分配 → **C2**

> **D(90, 5):**
> - d(C1) = √[(90-5)² + (5-30)²] = √(7225 + 625) = √7850 ≈ 88.6
> - d(C2) = √[(90-80)² + (5-3)²] = √(100 + 4) = √104 ≈ 10.2
> - 分配 → **C2**

> **E(7, 28):**
> - d(C1) = √[(7-5)² + (28-30)²] = √(4 + 4) = √8 ≈ 2.8
> - d(C2) = √[(7-80)² + (28-3)²] = √(5329 + 625) = √5954 ≈ 77.2
> - 分配 → **C1**

> **F(95, 2):**
> - d(C1) = √[(95-5)² + (2-30)²] = √(8100 + 784) = √8884 ≈ 94.3
> - d(C2) = √[(95-80)² + (2-3)²] = √(225 + 1) = √226 ≈ 15.0
> - 分配 → **C2**

> **第一次迭代结果：**
>
> 簇 1 = {A, B, E}：R̄ = (5+10+7)÷3 = **7.33**，F̄ = (30+25+28)÷3 = **27.67**
>
> 簇 2 = {C, D, F}：R̄ = (80+90+95)÷3 = **88.33**，F̄ = (3+5+2)÷3 = **3.33**

> **业务解读：**
>
> 簇 1 = **"高频忠诚客户"**：最近刚买过（R 很小），一年买 25-30 次（F 很高）。这是核心用户，应推送会员权益和交叉销售。
>
> 簇 2 = **"流失客户"**：快 3 个月没买了（R 很大），一年买 2-5 次（F 很低）。这群人可能已经转投竞品，需要"挽回优惠券"或直接联系。
>
> 在没有聚类之前，你可能对所有客户群发同一条促销短信。现在你知道：**对簇 1 说的话和对簇 2 说的话应该完全不同。**

> 第二次迭代会用新质心 C1=(7.33, 27.67) 和 C2=(88.33, 3.33) 重新分配，直到质心不再（或几乎不再）移动。在这个简单例子中，第二次迭代就已经收敛。

### 4.2 选择 K — 肘部法和轮廓系数

> K-means 要求你预先指定 K（聚成几类）。怎么选？

> **方法一：肘部法（Elbow Method）**
>
> 计算每个 K 对应的 WCSS（Within-Cluster Sum of Squares，簇内平方和）——所有点到其所属质心的距离平方之和。
>
> WCSS 随着 K 增大必然下降（K 越大，簇越"紧"），但边际收益递减。

| K | WCSS | WCSS 的下降 |
|:---:|:---:|:---:|
| 1 | 12500 | — |
| 2 | 5200 | 7300（大幅下降） |
| 3 | 3800 | 1400 |
| 4 | 3200 | 600 |
| 5 | 2900 | 300 |

> 画 WCSS 对 K 的折线图，在 K=2 处有一个明显的"肘部"——之后增加 K 带来的边际改善急剧减小。**K=2 是最优选择。**

> **方法二：轮廓系数（Silhouette Score）**
>
> 对每个点 i：
> - a(i) = 点 i 到同簇其他点的平均距离（越小越好，说明簇内紧密）
> - b(i) = 点 i 到最近的其他簇的平均距离（越大越好，说明簇间分离好）
> - s(i) = (b - a) ÷ max(a, b)（范围 [-1, 1]）
>
> 所有点的 s(i) 平均值就是整体轮廓系数。越接近 1 越好。
>
> 通常做法：对 K=2,3,4...10 都算轮廓系数，选最高值对应的 K。

> **面试中：** "你最后选了 K=3，为什么不是 K=4？" —— 拿出肘部图或轮廓系数图，这是数据驱动的答案，不是"感觉"。

### 4.3 层次聚类 — 树状图的解读

> K-means 需要你预设 K。如果连 K 的可能范围都不知道，可以先做层次聚类，画出树状图（Dendrogram），然后决定在哪里"切一刀"。

> **基本原理（自底向上，凝聚式）：**
>
> 1. 每个点自成一簇（N 个簇）
> 2. 找到距离最近的两个簇，合并为一个
> 3. 重复步骤 2，直到所有点合并为一个大簇
> 4. 整个过程可以画成一棵树

> **簇间距离的定义：**

| 连接方法 | 定义 | 特点 |
|------|------|------|
| 单一连接（Single Linkage） | 两个簇中最近的两个点的距离 | 容易产生"链状"长条簇 |
| 完全连接（Complete Linkage） | 两个簇中最远的两个点的距离 | 倾向于产生紧凑的球形簇 |
| 平均连接（Average Linkage） | 两个簇中所有点对的距离平均值 | 折中方案，最常用 |

> **树状图解读：**
>
> 假设我们有 A, B, C, D 四个点。树状图显示：
> - 第一步：A 和 B 在高度 2.1 处合并（它们非常像）
> - 第二步：C 和 D 在高度 2.5 处合并
> - 第三步：(A,B) 和 (C,D) 在高度 8.7 处合并
>
> 竖着画一条"切割线"在高度 4.0 处 → 得到 2 个簇：{A,B} 和 {C,D}。
> 切割线在高度 1.5 处 → 得到 4 个簇：{A},{B},{C},{D}（每个独自一个簇）。
>
> **"切割线"的高度就是控制聚类粒度的旋钮。**

> **K-means vs 层次聚类 的选用原则：**
>
> - 数据量大（N > 10,000）且你知道 K → K-means（计算快）
> - 数据量小或你想看到嵌套的群体结构 → 层次聚类
> - 实际工作中，两者经常搭配使用：先用层次聚类确定 K 的范围，再用 K-means 跑最终结果

### 4.4 聚类的局限 — 以及怎么避免踩坑

> **局限 1：标准化是必须的，不是可选的。**
>
> 在我们的客户例子中，R 的取值范围是 1-365（天），F 的取值范围是 1-50（次）。如果不做标准化，欧氏距离几乎完全被 R 主导：
>
> d = √[(R₁-R₂)² + (F₁-F₂)²] ≈ √[(几百)² + (几)²] ≈ |R₁-R₂|
>
> F 的差异（比如 30 次和 20 次之间的差距）在距离计算中几乎被淹没。
>
> **解决：Z-score 标准化** → 每个变量减去其均值，除以标准差。变换后所有变量的均值为 0，标准差为 1，距离度量中的权重自然平衡。

> **局限 2：K-means 对初始质心敏感。**
>
> 不同的初始质心可能导致不同的聚类结果。解决：用 K-means++ 初始化（选择彼此尽量远离的点作为初始质心），或者跑多次选 WCSS 最低的结果。

> **局限 3：聚类总会给你结果——即使数据中根本没有自然的群组结构。**
>
> 把完全均匀分布的随机点丢进 K-means，K-means 仍然会分成 K 个簇。你必须用轮廓系数或领域知识判断"这些簇是否有意义"。

> **局限 4：K-means 只适合球形簇。**
>
> 如果数据是环形的、月牙形的，K-means 完全无能为力——它会硬切成两半。这种场景需要用 DBSCAN（基于密度的聚类）。

---

## 第五节：决策树 — 把"如果...就..."可视化

> 决策树是最直观的机器学习模型——你不需要懂数学就能理解它的逻辑。但面试中问的不只是"什么是决策树"，而是**信息增益怎么算、为什么选这个特征先分叉。**

### 5.1 信息熵 — "不确定性"的度量

**场景：** 银行有 10 个历史贷款申请人，已知是否违约，以及两个特征：信用评分高低、是否有抵押物。我们想建立一个决策树来预测新申请人的违约风险。

> **熵的公式（信息论的基石）：**
>
> H = -Σ pᵢ × log₂(pᵢ)
>
> 其中 pᵢ 是第 i 个类别的比例。熵的范围：[0, 1]（对于二分类）。H=0 表示完全确定（全是同一类），H=1 表示完全不确定（各类正好 50:50）。

> **计算目标变量的熵：**
>
> 10 个申请人中，4 人违约，6 人还款。
>
> p(违约) = 4 ÷ 10 = 0.4
> p(还款) = 6 ÷ 10 = 0.6
>
> H(目标) = -0.4 × log₂(0.4) - 0.6 × log₂(0.6)
>
> log₂(0.4) = ln(0.4) ÷ ln(2) = -0.9163 ÷ 0.6931 = -1.3219
> log₂(0.6) = ln(0.6) ÷ ln(2) = -0.5108 ÷ 0.6931 = -0.7370
>
> H(目标) = -0.4 × (-1.3219) - 0.6 × (-0.7370) = 0.5288 + 0.4422 = **0.9710**
>
> 接近 1.0——数据"非常不确定"。什么都不做，你猜错的概率很高。

### 5.2 信息增益 — "知道这个特征后，不确定性减少了多少"

> 给定以下数据布局：

| 申请人 | 信用评分 | 有抵押物 | 违约？ |
|------|:---:|:---:|:---:|
| 1 | 高 | 是 | 否 |
| 2 | 高 | 是 | 否 |
| 3 | 高 | 是 | 否 |
| 4 | 高 | 是 | 否 |
| 5 | 高 | 否 | 否 |
| 6 | 高 | 否 | 是 |
| 7 | 低 | 是 | 否 |
| 8 | 低 | 否 | 是 |
| 9 | 低 | 否 | 是 |
| 10 | 低 | 否 | 是 |

> **先看按"信用评分"分叉：**

> **高信用组（6 人）：** 1 人违约，5 人还款
>
> H(高信用) = -(1/6) × log₂(1/6) - (5/6) × log₂(5/6)
>
> = -(0.1667) × (-2.5850) - (0.8333) × (-0.2630)
>
> = 0.4308 + 0.2192 = **0.6500**

> **低信用组（4 人）：** 3 人违约，1 人还款
>
> H(低信用) = -(3/4) × log₂(3/4) - (1/4) × log₂(1/4)
>
> = -(0.75) × (-0.4150) - (0.25) × (-2.0000)
>
> = 0.3113 + 0.5000 = **0.8113**

> **按信用评分分叉后的加权平均熵：**
>
> H(信用) = (6/10) × 0.6500 + (4/10) × 0.8113 = 0.3900 + 0.3245 = **0.7145**

> **信用评分的信息增益：**
>
> IG(信用评分) = H(目标) - H(信用) = 0.9710 - 0.7145 = **0.2565**

> **再看按"是否有抵押物"分叉：**

> **有抵押物组（5 人）：** 0 人违约，5 人还款
>
> H(有抵押物) = 0 ———— 完美纯净！（全是 "否"）
>
> **无抵押物组（5 人）：** 4 人违约，1 人还款
>
> H(无抵押物) = -(4/5) × log₂(4/5) - (1/5) × log₂(1/5)
>
> = -(0.8) × (-0.3219) - (0.2) × (-2.3219) = 0.2575 + 0.4644 = **0.7219**

> **按是否有抵押物分叉后的加权平均熵：**
>
> H(抵押物) = (5/10) × 0 + (5/10) × 0.7219 = **0.3610**

> **是否有抵押物的信息增益：**
>
> IG(抵押物) = 0.9710 - 0.3610 = **0.6100**

> **决策：IG(抵押物) = 0.610 > IG(信用评分) = 0.257 → 先按"是否有抵押物"分叉！**

> **完整的决策树：**
>
> ```
>                    [根节点: 10人, 4违约]
>                     / 是否有抵押物?  \
>                    /                    \
>           [有抵押物: 5人]        [无抵押物: 5人, 4违约]
>           0违约 → 结论: 还款          /  信用评分?  \
>                                     /                \
>                            [高信用: 1人]      [低信用: 4人, 3违约]
>                            0违约 → 还款      → 结论: 违约(75%)
> ```

> **规则提取：**
>
> 规则 1：IF 有抵押物 → 预测还款（准确率 100%）
> 规则 2：IF 无抵押物 AND 信用评分高 → 预测还款（准确率 100%——目前数据）
> 规则 3：IF 无抵押物 AND 信用评分低 → 预测违约（准确率 75%）

> **这些规则可以直接交给信贷审批员："先看有没有抵押物，没有的话再看信用评分。" 这就是决策树胜过逻辑回归的地方——你可以向非技术人员解释"为什么"这个申请人被拒绝。**

### 5.3 剪枝 — 不要让树"记住"噪音

> 如果决策树一直长下去，直到每个"叶子"只包含一个数据点，那么训练准确率 = 100%，但测试准确率可能只有 60%。这就是**过拟合**——树把训练数据中的随机噪音也"记住"了。

> **预剪枝（Pre-Pruning）：** 在生长过程中就限制树的复杂度。
> - 信息增益小于某阈值 → 停止分裂
> - 节点中的样本数小于某最小值（如 < 5）→ 停止分裂
> - 树的最大深度设为 3 或 4
>
> **后剪枝（Post-Pruning）：** 先让树长到最大，再自底向上地评估：如果把这个子树替换成一个叶子节点（用多数类作为预测），验证集的准确率会下降吗？如果不会，就剪掉。
>
> 后剪枝通常比预剪枝效果更好，但计算成本更高。实际中，随机森林（Random Forest）和梯度提升树（XGBoost）通过集成多棵树来避免单棵树的过拟合——这些在量化金融和数据竞赛中是标配。

---

## 第六节：蒙特卡洛模拟 — 当公式给不了解析解时，用计算机暴力破解

> 在所有量化工具中，蒙特卡洛模拟可能是面试里最让你"出圈"的——大多数商科候选人只会说"我们用 Excel 算了 DCF"，而你能说出"我对每个输入参数定义了概率分布，跑了 10,000 次模拟，给出了估值的分布而非一个点估计"。

### 6.1 为什么需要模拟

> **场景：** 你给百威亚太（1876.HK）做 DCF 估值。

> 传统方法：拍一个 WACC = 8.5%，拍一个永续增长率 g = 2.0%，代入公式 → DCF 估值 = 850 亿。
>
> 这个"850 亿"给你的是一种虚假的精确感。实际上：
> - WACC 可能在 7.5% 到 9.5% 之间（取决于你如何估计股权成本和债务成本）
> - g 可能在 1.5% 到 2.5% 之间（取决于你对啤酒行业长期前景的判断）
> - 营收增速可能在 2% 到 6% 之间（取决于竞争格局和消费趋势）
>
> 你给老板说"估值 850 亿"，老板以为你很确定。但如果 WACC 取 9.5% 且 g 取 1.5%，估值可能只有 600 亿。**点估计掩盖了不确定性，蒙特卡洛揭示不确定性。**

### 6.2 蒙特卡洛模拟 — 分步走

> **第一步：为每个不确定的输入定义概率分布。** 这需要判断和经验——这就是为什么蒙特卡洛不是"纯数学"，它也需要业务理解。

| 参数 | 分布类型 | 参数 | 理由 |
|------|:---:|------|------|
| WACC | Triangular | min=7.0%, mode=8.5%, max=10.0% | 有一个"最可能"值，但上下限不对称 |
| 永续增长率 g | Uniform | min=1.5%, max=2.5% | 没有特别的"最可能"值，在区间内均匀分布 |
| 未来 5 年营收增速 | Normal | μ=4.0%, σ=2.0% | 围绕均值对称分布，有一定波动 |

> **第二步：从每个分布中随机抽取一个值，代入 DCF 模型，得到一个估值。**
>
> 假设第一次抽样：
> - WACC = 8.3%（从 Triangular 分布中抽）
> - g = 2.1%（从 Uniform 分布中抽）
> - 营收增速 = 3.8%（从 Normal 分布中抽）
>
> 代入 DCF → 估值 = 870 亿（记下来）
>
> 第二次抽样：
> - WACC = 9.1%, g = 1.7%, 营收增速 = 5.2% → 估值 = 780 亿
>
> ...重复 10,000 次...

> **第三步：分析输出分布。** 你得到了 10,000 个估值，而不是 1 个。

| 统计量 | 值 |
|------|:---:|
| 均值（Mean） | 860 亿 |
| 中位数（Median） | 855 亿 |
| 标准差（Std Dev） | 95 亿 |
| 第 5 百分位 | 720 亿 |
| 第 95 百分位 | 1020 亿 |
| P(DCF < 800 亿) | 18% |

> **第四步：形成投资建议。**
>
> 当前市值 = 800 亿。在 10,000 次模拟中，DCF 估值低于 800 亿的概率仅为 18%。也就是说，有 82% 的概率百威亚太的内在价值高于当前市值。
>
> 你可以对 PM（基金经理）说："基于我们的假设分布，百威亚太有大约八成的概率被低估。估值的 90% 置信区间是 [720 亿, 1020 亿]，下侧风险可控。如果我们可以接受 18% 的亏损概率，这是一个值得建仓的机会。"
>
> 相比于"估值 850 亿，低于市价不用看"，这段话展示了三个层次的专业性：**你量化了不确定性、你给出了概率判断、你让决策者在了解风险后自己做选择。**

### 6.3 与敏感性分析的比较

| 维度 | 敏感性分析 | 蒙特卡洛模拟 |
|------|------|------|
| 方式 | 每次只变动一个变量，看输出的变化 | 同时变动所有变量 |
| 对变量的处理 | "如果 WACC 变成 7.5%，其他不变" | WACC 从分布中随机抽，同时 g 也在随机抽 |
| 是否考虑相关性 | 否 | 可以（需要显式建模） |
| 输出 | "哪个变量对估值影响最大"（Tornado 图） | "估值可能的分布范围"（直方图 / CDF） |
| 计算复杂度 | Excel 可做 | 通常需要写代码（Python/R），至少需要插件 |
| 适用场景 | 理解关键驱动因素 | 理解整体风险敞口 |

> **两者互补：** 先用敏感性分析找到"哪些输入值得花时间精确估计"（如果一个变量的变动几乎不影响输出，就不值得为它争论三天），再用蒙特卡洛模拟生成完整的估值分布。

### 6.4 蒙特卡洛的陷阱 — 以及怎么避免

> **陷阱 1：垃圾进，垃圾出（GIGO）。**
>
> 输出的分布质量完全取决于输入的分布假设。如果你对营收增速的分布定义错了（比如假设它是 Normal 但实际上有重尾风险），那么输出的第 5 百分位可能严重低估了下行风险。
>
> 应对：做多个情景（乐观/基准/悲观分布），看结论是否稳健。不要只相信一个分布设定。

> **陷阱 2：忽略变量之间的相关性会严重误导结论。**
>
> 假设营收增速和毛利率负相关（为了冲量降价 → 营收增速高了但毛利率低了）。如果你的模拟独立抽取这两个变量，你会生成大量"高增速 + 高毛利"的组合——这在现实中几乎不存在。这种错误组合会高估上行空间。
>
> 应对：使用 Copula 或相关矩阵来建模变量间的依赖关系。最简单的做法：识别关键的相关性对，在抽样时施加约束。

> **陷阱 3：尾部概率需要非常多的迭代才能稳定。**
>
> 如果你想估计"估值低于 500 亿的概率"（这个事件在 10,000 次模拟中可能只出现 50 次），那么 ± 几个事件就会导致概率估计在 0.4% 到 0.6% 之间大幅波动。对于 1-in-1000 事件的估计，你需要至少 50,000 到 100,000 次迭代。
>
> 应对：关注你需要的精度。如果只是用于内部讨论，10,000 次够了。如果要提交给投委会做资金分配决策，加一个数量级。

---

## 第七节：百威亚太综合应用 — 这些工具怎么连在一起

> 这一节是 Day 14-15 的总复习。我们以一个完整的买方分析师工作流为例，展示如何把学过的所有工具串成一条逻辑链。

**场景设定：** 你是一家对冲基金的消费行业分析师，被要求给百威亚太 (1876.HK) 做出投资建议。你不能只说"我觉得它会涨"——你需要一个从数据到结论的完整证据链。

### 应用 1：收入预测 — 多元回归

> **因变量（Y）：** 百威亚太的季度收入同比增速（%）
>
> **自变量：**
> - X₁：中国 GDP 同比增速（%）
> - X₂：CPI 餐饮分项同比（%）
> - X₃：当月平均气温偏离历史均值（°C）——啤酒是典型的"天气敏感品"
> - X₄：高端及以上产品收入占比（%）——衡量产品高端化进展
>
> 用过去 5 年（20 个季度）的数据跑多元回归。

> **假设回归输出：**

| 变量 | β | SE | t | p 值 | VIF |
|------|:---:|:---:|:---:|:---:|:---:|
| 截距 β₀ | -3.2 | 1.8 | -1.78 | 0.095 | — |
| GDP 增速 X₁ | 0.85 | 0.22 | 3.86 | 0.001 | 2.1 |
| CPI 餐饮 X₂ | 0.42 | 0.18 | 2.33 | 0.034 | 1.8 |
| 气温偏离 X₃ | 0.15 | 0.06 | 2.50 | 0.024 | 1.2 |
| 高端占比 X₄ | 1.10 | 0.30 | 3.67 | 0.002 | 2.5 |

> R² = 0.72，Adjusted R² = 0.65

> **解读（面试级别）：**
>
> 1. 四个变量全部统计显著（p < 0.05）——GDP 增速和高端占比的显著性最强
> 2. VIF 都在 3 以下——没有严重的多重共线性问题
> 3. β₄ = 1.10 的含义：在控制 GDP、CPI、气温不变的情况下，高端产品占比每提高 1 个百分点，收入增速提高 1.10 个百分点——**高端化确实在推动增长**
> 4. R² = 0.72 意味着这四个变量解释了收入增速 72% 的变异——还算不错，但仍有 28% 未被解释（可能是因为促销活动、竞品动作、一次性事件等）
> 5. 预测下一年收入增速：假设 GDP=4.5%, CPI=2.0%, 气温偏离=+0.5°C, 高端占比=38%
>
> Ŷ = -3.2 + 0.85×4.5 + 0.42×2.0 + 0.15×0.5 + 1.10×38
>
> = -3.2 + 3.825 + 0.84 + 0.075 + 41.8 = **43.34%...**
>
> 等等，这个结果不合理——高端占比的单位需要确认。如果 X₄ 是百分比数值（如 38 代表 38%），β₄ = 1.10 意味着高端占比从 37% 提高到 38%，收入增速变化 1.10 个百分点。这更合理。
>
> 修正：Ŷ = -3.2 + 3.825 + 0.84 + 0.075 + 1.10×38 = -3.2 + 3.825 + 0.84 + 0.075 + 41.8... 还是不对。
>
> 这说明 X₄ 需要定义为"百分比变化"而非"百分比水平"。假设 X₄ 定义为"高端占比同比变化（百分点）"，去年高端占比从 30%→34%（+4 个百分点），那么 β₄ = 1.10 的解释就是：占比提高 1 个百分点，增速提高 1.10 个百分点。
>
> 预测：GDP=4.5%, CPI餐饮=2.0%, 气温偏离=+0.5°C, 高端占比变化=+3.0 个百分点
>
> Ŷ = -3.2 + 0.85×4.5 + 0.42×2.0 + 0.15×0.5 + 1.10×3.0
>
> = -3.2 + 3.825 + 0.84 + 0.075 + 3.30 = **4.84%**
>
> **预测下一年收入增速约为 4.8%。**（这个数字看起来合理得多。）

> **这个例子也揭示了一个重要的建模教训：定义变量时要非常小心单位——β₄ = 1.10 看起来很"大"，但如果 X₄ 的定义不同，解释完全不同。面试中展示这种自我质疑会让面试官觉得你真正理解回归，而不只是会跑代码。**

### 应用 2：估值蒙特卡洛

> 基于应用 1 的回归结果，我们为 DCF 模型的关键输入定义分布：

| 参数 | 分布 | 参数设定 |
|------|:---:|------|
| 营收增速（未来 5 年平均） | Normal | μ = 4.8%, σ = 2.5% |
| WACC | Triangular | min=7.0%, mode=8.5%, max=10.0% |
| 永续增长率 g | Uniform | min=1.5%, max=2.5% |
| EBITDA 利润率 | Normal | μ = 32.0%, σ = 3.0% |

> 跑 10,000 次 → 估值分布的均值为 880 亿，90% CI = [700 亿, 1100 亿]。
>
> 当前市值 = 820 亿 → P(低估) ≈ 68% → **建议：买入，但下侧风险（估值跌至 700 亿意味着约 15% 的下跌空间）需要仓位控制。**

### 应用 3：竞争格局 — K-means 聚类

> 收集中国啤酒行业 20+ 家公司的财务数据，对以下维度做标准化后跑 K-means：

| 维度 | 含义 |
|------|------|
| 营收规模 | log(营收) |
| 毛利率 | % |
| 高端产品收入占比 | % |
| 销售费用率 | % |
| ROE | % |
| 营收增速 | 3 年 CAGR |

> K-means（K=4 时轮廓系数最高）将公司分为 4 个战略群组：
>
> - 簇 1（高端领导者）：百威亚太、华润雪花（高端线）——高毛利、高高端占比、高 ROE
> - 簇 2（规模大众玩家）：青岛啤酒、燕京啤酒——大营收但较低毛利率和高端占比
> - 簇 3（区域性价比品牌）：珠江啤酒、重庆啤酒——小规模、低成本、区域聚焦
> - 簇 4（精酿新势力）：各种小型精酿品牌——高增速、小规模、极高毛利率
>
> **洞见：** 百威亚太真正的竞争对手不在"啤酒行业"，而在"簇 1"——和华润雪花的高端线才是直接竞争。你在做竞争分析时，应该对比的是簇 1 内的公司，而不是整个行业的平均。

### 应用 4：假设检验 — "高端化战略是否真的提升了毛利率"

> 百威亚太从 2019 年开始大力推高端化（引入时代、科罗娜、福佳等高端品牌）。问题是：**毛利率真的因此提高了吗？还是原材料成本下降等其他因素在起作用？**

> **简单检验（Day 14 的双样本 t 检验）：**
>
> H₀: μ_高端化后 - μ_高端化前 = 0（毛利率没有提高）
> H₁: μ_高端化后 - μ_高端化前 > 0（毛利率提高了）
>
> 收集高端化战略实施前后各 8 个季度的毛利率数据：
>
> 高端化前（8 个季度）：均值 = 50.2%, s = 2.1%
> 高端化后（8 个季度）：均值 = 53.8%, s = 2.4%
>
> 合并标准误 SE = √[s²_p × (1/8 + 1/8)] = √[(2.1²+2.4²)/2 × 0.25]... 实际应使用 Welch t 检验（方差不等的版本）。
>
> 假设 t = 3.2, df ≈ 13, p = 0.003（单侧）
>
> **结论：拒绝 H₀，高端化后毛利率统计显著提高。**
>
> **但等一下——这里有个混杂变量（confounder）：** 同期全球大麦价格下降了约 8%，原材料成本的下降本身就会提升毛利率。你观察到的高端化"效果"可能部分是原材料成本的贡献。
>
> **更严谨的做法：** 做一个多元回归，因变量是季度毛利率，自变量包括：(1) 高端产品占比，(2) 原材料成本指数，(3) 季度虚拟变量（控制季节性）。
>
> 如果控制原材料成本后，高端占比的系数仍然显著为正，你才能说"高端化确实提升了毛利率"。
>
> 这回到了应用 1 的逻辑——**多元回归的最大价值就是控制混杂变量，分离出"纯净"的因果效应。**

### 应用 5：决策树 — "该不该进入下一个省份？"

> 百威亚太计划进入一个新的省份市场。过去 5 年在 15 个省份的进入结果（成功/失败）可以作为训练数据。

| 省份 | 人均 GDP (万) | 啤酒人均消费量 (升) | 竞品数量 | 分销网络覆盖 (%) | 结果 |
|------|:---:|:---:|:---:|:---:|:---:|
| 江苏 | 15.1 | 38 | 2（少） | 80%（高） | 成功 |
| 四川 | 6.8 | 42 | 3（多） | 60%（中） | 成功 |
| 河南 | 5.9 | 35 | 3（多） | 30%（低） | 失败 |
| 湖南 | 6.5 | 30 | 2（少） | 55%（中） | 成功 |
| ... | ... | ... | ... | ... | ... |

> 跑决策树，提取出的关键规则：
>
> **规则 1：** IF 人均 GDP > 8 万 AND 分销网络覆盖 > 50% → 进入（历史成功率 7/8 = 88%）
> **规则 2：** IF 人均 GDP < 6 万 AND 竞品数量 ≥ 3 → 不进入（历史失败率 5/6 = 83%）
> **规则 3：** IF 6 万 < 人均 GDP < 8 万 AND 啤酒人均消费量 > 35 升 → 进入（成功率较高）
>
> 对于目标新省份（人均 GDP = 7.2 万，啤酒消费 = 38 升，竞品 = 2，分销网络 = 45%）→ 规则 3 适用 → **建议进入，但分销网络是短板，需配套投入。**

### 应用 6：PCA — 理解百威亚太的风险敞口

> 收集百威亚太 + 20 家同业公司（啤酒 + 饮料 + 消费）的月度回报率，跑 PCA：

| 主成分 | 特征值 | 解释方差% | 累计% | 载荷最大的行业 | 解读 |
|------|:---:|:---:|:---:|------|------|
| PC1 | 8.5 | 42.5% | 42.5% | 所有消费股 | 消费板块整体因子 |
| PC2 | 4.2 | 21.0% | 63.5% | 啤酒股正载荷，饮料股负载荷 | 酒精 vs 非酒精因子 |
| PC3 | 2.8 | 14.0% | 77.5% | 高端品牌 | 消费升级因子 |

> 百威亚太在各 PC 上的载荷：
> - PC1：+0.42（对消费板块整体敏感）
> - PC2：+0.68（对"酒精"因子非常敏感——啤酒股特征明显）
> - PC3：+0.52（对消费升级因子敏感——高端定位决定其 beta 于升级趋势）
>
> **投资含义：** 买百威亚太，你实际上在做三个赌注：(1) 消费板块整体走强，(2) 酒精饮料跑赢非酒精饮料，(3) 消费升级趋势持续。如果你只想赌消费升级但不想赌酒精，你需要找到 PC3 载荷高但 PC2 载荷低的替代标的（比如高端乳制品或高端餐饮）。

---

## 面试题一览

> **Q1（回归基础）：** 某分析师跑了一个回归：销售量 = 100 + 5×价格 + 20×广告支出，R² = 0.65。请你解读这三个数字，并指出至少两个这个回归可能存在的问题。

**参考答案框架：**
- β_价格 = 5：价格每提高 1 单位，销售量增加 5 单位——符号方向不对！（正常应该是负的，价格涨销量跌）。可能的解释：遗漏变量偏误（价格高的产品可能质量更好或品牌更强，而质量和品牌才是驱动销量的真正原因），或者多重共线性（价格和广告高度相关）。
- β_广告 = 20：广告每增加 1 单位，销售量增加 20 单位。需要检验 p 值判断是否显著。
- R² = 0.65：模型解释了 65% 的销量变异。
- 可能的问题：(1) 遗漏变量——如促销力度、季节性、竞品价格；(2) 价格的内生性——价格和销量可能互相决定（联立方程偏误）；(3) 没有检查残差——如果残差有自相关，标准误会偏小。

> **Q2（逻辑回归）：** 信用卡公司用逻辑回归预测客户流失。β_使用频率 = -0.05。求：(1) 使用频率每增加 1 次/月，流失胜率变化多少？(2) 如果某客户当前流失概率为 30%，使用频率增加 10 次/月后的流失概率是多少？

**参考答案框架：**
(1) e^(-0.05) = 0.9512，每增加 1 次使用，胜率乘以 0.951（降低约 4.9%）。
(2) 当前胜率 = 0.3/(1-0.3) = 0.4286。增加 10 次后胜率 = 0.4286 × (0.9512)^10 = 0.4286 × e^(-0.5) = 0.4286 × 0.6065 = 0.260。新概率 P = 0.260/(1+0.260) = 0.206。流失概率从 30% 降到 20.6%。

> **Q3（ANOVA）：** 测试四种不同定价策略（每组 6 个城市）。ANOVA 表给出：SSB=480, SSW=600, df_between=3, df_within=20。求 F 统计量，并用 α=0.05 做检验（F(3,20) 临界值 = 3.10）。

**参考答案框架：**
MSB = 480/3 = 160, MSW = 600/20 = 30, F = 160/30 = 5.33 > 3.10 → 拒绝 H₀。四种定价策略的效果不全相等。接下来应该做 Tukey HSD 事后检验确认哪些对之间有显著差异。

> **Q4（决策树）：** 数据：20 封邮件，12 封被打开，8 封未被打开。按照"标题是否包含数字"分叉：包含数字的 10 封中 8 封被打开；不包含数字的 10 封中 4 封被打开。求"标题是否包含数字"的信息增益。

**参考答案框架：**
H(目标) = -(12/20)×log₂(12/20) - (8/20)×log₂(8/20) = -(0.6)×(-0.737) - (0.4)×(-1.322) = 0.442 + 0.529 = 0.971
H(有数字) = -(8/10)×log₂(8/10) - (2/10)×log₂(2/10) = -(0.8)×(-0.322) - (0.2)×(-2.322) = 0.258 + 0.464 = 0.722
H(无数字) = -(4/10)×log₂(4/10) - (6/10)×log₂(6/10) = 0.971（刚好和目标熵相同——分叉后没减少不确定性）
加权平均 = 0.5×0.722 + 0.5×0.971 = 0.8465
IG = 0.971 - 0.8465 = 0.1245。信息增益很小——这个特征帮助有限。事实上，不包含数字的那组和原始分布完全一样，等于没有提供新信息。

> **Q5（蒙特卡洛）：** 你给一个项目做 NPV 分析。初始投资 = 1000 万。每年现金流服从 Normal(μ=250万, σ=50万)，持续 5 年。折现率 10%。(1) 用期望值直接计算 NPV。(2) 解释为什么蒙特卡洛比你刚算出的"点 NPV"更有信息量。

**参考答案框架：**
(1) NPV = -1000 + 250/(1.1) + 250/(1.1)² + 250/(1.1)³ + 250/(1.1)⁴ + 250/(1.1)⁵ = -1000 + 250×3.7908 = -1000 + 947.7 = -52.3 万（负的——按期望值不应投资）。
(2) 但"期望值"掩盖了现金流的波动。如果σ=50万，有相当概率现金流高于250万，NPV可能为正。蒙特卡洛可以给出P(NPV>0)的概率分布，让决策者在"期望NPV为负但有概率为正"之间做权衡。而且现金流可能不是独立同分布的——如果第一年表现好，后续年份可能也好（正自相关），蒙特卡洛可以建模这种依赖关系。

> **Q6（综合 — PCA + 聚类）：** 你对一个包含 50 只股票的池子做 PCA + K-means。(1) 为什么在做 K-means 之前先做 PCA？(2) 前两个 PC 分别解释了 40% 和 25% 的方差。K-means 在 PC1-PC2 空间上给出 3 个簇。你如何向 PM 解释"这三个簇代表什么"？

**参考答案框架：**
(1) 原因有三：降维（50 维 → 2 维，避免"维度诅咒"——高维空间所有距离都差不多，K-means 失效）；去噪（PC3-50 中的变异很可能是不重要的噪音）；可视化（在 PC1-PC2 的 2D 图上直接展示聚类结果）。
(2) 先看每个 PC 上哪些原始变量载荷高，给 PC 命名（如 PC1="规模因子"——大市值股票载荷高，PC2="动量因子"——近期涨幅大的股票载荷高）。然后在 PC1-PC2 散点图上标注三个簇的位置：(高规模+高动量)的"白马成长股"簇，(低规模+高动量)的"小盘热门股"簇，(高规模+低动量)的"大盘价值股"簇。PM 听完就知道这三个簇对应的投资主题。

> **Q7（综合应用题）：** 你是一家 VC 的分析师，需要从 200 家初创公司中选出 10 家做尽调。描述你会如何使用 Day 14-15 学过的至少四种工具来完成这个任务。

**参考答案框架：**
1. **数据收集和清洗：** 收集 200 家公司的财务、团队、市场、产品数据。处理缺失值（Day 14 第一节课）。
2. **回归分析：** 用历史上已投资项目的成败数据跑逻辑回归。因变量=成功/失败，自变量=创始团队经验年限、市场规模、月活用户增速、毛利率等。得到每个变量的胜率比，理解"什么因素最能预测成功"。
3. **PCA 降维：** 200 家公司在 30 个指标上 → PCA 压缩到 5-6 个主成分（团队能力因子、市场潜力因子、产品成熟度因子等）。
4. **K-means 聚类：** 在 PCA 空间上聚类，找到"高质量"的簇（该簇中历史成功项目比例高）。从该簇中选代表性公司。
5. **蒙特卡洛模拟：** 对每家公司做 scenario-based valuation（乐观/基准/悲观），用蒙特卡洛模拟合并市场风险 → 得到每家公司的期望回报分布 → 选期望回报最高的同时相关性低的（组合思维）。
6. **最终输出：** 推荐 10 家尽调标的，附带每家的逻辑回归成功概率预测、所属聚类和估值分布。这比"我觉得这几家不错"要专业得多。

---

## 今日核心公式速记

| 概念 | 公式 | 一句话 |
|------|------|------|
| OLS 斜率 | β₁ = Σ(X-X̄)(Y-Ȳ) ÷ Σ(X-X̄)² | 协方差 ÷ X 的方差 |
| R² | 1 - SS_residual ÷ SS_total | 被解释的变异比例 |
| SE(β₁) | √[MS_residual ÷ Σ(X-X̄)²] | X 变异越大，估计越精确 |
| VIF | 1 ÷ (1 - R²ⱼ) | R²ⱼ 是 Xⱼ 对其他 X 回归的 R² |
| 胜率比 | e^β | X 每增 1 单位，胜率乘 e^β |
| F 统计量 | MSB ÷ MSW | 组间变异 ÷ 组内变异 |
| Tukey HSD | q × √(MSW ÷ n) | 最小显著差异 |
| 信息熵 | -Σ pᵢ × log₂(pᵢ) | 不确定性 = 0（纯）到 1（混乱） |
| 信息增益 | H(父) - H(加权子) | 熵的减少量 |
| 欧氏距离 | √Σ(xᵢ - yᵢ)² | K-means 的距离度量 |

---

## Day 14 + Day 15 总览：从数据到决策的完整工具箱

> Day 14 和 Day 15 合在一起，给了你一个完整的"量化分析工作流"：

```
数据收集 → 描述性统计（Day 14 第一节）
    → 可视化探索（分布、散点图）
    → 假设检验（Day 14 第四-五节）→ "这几个组的差异是真实的吗？"
    → 回归分析（Day 15 第一节）→ "哪个因素在驱动结果？效应多大？"
    → 降维 + 聚类（Day 15 第三-四节）→ "数据的底层结构是什么？"
    → 决策树（Day 15 第五节）→ "可操作的规则是什么？"
    → 蒙特卡洛模拟（Day 15 第六节）→ "不确定性的全貌是什么？"
    → 决策建议
```

> 每一个箭头都是一个"你可以向面试官解释你做了什么"的步骤。每一块你都有手动计算的肌肉记忆（因为我们从 Day 14 到 Day 15 一直在手算），这意味着你在面试中被要求"在黑板上给我演示一下"的时候不会卡住。

> **最后一条建议：** 在面试中，不要一次性把所有这些工具都甩出来。先理解业务问题，再选择 1-2 个最合适的工具深入展开。面试官想要的不是"我会多少种方法"，而是"我知道在这个情境下哪种方法最合适，以及为什么"。

---

*Day 15 · 建模与量化决策 · 2026-08-12*
*本手册是 Day 14（概率与统计推断）的延续，建议与 Day 14 手册配合使用。*
