跳到主要内容
数理千知 Data Analysis Notes

Integrated notes

数据分析期末复习整合笔记

按 1-11 章合并整理,适合先通读建立框架,再回到题库按章节刷题。

第 1 章 数据分析与 Python 语言

核心知识点

数据分析是运用统计方法对数据进行整理、展示、概括、建模和推断,从中提取信息并支持判断决策。

按分析目的分:

  • 描述性分析:整理、展示、概括数据。
  • 探索性分析:发现数据中的模式,为假设形成提供线索。
  • 验证性分析:检验已有理论或假设是否成立。

按统计方法分:

  • 描述统计:图表、均值、比例、标准差等。
  • 推断统计:根据样本推断总体,包括参数估计和假设检验。

基本概念:

  • 总体:研究对象全体。
  • 样本:从总体中抽取的一部分。
  • 样本量:样本中元素个数。
  • 参数:总体特征,如 $\mu,\sigma^2,\pi$。
  • 统计量:样本特征,如 $\bar{x},s^2,p$。

抽样方法:

  • 简单随机抽样:总体每个单位等概率被抽中。
  • 分层抽样:先分层,再各层抽样。
  • 系统抽样:按固定间隔抽取。
  • 整群抽样:抽群,再调查群内全部单位。

Python 基础

常见数据结构:

  • 数字:intfloatboolcomplex
  • 字符串:str
  • 元组:不可变序列。
  • 列表:可变序列,常用 appendinsertpopsort
  • 字典:键值对,常用 keys()values()items()
  • 集合:唯一元素组成的无序集合,可做并集、交集。

常用模块:

  • numpy:数组、矩阵、数值计算。
  • pandas:数据框、读写文件、分组汇总。
  • matplotlibseaborn:绘图。
  • scipy.stats:统计分布、检验。
  • statsmodels:回归、ANOVA、时间序列。

数据处理常用代码

import numpy as np
import pandas as pd

df = pd.read_csv("data.csv", encoding="gbk")
df.head()
df.info()
df.describe()

设置行索引:

df = pd.read_csv("data.csv", encoding="gbk")
df = df.set_index("rownames")

数组操作:

a = np.array([5, 4, 1, 2, 3])
b = np.arange(12).reshape(3, 4)
b.shape
b.mean(axis=0)

考点

  • Python 程序追踪:列表下标从 0 开始,循环边界、条件判断、布尔变量变化。
  • 数据读入:read_csvencoding="gbk"index_colset_index
  • 区分总体参数与样本统计量。
  • 判断描述统计与推断统计的区别。

易错点

  • 描述统计不仅适用于总体,也可用于样本;推断统计通常依据样本推断总体。
  • Python 中 range(4, i, -1) 不包括终点 i
  • 字典按键取值,列表按位置取值。
  • 样本量不是变量个数,而是观测对象个数。

第 2 章 数据可视化分析

核心知识点

数据可视化的任务是用图形展示变量分布、类别构成、变量关系和时间变化。

一幅完整图形通常包括:

  • 图形主体。
  • 标题。
  • 坐标轴名称与单位。
  • 图例。
  • 合理比例,避免图形过长或过高造成误导。

按数据类型选图

类别数据:

  • 条形图:比较各类别频数或比例。
  • 饼图/环形图:展示构成比例;类别太多时不推荐。
  • 堆叠条形图:比较两个类别变量的组合结构。

数值变量分布:

  • 直方图:观察分布形状、偏斜、峰态。
  • 核密度图:平滑展示分布。
  • 箱线图:展示中位数、四分位数、离群点。
  • 小提琴图:箱线图 + 核密度。
  • 点图/蜂群图:样本较少时观察离群点和分布。

变量关系:

  • 散点图:两个数值变量关系。
  • 散点图矩阵:多个数值变量两两关系。
  • 相关系数热图:多个数值变量线性相关强度。
  • 气泡图:两个坐标变量 + 第三个变量用点大小表示。

时间序列:

  • 折线图:展示随时间变化趋势。
  • 面积图:在折线图基础上强调累计或幅度。

样本相似性:

  • 轮廓图/平行坐标图:比较多个样本在多个变量上的差异。
  • 雷达图:展示多个指标下样本轮廓。

Python 实现

import seaborn as sns
import matplotlib.pyplot as plt

sns.countplot(data=df, x="type")
sns.histplot(df["income"], kde=True)
sns.boxplot(data=df, x="type", y="income")
sns.scatterplot(data=df, x="education", y="income")
sns.heatmap(df.corr(numeric_only=True), annot=True, cmap="coolwarm")

时间序列:

plt.plot(df["date"], df["value"], marker="o")
plt.xlabel("时间")
plt.ylabel("value")

考点

  • 根据研究目的选择图形。
  • 4 月份以来每天房租变化:折线图。
  • 研究两个数值变量关系:散点图。
  • 查看分布是否偏斜、有无离群点:直方图、箱线图、Q-Q 图。
  • 展示类别比例:条形图或饼图,优先条形图更清晰。

易错点

  • 直方图用于数值型数据分布,不用于类别频数对比。
  • 折线图适合有时间顺序的数据。
  • 箱线图中的离群点通常由 $Q_1-1.5IQR$ 和 $Q_3+1.5IQR$ 判断。
  • 相关系数热图只反映线性相关,不反映因果关系。

第 3 章 描述统计量分析

水平统计量

均值:

$$ \bar{x}=\frac{1}{n}\sum_{i=1}^{n}x_i $$

特点:利用所有数据,易受极端值影响。

加权均值:

$$ \bar{x}=\frac{\sum m_i f_i}{\sum f_i} $$

中位数:

  • 排序后处于中间位置。
  • 不易受极端值影响,具有稳健性。

四分位数:

  • $Q_1$:25% 位置。
  • $Q_2$:中位数。
  • $Q_3$:75% 位置。

众数:

  • 出现次数最多的值。
  • 可能不存在,也可能有多个。

差异统计量

极差:

$$ R=x_{\max}-x_{\min} $$

四分位差:

$$ IQR=Q_3-Q_1 $$

样本方差:

$$ s^2=\frac{\sum (x_i-\bar{x})^2}{n-1} $$

样本标准差:

$$ s=\sqrt{s^2} $$

变异系数:

$$ CV=\frac{s}{\bar{x}} $$

用于比较均值不同或计量单位不同的数据离散程度。

标准分数:

$$ z_i=\frac{x_i-\bar{x}}{s} $$

用于判断相对位置和离群点。

分布形状统计量

偏度:

  • $SK=0$:近似对称。
  • $SK>0$:右偏。
  • $SK<0$:左偏。
  • $|SK|>1$:偏斜较强。

峰度:

  • 描述分布峰值高低和尾部厚度。
  • 常见软件输出的是超额峰度,即正态分布约为 0。

Python 实现

df["x"].mean()
df["x"].median()
df["x"].mode()
df["x"].var(ddof=1)
df["x"].std(ddof=1)
df["x"].quantile([0.25, 0.5, 0.75])
df["x"].skew()
df["x"].kurt()

综合描述:

df.describe()
df.groupby("type")["income"].agg(["count", "mean", "std", "median"])

考点

  • 给定一组数,计算均值、中位数、众数、极差。
  • 解释极差标准化:$(x-\min)/(x_{\max}-x_{\min})$。
  • 综合描述:均值、标准差、分位数、偏度、峰度、图形。
  • 按组比较:groupby 后比较均值和离散程度。

易错点

  • 极差标准化不会让数据服从正态分布。
  • 样本方差分母是 $n-1$,不是 $n$。
  • 均值受极端值影响,中位数更稳健。
  • $CV$ 适合比较相对离散程度,但均值接近 0 时要慎用。

第 4 章 推断方法的理论基础:概率分布

概率与随机变量

概率是事件发生可能性的度量,取值在 0 到 1 之间。

随机变量:

  • 离散型随机变量:取有限个或可列个值,如次品个数。
  • 连续型随机变量:可在区间内取任意值,如身高、收入。

离散型随机变量期望与方差:

$$ E(X)=\sum x_i p_i,\quad D(X)=\sum (x_i-\mu)^2p_i $$

连续型随机变量期望与方差:

$$ E(X)=\int_{-\infty}^{\infty}xf(x)dx $$
$$ D(X)=\int_{-\infty}^{\infty}(x-\mu)^2f(x)dx $$

常见分布

二项分布:

$$ X\sim B(n,p) $$

条件:

  • 每次试验只有成功/失败两种结果。
  • 成功概率 $p$ 不变。
  • 各次试验相互独立。
  • 重复 $n$ 次。

概率函数:

$$ P(X=x)=C_n^x p^x(1-p)^{n-x} $$

期望与方差:

$$ E(X)=np,\quad D(X)=np(1-p) $$

正态分布:

$$ X\sim N(\mu,\sigma^2) $$

标准化:

$$ Z=\frac{X-\mu}{\sigma}\sim N(0,1) $$

卡方分布:

若 $Z_1,\ldots,Z_n$ 独立同分布于标准正态,则:

$$ \sum_{i=1}^n Z_i^2\sim \chi^2(n) $$

性质:

  • 取值非负。
  • 右偏,自由度越大越接近对称。
  • $E(\chi^2)=n$,$D(\chi^2)=2n$。
  • 用于方差推断、卡方检验。

t 分布:

$$ T=\frac{Z}{\sqrt{X/n}}\sim t(n) $$

特点:

  • 关于 0 对称。
  • 比标准正态更厚尾。
  • 自由度越大越接近标准正态。
  • 用于总体方差未知的小样本均值推断。

F 分布:

若 $U\sim \chi^2(n_1)$,$V\sim \chi^2(n_2)$ 且独立:

$$ F=\frac{U/n_1}{V/n_2}\sim F(n_1,n_2) $$

用于方差比检验、ANOVA、回归整体 F 检验。

抽样分布

统计量的概率分布称为抽样分布。

中心极限定理:

从均值为 $\mu$、方差为 $\sigma^2$ 的总体抽取容量为 $n$ 的样本,当 $n$ 足够大时:

$$ \bar{X}\approx N\left(\mu,\frac{\sigma^2}{n}\right) $$

样本均值标准误:

$$ SE(\bar{X})=\frac{\sigma}{\sqrt{n}} $$

总体标准差未知时:

$$ \widehat{SE}(\bar{X})=\frac{s}{\sqrt{n}} $$

样本方差分布:

若总体正态:

$$ \frac{(n-1)s^2}{\sigma^2}\sim \chi^2(n-1) $$

样本比例近似分布:

$$ p\approx N\left(\pi,\frac{\pi(1-\pi)}{n}\right) $$

Python 实现

from scipy import stats

stats.binom.pmf(1, n=5, p=0.06)
stats.binom.cdf(3, n=5, p=0.06)

stats.norm.cdf(40, loc=50, scale=10)
stats.norm.ppf(0.025)

stats.chi2.cdf(10, df=15)
stats.chi2.ppf(0.95, df=10)

stats.t.cdf(-2, df=10)
stats.t.ppf(0.975, df=25)

stats.f.cdf(3, dfn=10, dfd=8)
stats.f.ppf(0.95, dfn=25, dfd=20)

考点

  • 随机变量分为离散型和连续型。
  • t、F、卡方分布分别对应哪些检验。
  • 自由度的含义和取值。
  • 中心极限定理和标准误。
  • 正态标准化。

易错点

  • 正态分布中,连续变量取某个具体值的概率为 0。
  • t 分布不是标准正态,但自由度大时接近标准正态。
  • F 分布和卡方分布取值不能为负。
  • 标准误描述统计量抽样分布的波动,不是原始数据的标准差。

第 5 章 推断分析的基本方法:参数估计

点估计与区间估计

参数估计是用样本统计量估计总体参数。

点估计:

  • 用一个样本统计量直接估计总体参数。
  • 如用 $\bar{x}$ 估计 $\mu$。
  • 缺点:不能给出估计不确定性。

区间估计:

  • 在点估计基础上给出一个区间。
  • 一般形式:点估计 $\pm$ 分位数 $\times$ 标准误。

置信水平:

  • 若重复抽样并按同一方法构造区间,约有 $1-\alpha$ 的区间包含总体参数真值。
  • 不能说“某个已经算出的具体区间以 95% 概率包含参数”。

估计量评价标准

无偏性:

$$ E(\hat{\theta})=\theta $$

有效性:

  • 在无偏估计量中,方差越小越有效。

一致性:

  • 样本量增大时,估计量越来越接近总体参数。

总体均值置信区间

大样本或总体方差已知:

$$ \bar{x}\pm z_{\alpha/2}\frac{\sigma}{\sqrt{n}} $$

总体方差未知、小样本且总体正态:

$$ \bar{x}\pm t_{\alpha/2}(n-1)\frac{s}{\sqrt{n}} $$

Python:

stats.t.interval(
    0.95,
    df=len(data)-1,
    loc=np.mean(data),
    scale=stats.sem(data)
)

两总体均值差置信区间

独立大样本:

$$ (\bar{x}_1-\bar{x}_2)\pm z_{\alpha/2} \sqrt{\frac{s_1^2}{n_1}+\frac{s_2^2}{n_2}} $$

独立小样本且方差相等:

$$ (\bar{x}_1-\bar{x}_2)\pm t_{\alpha/2}(n_1+n_2-2) s_p\sqrt{\frac{1}{n_1}+\frac{1}{n_2}} $$

配对样本:

先求差值 $d_i=x_i-y_i$:

$$ \bar{d}\pm t_{\alpha/2}(n-1)\frac{s_d}{\sqrt{n}} $$

总体比例置信区间

大样本:

$$ p\pm z_{\alpha/2}\sqrt{\frac{p(1-p)}{n}} $$

使用条件:$np$ 与 $n(1-p)$ 通常都应大于 10。

两个总体比例差:

$$ (p_1-p_2)\pm z_{\alpha/2} \sqrt{\frac{p_1(1-p_1)}{n_1}+\frac{p_2(1-p_2)}{n_2}} $$

总体方差置信区间

单总体方差,总体正态:

$$ \frac{(n-1)s^2}{\chi^2_{1-\alpha/2}} \le \sigma^2 \le \frac{(n-1)s^2}{\chi^2_{\alpha/2}} $$

两个总体方差比:

$$ \frac{s_1^2/s_2^2}{F_{1-\alpha/2}} \le \frac{\sigma_1^2}{\sigma_2^2}\le \frac{s_1^2/s_2^2}{F_{\alpha/2}} $$

考点

  • 置信水平解释几乎必考。
  • 区分 z 区间与 t 区间。
  • 方差未知、小样本、正态总体用 t。
  • 方差区间用卡方,方差比区间用 F。
  • 样本量增大,置信区间通常变窄;置信水平提高,区间变宽。

易错点

  • $z_{\alpha/2}$ 与 $t_{\alpha/2}$ 是双侧分位数,95% 时常用 0.975 分位点。
  • 置信水平从 95% 提高到 99%,分位数变大,区间变宽。
  • 两独立样本和配对样本公式不同。
  • 估计标准误不是样本标准差本身。

第 6 章 推断分析的基本方法:假设检验

基本原理

假设检验先对总体参数或分布提出假设,再用样本信息判断是否有足够证据拒绝原假设。

核心逻辑:

  • 逻辑上类似反证法。
  • 统计上依据小概率原理。

原假设 $H_0$:

  • 研究者希望收集证据反对的假设。
  • 通常表示“无差异、无变化、无关系”。
  • 等号总放在 $H_0$ 中,如 $=,\ge,\le$。

备择假设 $H_1$:

  • 研究者希望支持的假设。
  • 通常表示“有差异、有变化、有关系”。
  • 使用 $\ne,>,<$。

单侧与双侧

双侧检验:

$$ H_0:\mu=\mu_0,\quad H_1:\mu\ne\mu_0 $$

左侧检验:

$$ H_0:\mu\ge\mu_0,\quad H_1:\mu<\mu_0 $$

右侧检验:

$$ H_0:\mu\le\mu_0,\quad H_1:\mu>\mu_0 $$

两类错误

第一类错误:

  • $H_0$ 为真却拒绝 $H_0$。
  • 概率为 $\alpha$,即显著性水平。
  • 又称弃真错误。

第二类错误:

  • $H_0$ 为假却未拒绝 $H_0$。
  • 概率为 $\beta$。
  • 又称纳伪错误。

p 值决策

p 值是在 $H_0$ 为真时,得到当前样本结果或更极端结果的概率。

决策规则:

  • 若 $p<\alpha$,拒绝 $H_0$。
  • 若 $p\ge\alpha$,不能拒绝 $H_0$。

表述:

  • 说“不能拒绝原假设”,不要说“接受原假设”。
  • 显著是统计意义,不一定有实际意义。

均值检验

单总体均值,大样本:

$$ z=\frac{\bar{x}-\mu_0}{s/\sqrt{n}} $$

单总体均值,小样本且总体正态、方差未知:

$$ t=\frac{\bar{x}-\mu_0}{s/\sqrt{n}}\sim t(n-1) $$

两独立样本均值,方差相等:

$$ t=\frac{\bar{x}_1-\bar{x}_2}{s_p\sqrt{1/n_1+1/n_2}} $$

配对样本:

$$ t=\frac{\bar{d}}{s_d/\sqrt{n}}\sim t(n-1) $$

Python:

stats.ttest_1samp(x, popmean=mu0)
stats.ttest_ind(x1, x2, equal_var=True)
stats.ttest_ind(x1, x2, equal_var=False)
stats.ttest_rel(before, after)

比例与方差检验

一个总体比例:

$$ z=\frac{p-\pi_0}{\sqrt{\pi_0(1-\pi_0)/n}} $$

一个总体方差:

$$ \chi^2=\frac{(n-1)s^2}{\sigma_0^2}\sim \chi^2(n-1) $$

两个总体方差比:

$$ F=\frac{s_1^2}{s_2^2} $$

正态性检验

图形:

  • 直方图。
  • 箱线图。
  • Q-Q 图。

统计检验:

  • Shapiro-Wilk:小样本常用,原假设为总体服从正态分布。
  • K-S 检验:比较样本累积分布与理论分布。

Python:

stats.shapiro(x)
sm.qqplot(x, line="s")

考点

  • 正确写 $H_0,H_1$。
  • p 值与显著性水平的关系。
  • 第一类错误与第二类错误。
  • 两独立样本、配对样本、单样本检验的区别。
  • 正态性判断方法是 2023-2024 简答题原题型。

易错点

  • p 值不是 $H_0$ 为真的概率。
  • p 值越小,拒绝 $H_0$ 的证据越强,但不是第一类错误概率越小。
  • 样本量越大,越容易得到显著结果。
  • 配对样本看差值,不需要先做两个总体方差齐性检验。

---

p 值、显著性水平与两类错误的易混点

知识点关键词

p 值 显著性水平 第一类错误 弃真错误 第二类错误 反对原假设的证据

1. p 值越小是什么意思?

p 值表示:

$$ p=P(\text{在 }H_0\text{ 成立时,得到当前样本结果或更极端结果}) $$

所以 p 值越小,说明:

> 如果 $H_0$ 真的成立,现在这种样本结果越罕见,因此样本越不支持 $H_0$。

也可以说:

> p 值越小,反对原假设 $H_0$ 的证据越强。

---

2. p 值不是“原假设为真的概率”

不能把 p 值理解为:

$$ P(H_0\text{ 为真}) $$

例如 $p=0.0375$,不能说“原假设为真的概率是 3.75%”。

正确理解是:

> 在假设 $H_0$ 为真的前提下,得到当前或更极端样本结果的概率是 3.75%。

---

3. p 值越小,不等于弃真概率越大或越小

第一类错误,也叫弃真错误,是:

$$ H_0\text{ 为真,但拒绝 }H_0 $$

第一类错误概率由显著性水平 $\alpha$ 控制:

$$ P(\text{拒绝 }H_0\mid H_0\text{ 真})=\alpha $$

因此:

> p 值小,只说明拒绝 $H_0$ 的证据强;不表示犯弃真错误的概率由 p 值决定。

---

4. p 值和显著性水平的关系

判断规则:

$$ p<\alpha \Rightarrow \text{拒绝 }H_0 $$
$$ p\ge \alpha \Rightarrow \text{不拒绝 }H_0 $$

其中:

  • $p$ 值:由样本数据算出来;
  • $\alpha$:检验前人为设定,表示允许的第一类错误概率。

---

5. 第十九题对应易错点

试卷中类似判断:

> “在假设检验中得到 p 值越小,拒绝原假设时我们犯第一类/第二类错误的概率越小。”

这类说法通常是错的。

原因:

  • p 值越小,只表示样本结果越不支持 $H_0$;
  • 第一类错误概率由 $\alpha$ 控制;
  • 第二类错误概率 $\beta$ 与真实参数值、样本量、检验功效等有关,不由 p 值直接决定。

一句话总结

> p 值越小,反对 $H_0$ 的证据越强;但弃真错误概率由显著性水平 $\alpha$ 控制,不能把 p 值理解为犯错概率。

第 7 章 类别变量分析

一个类别变量:拟合优度检验

拟合优度检验用于判断一个类别变量的观察频数是否与理论频数或期望频数一致。

假设:

$$ H_0:\text{观察频数与期望频数无显著差异} $$
$$ H_1:\text{观察频数与期望频数有显著差异} $$

Pearson 卡方统计量:

$$ \chi^2=\sum \frac{(f_o-f_e)^2}{f_e} $$

自由度:

$$ df=k-1 $$

其中 $k$ 为类别数。

Python:

from scipy import stats
stats.chisquare(f_obs=observed, f_exp=expected)

多个总体比例相等检验

用于检验 $K$ 个总体中某类比例是否相同。

假设:

$$ H_0:p_1=p_2=\cdots=p_K $$
$$ H_1:\text{至少有一个比例不同} $$

若拒绝 $H_0$,只能说明比例不完全相同。若要继续判断哪些比例不同,可做多重比较,如 Marascuilo 方法。

两个类别变量:独立性检验

用于列联表,判断两个类别变量是否独立。

假设:

$$ H_0:\text{两个类别变量相互独立} $$
$$ H_1:\text{两个类别变量不独立} $$

期望频数:

$$ f_e=\frac{\text{行合计}\times \text{列合计}}{\text{总计}} $$

自由度:

$$ df=(r-1)(c-1) $$

Python:

tab = pd.crosstab(df["cyl"], df["am"])
chi2, p, dof, expected = stats.chi2_contingency(tab)

使用条件

卡方检验要求样本量足够大:

  • 若只有两个单元格,最小期望频数不应小于 5。
  • 单元格超过两个时,期望频数小于 5 的单元格不应超过总格子数的 20%。
  • 若不满足,可合并类别。

相关性度量

2x2 表:

$$ \phi=\sqrt{\frac{\chi^2}{n}} $$

Cramer's V:

$$ V=\sqrt{\frac{\chi^2}{n\cdot \min(r-1,c-1)}} $$

列联系数:

$$ C=\sqrt{\frac{\chi^2}{\chi^2+n}} $$

考点

  • 拟合优度检验与独立性检验都用卡方统计量,但问题不同。
  • 列联表期望频数公式。
  • 自由度:拟合优度 $k-1$,独立性检验 $(r-1)(c-1)$。
  • 25 年回忆版出现“气缸数 cyl 与变速箱 am 的关联性”。

易错点

  • 卡方检验通常是右尾检验。
  • 拒绝独立性假设只说明存在关联,不说明因果。
  • 卡方统计量越大,观察频数与期望频数差异越大。
  • 期望频数太小会使检验不可靠。

第 8 章 方差分析

> [!info] 相关笔记 > 总览:00 考试总览与复习路线 | 高频考点:99 往年卷高频考点 | 试卷:2023-2024数据分析A、数据分析期末/2024-2025数据分析A

1. ANOVA 是什么?

知识点关键词

方差分析 ANOVA 分类自变量 数值型因变量 多个均值比较 F 检验

方差分析,英文为 Analysis of Variance,简称 ANOVA

它的核心问题是:

> 一个或多个分类变量是否会对一个数值型变量的均值产生显著影响?

例如:

  • 不同培训方式是否影响组装时间?
  • 不同教学方法是否影响考试成绩?
  • 不同药物是否影响治疗效果?

虽然名字叫“方差分析”,但它真正要检验的是:

$$ \text{多个总体均值是否相等} $$

---

2. 什么时候用 ANOVA?

适用场景

场景是否适合 ANOVA
一个分类自变量,三个及以上组,比较数值型因变量均值适合,单因素 ANOVA
两个分类自变量,比较数值型因变量均值适合,双因素 ANOVA
一个分类自变量,只有两组可以用 ANOVA,也可以用两独立样本 t 检验
自变量是数值型,因变量也是数值型通常用相关或回归,不用 ANOVA
因变量是分类变量不适合 ANOVA

典型数据结构

分组变量数值型因变量
A 培训方式10.2
A 培训方式9.8
B 培训方式11.1
C 培训方式8.9

---

3. 单因素 ANOVA

3.1 检验对象

单因素 ANOVA 研究一个分类自变量对一个数值型因变量的影响。

设有 $k$ 个组,总样本量为 $n$,第 $i$ 组总体均值为 $\mu_i$。

3.2 假设

原假设:

$$ H_0:\mu_1=\mu_2=\cdots=\mu_k $$

备择假设:

$$ H_1:\text{至少有一组总体均值不同} $$

> [!warning] 注意 > ANOVA 拒绝 $H_0$ 后,只能说明“至少有一组均值不同”,不能说明“所有组均值都不同”。

---

4. ANOVA 的核心思想

ANOVA 把总变异拆成两部分:

$$ SST=SSA+SSE $$
符号名称含义
SST总平方和所有观测值围绕总均值的总变异
SSA组间平方和各组均值之间的差异,反映处理/因素影响
SSE组内平方和同一组内部个体差异,反映随机误差

直观理解:

  • 如果组间差异远大于组内差异,说明分组因素可能有显著影响。
  • 如果组间差异和组内差异差不多,说明组间差异可能只是随机波动。

因此构造统计量:

$$ F=\frac{MSA}{MSE} $$

其中:

$$ MSA=\frac{SSA}{k-1},\qquad MSE=\frac{SSE}{n-k} $$

---

4.1 SST、SSE、SSA、SSR 的区别

知识点关键词

SST SSE SSA SSR 总平方和 组间平方和 组内平方和 回归平方和 残差平方和

这些符号都和“平方和”有关,但在 ANOVA回归分析 中含义不完全一样。

符号中文名常见场景含义
SST总平方和ANOVA / 回归总变异
SSE误差平方和 / 残差平方和ANOVA / 回归未解释的误差变异
SSA组间平方和ANOVA分组因素解释的变异
SSR回归平方和回归分析回归模型解释的变异

一句话记忆:

> SST 是总波动;SSA/SSR 是被模型解释掉的波动;SSE 是没解释掉的误差波动。

---

一、ANOVA 中的平方和

在单因素方差分析中:

$$ SST=SSA+SSE $$
符号含义计算对象
SST所有样本值相对总均值的波动$x_{ij}-\bar{x}$
SSA各组均值相对总均值的波动$\bar{x}_i-\bar{x}$
SSE每个样本值相对本组均值的波动$x_{ij}-\bar{x}_i$

公式:

$$ SST=\sum_{i=1}^{k}\sum_{j=1}^{n_i}(x_{ij}-\bar{x})^2 $$
$$ SSA=\sum_{i=1}^{k}n_i(\bar{x}_i-\bar{x})^2 $$
$$ SSE=\sum_{i=1}^{k}\sum_{j=1}^{n_i}(x_{ij}-\bar{x}_i)^2 $$

---

例 1:ANOVA 中计算 SST、SSA、SSE

假设有两组数据:

组别数据组均值
A 组2, 43
B 组6, 87

总均值:

$$ \bar{x}=\frac{2+4+6+8}{4}=5 $$
1. SST:总平方和
$$ SST=(2-5)^2+(4-5)^2+(6-5)^2+(8-5)^2 $$
$$ =9+1+1+9=20 $$
2. SSA:组间平方和
$$ SSA=2(3-5)^2+2(7-5)^2 $$
$$ =2\times4+2\times4=16 $$
3. SSE:组内平方和

A 组内部波动:

$$ (2-3)^2+(4-3)^2=1+1=2 $$

B 组内部波动:

$$ (6-7)^2+(8-7)^2=1+1=2 $$

所以:

$$ SSE=2+2=4 $$

验证:

$$ SST=SSA+SSE=16+4=20 $$

---

二、回归分析中的平方和

在一元或多元线性回归中:

$$ SST=SSR+SSE $$
符号含义计算对象
SST因变量总变异$y_i-\bar{y}$
SSR回归平方和,模型解释的变异$\hat{y}_i-\bar{y}$
SSE残差平方和,模型没解释的变异$y_i-\hat{y}_i$

公式:

$$ SST=\sum_{i=1}^{n}(y_i-\bar{y})^2 $$
$$ SSR=\sum_{i=1}^{n}(\hat{y}_i-\bar{y})^2 $$
$$ SSE=\sum_{i=1}^{n}(y_i-\hat{y}_i)^2 $$

> [!warning] 注意 > 回归中的 SSE 是“残差平方和”;ANOVA 中的 SSE 是“组内平方和 / 误差平方和”。二者都是“未解释的误差变异”,但参照对象不同。

---

例 2:回归中计算 SST、SSR、SSE

假设有数据:

$x$$y$
12
23
35
46

用最小二乘法可得回归方程:

$$ \hat{y}=0.5+1.4x $$

预测值与残差:

$x$$y$$\hat{y}$残差 $e=y-\hat{y}$
121.90.1
233.3-0.3
354.70.3
466.1-0.1

因变量均值:

$$ \bar{y}=\frac{2+3+5+6}{4}=4 $$
1. SST:总平方和
$$ SST=(2-4)^2+(3-4)^2+(5-4)^2+(6-4)^2 $$
$$ =4+1+1+4=10 $$
2. SSR:回归平方和
$$ SSR=(1.9-4)^2+(3.3-4)^2+(4.7-4)^2+(6.1-4)^2 $$
$$ =4.41+0.49+0.49+4.41=9.8 $$
3. SSE:残差平方和
$$ SSE=(2-1.9)^2+(3-3.3)^2+(5-4.7)^2+(6-6.1)^2 $$
$$ =0.01+0.09+0.09+0.01=0.2 $$

验证:

$$ SST=SSR+SSE=9.8+0.2=10 $$

---

三、ANOVA 与回归中的符号对照

角度ANOVA回归分析
总变异SSTSST
模型解释的变异SSA,组间平方和SSR,回归平方和
未解释的变异SSE,组内平方和SSE,残差平方和
主要统计量$F=MSA/MSE$$R^2=SSR/SST$,整体 F 检验

---

四、最容易混淆的点

  • SSA 和 SSR 都是“解释掉的变异”
  • ANOVA 中由“分组因素”解释,叫 SSA。
  • 回归中由“回归模型”解释,叫 SSR。
  • SSE 都是“没解释掉的变异”
  • ANOVA 中是样本值与本组均值的差异。
  • 回归中是真实值与预测值的差异。
  • SST 永远是总变异
  • ANOVA 中围绕总均值 $\bar{x}$。
  • 回归中围绕因变量均值 $\bar{y}$。

5. 单因素 ANOVA 表

来源平方和 SS自由度 df均方 MSF
组间SSA$k-1$$MSA=\frac{SSA}{k-1}$$F=\frac{MSA}{MSE}$
组内SSE$n-k$$MSE=\frac{SSE}{n-k}$-
总计SST$n-1$--

自由度记忆

来源自由度
组间组数 - 1,即 $k-1$
组内总样本量 - 组数,即 $n-k$
总计总样本量 - 1,即 $n-1$

且满足:

$$ (n-1)=(k-1)+(n-k) $$

---

6. F 检验规则

在 $H_0$ 成立时:

$$ F=\frac{MSA}{MSE}\sim F(k-1,n-k) $$

ANOVA 的拒绝域在 右侧

$$ F>F_\alpha(k-1,n-k) $$

因为 $F$ 越大,说明组间差异相对于组内误差越大,越倾向于拒绝“均值全相等”。

判断步骤

  • 写假设:
$$ H_0:\mu_1=\mu_2=\cdots=\mu_k $$
$$ H_1:\text{至少有一组均值不同} $$
  • 根据 ANOVA 表算出 $F$。
  • 查临界值 $F_\alpha(k-1,n-k)$。
  • 比较:
  • 若 $F>F_\alpha$,拒绝 $H_0$。
  • 若 $F\le F_\alpha$,不拒绝 $H_0$。
  • 回到题目语境作结论。

---

7. ANOVA 的三个基本假定

假定含义常见检查方法
独立性各样本相互独立实验设计、随机抽样
正态性各组总体近似正态Q-Q 图、Shapiro-Wilk 检验
方差齐性各组总体方差相等箱线图、Levene 检验、Bartlett 检验

> [!tip] 考试表述 > 单因素方差分析通常要求:各总体服从正态分布、方差相等、样本相互独立。

---

8. ANOVA 与两独立样本 t 检验的关系

相同点

  • 都用于比较总体均值。
  • 因变量都是数值型变量。
  • 都要求独立性、正态性、方差齐性。

不同点

项目两独立样本 t 检验单因素 ANOVA
组数只能比较两组可比较三组及以上
检验统计量$t$$F$
原假设$\mu_1=\mu_2$$\mu_1=\mu_2=\cdots=\mu_k$
拒绝后结论两组均值不同至少一组均值不同
后续分析一般不需要需要多重比较判断哪些组不同

当只有两组时:

$$ F=t^2 $$

因此,两组情况下单因素 ANOVA 与两独立样本 t 检验等价。

---

9. 多重比较

如果 ANOVA 拒绝原假设,只能说明:

$$ \text{至少有一组均值不同} $$

但它不能告诉我们是哪几组不同。

此时需要做多重比较,例如:

  • Tukey HSD
  • Bonferroni 校正
  • LSD 方法

考试中常见表述:

> 若 ANOVA 显著,需要进一步做多重比较,判断具体哪些组之间存在显著差异。

---

10. 双因素 ANOVA

双因素 ANOVA 用于研究两个分类自变量对一个数值型因变量的影响。

模型形式

若两个因素分别为 A 和 B,则模型可写为:

$$ y_{ijk}=\mu+\alpha_i+\beta_j+\gamma_{ij}+\varepsilon_{ijk} $$

其中:

符号含义
$\mu$总体均值
$\alpha_i$因素 A 的主效应
$\beta_j$因素 B 的主效应
$\gamma_{ij}$A 与 B 的交互效应
$\varepsilon_{ijk}$随机误差

检验内容

双因素 ANOVA 通常检验:

  • 因素 A 是否显著;
  • 因素 B 是否显著;
  • A 与 B 是否存在交互效应。

---

11. Python 实现

单因素 ANOVA

import statsmodels.api as sm
import statsmodels.formula.api as smf

model = smf.ols("y ~ C(group)", data=df).fit()
sm.stats.anova_lm(model, typ=2)

双因素 ANOVA,含交互项

model = smf.ols("y ~ C(A) * C(B)", data=df).fit()
sm.stats.anova_lm(model, typ=2)

方差齐性检验

from scipy import stats

stats.levene(group1, group2, group3)

正态性检验

stats.shapiro(residuals)

---

---

试卷计算题模板:补全 ANOVA 表并做 F 检验

> [!example] 对应真题 > 数据分析期末/2023-2024数据分析A 第 28 题:比较 A、B、C 三种培训方式对产品组装时间是否有显著影响。

知识点关键词

ANOVA 表补全 组间自由度 组内自由度 总自由度 MS=SS/df F=MSA/MSE 右尾 F 检验

---

1. 题型识别

看到题目中出现:

  • 三组或多组处理方式;
  • 因变量是数值型变量;
  • 问“是否有显著影响”;
  • 给出方差分析表;

通常就是 单因素方差分析计算题

例如:

> A、B、C 三种培训方式是否对产品组装时间有显著影响?

这里:

  • 分类自变量:培训方式;
  • 水平数 / 组数:$k=3$;
  • 数值型因变量:组装时间;
  • 总样本量:$n=20$。

---

2. ANOVA 表要记住的结构

来源SSdfMSF
组间SSA$k-1$$MSA=SSA/(k-1)$$F=MSA/MSE$
组内SSE$n-k$$MSE=SSE/(n-k)$-
总计SST$n-1$--

核心关系:

$ SST=SSA+SSE $

$ MS=\frac{SS}{df} $

$ F=\frac{MSA}{MSE} $

---

3. 自由度先算

如果有 $k$ 组,总样本量为 $n$,则:

来源自由度
组间$k-1$
组内$n-k$
总计$n-1$

对第 28 题:

$k=3,\qquad n=20$

所以:

$df_{组间}=k-1=3-1=2$

$df_{组内}=n-k=20-3=17$

$df_{总计}=n-1=20-1=19$

---

4. 再补 SS、MS、F

题目给出:

来源SSdfMSF
组间(a)(b)3.8(c)
组内37.4(d)(e)-
总计(f)(g)--
组间平方和 SSA

因为:

$MSA=\frac{SSA}{df_{组间}}$

所以:

$SSA=MSA\times df_{组间}=3.8\times2=7.6$

即:

$a=7.6$

组内均方 MSE

$MSE=\frac{SSE}{df_{组内}}=\frac{37.4}{17}=2.2$

即:

$e=2.2$

F 统计量

$F=\frac{MSA}{MSE}=\frac{3.8}{2.2}\approx1.73$

即:

$c\approx1.73$

总平方和 SST

$SST=SSA+SSE=7.6+37.4=45.0$

即:

$f=45.0$

---

5. 完整表格

来源SSdfMSF
组间7.623.81.73
组内37.4172.2-
总计45.019--

因此:

$$ a=7.6,\quad b=2,\quad c=1.73,\quad d=17,\quad e=2.2,\quad f=45.0,\quad g=19 $$

---

6. 显著性检验怎么写

第一步:写假设

原假设:

$$ H_0:\mu_A=\mu_B=\mu_C $$

表示三种培训方式下的平均组装时间没有显著差异。

备择假设:

$$ H_1:\text{至少有一组均值不同} $$

---

第二步:确定临界值

本题自由度是:

$$ (2,17) $$

所以应选题目给出的:

$$ F_{0.05}(2,17)=3.59 $$

---

第三步:比较 F 值

计算得到:

$$ F=1.73 $$

临界值为:

$$ F_{0.05}(2,17)=3.59 $$

因为:

$$ 1.73<3.59 $$

所以统计量没有落入拒绝域。

---

第四步:写结论

不拒绝 $H_0$。

结论:

> 在 0.05 显著性水平下,没有充分证据说明不同培训方式对产品组装时间有显著影响。

---

7. 这类题的答题模板

遇到补全 ANOVA 表的计算题,可以按下面顺序写:

  • 由题意确定组数 $k$ 和总样本量 $n$。
  • 计算自由度:
$$ df_A=k-1,\qquad df_E=n-k,\qquad df_T=n-1 $$
$$ MS=\frac{SS}{df} $$

补全 SS 或 MS。

$$ SST=SSA+SSE $$

补全总平方和。

$$ F=\frac{MSA}{MSE} $$

计算 F 值。

  • 写假设:
$$ H_0:\mu_1=\mu_2=\cdots=\mu_k $$
$$ H_1:\text{至少有一组均值不同} $$
  • 比较:
$$ F \quad \text{和} \quad F_\alpha(k-1,n-k) $$
  • 回到题目语境写结论。

---

8. 易错点

  • 不要把组间自由度和组内自由度写反。
  • 总自由度一定是 $n-1$。
  • ANOVA 的 F 检验是右尾检验。
  • 拒绝 $H_0$ 只能说明“至少有一组均值不同”。
  • 不拒绝 $H_0$ 要说“没有充分证据说明有显著差异”,不要说“三组一定完全相同”。

12. 典型计算题模板

题型:补全 ANOVA 表

已知 $k$ 组,总样本量 $n$。

  • 自由度:
$$ df_A=k-1,\qquad df_E=n-k,\qquad df_T=n-1 $$
  • 平方和关系:
$$ SST=SSA+SSE $$
  • 均方:
$$ MSA=\frac{SSA}{df_A},\qquad MSE=\frac{SSE}{df_E} $$
  • F 值:
$$ F=\frac{MSA}{MSE} $$
  • 检验:
$$ F>F_\alpha(df_A,df_E) \Rightarrow 拒绝 H_0 $$

---

13. 例题模板

例题

某公司比较 A、B、C 三种培训方式对产品组装时间是否有显著影响。共有 20 名员工,ANOVA 表如下:

来源SSdfMSF
组间(a)(b)3.8(c)
组内37.4(d)(e)-
总计(f)(g)--

知识点关键词

单因素 ANOVA 自由度 均方 F 检验

解答

组数 $k=3$,总样本量 $n=20$。

$$ b=k-1=2 $$
$$ d=n-k=17 $$
$$ g=n-1=19 $$
$$ a=MSA\times df_A=3.8\times2=7.6 $$
$$ e=MSE=\frac{37.4}{17}=2.2 $$
$$ c=F=\frac{3.8}{2.2}\approx1.73 $$
$$ f=SST=SSA+SSE=7.6+37.4=45.0 $$

完整表为:

来源SSdfMSF
组间7.623.81.73
组内37.4172.2-
总计45.019--

若给定 $F_{0.05}(2,17)=3.59$,因为

$$ 1.73<3.59 $$

所以不拒绝 $H_0$。

结论:在 0.05 显著性水平下,没有充分证据说明不同培训方式对组装时间有显著影响。

---

14. 高频选择判断考点

考点 1:ANOVA 检验什么?

检验多个总体均值是否相等。

错误说法:ANOVA 检验多个总体方差是否相等。

考点 2:F 检验拒绝域在哪里?

右侧。

因为 F 统计量越大,说明组间差异越明显。

考点 3:F 统计量能否为负?

不能。

因为 $F=MSA/MSE$,均方都是平方和除以自由度,非负。

考点 4:拒绝原假设后能得出什么?

只能得出“至少有一组均值不同”。

不能说:

  • 所有组均值都不同;
  • 任意两组均值都不同;
  • 哪两组不同。

考点 5:样本容量是否必须相等?

不一定。

样本容量相等会使计算和分析更方便,但不是 ANOVA 的必要条件。

---

15. 易错清单

  • [ ] 把 ANOVA 误认为检验方差是否相等。
  • [ ] 忘记 ANOVA 的因变量必须是数值型。
  • [ ] 把分类自变量和数值型因变量写反。
  • [ ] 拒绝 $H_0$ 后,说成“所有组都不同”。
  • [ ] F 检验写成双侧或左侧。
  • [ ] 组间自由度写成 $n-k$,组内自由度写成 $k-1$。
  • [ ] 忘记 $SST=SSA+SSE$。
  • [ ] 忘记 $F=MSA/MSE$。
  • [ ] 忘记方差齐性和正态性假定。

---

16. 一句话总结

> ANOVA 用 F 检验比较“组间差异”是否显著大于“组内随机误差”,从而判断多个总体均值是否存在显著差异。

第 9 章 一元线性回归

变量关系

函数关系:

  • 一个 $x$ 唯一确定一个 $y$。
  • 点落在确定曲线上。

相关关系:

  • 一个 $x$ 对应 $y$ 的一个分布。
  • 点分布在某条趋势线附近。

相关系数

Pearson 相关系数:

$$ r=\frac{\sum (x_i-\bar{x})(y_i-\bar{y})} {\sqrt{\sum (x_i-\bar{x})^2\sum (y_i-\bar{y})^2}} $$

性质:

  • $-1\le r\le 1$。
  • $r>0$ 正相关,$r<0$ 负相关。
  • $|r|$ 越接近 1,线性关系越强。
  • $r=0$ 只表示无线性关系,不代表没有任何关系。
  • 相关不等于因果。

相关系数检验:

$$ H_0:\rho=0,\quad H_1:\rho\ne0 $$
$$ t=\frac{r\sqrt{n-2}}{\sqrt{1-r^2}}\sim t(n-2) $$

一元线性回归模型

总体模型:

$$ y=\beta_0+\beta_1x+\epsilon $$

估计方程:

$$ \hat{y}=\hat{\beta}_0+\hat{\beta}_1x $$

斜率解释:

  • $x$ 每增加 1 个单位,$y$ 平均改变 $\hat{\beta}_1$ 个单位。
  • 若题目单位是“千件”,解释必须带单位。

最小二乘估计:

$$ \hat{\beta}_1=\frac{\sum (x_i-\bar{x})(y_i-\bar{y})}{\sum (x_i-\bar{x})^2} $$
$$ \hat{\beta}_0=\bar{y}-\hat{\beta}_1\bar{x} $$

拟合优度

平方和分解:

$$ SST=SSR+SSE $$

判定系数:

$$ R^2=\frac{SSR}{SST} $$

意义:因变量总变异中被回归方程解释的比例。

估计标准误:

$$ s_e=\sqrt{\frac{SSE}{n-2}} $$

反映观测值围绕回归直线的离散程度,越小通常拟合越好。

显著性检验

F 检验:

$$ H_0:\beta_1=0 $$
$$ F=\frac{MSR}{MSE}\sim F(1,n-2) $$

t 检验:

$$ t=\frac{\hat{\beta}_1}{s_{\hat{\beta}_1}}\sim t(n-2) $$

一元线性回归中,F 检验和斜率 t 检验等价,$F=t^2$。

置信区间与预测区间

置信区间:

  • 估计给定 $x_0$ 下平均响应 $E(y|x_0)$。

预测区间:

  • 估计给定 $x_0$ 下一个个别新观测值。
  • 比置信区间更宽。

模型诊断

残差:

$$ e_i=y_i-\hat{y}_i $$

诊断内容:

  • 线性:残差与拟合值图不应有系统形状。
  • 方差齐性:残差散布宽度应基本一致。
  • 正态性:残差 Q-Q 图接近直线。
  • 异常点:标准化残差过大。

Python 实现

sns.scatterplot(data=df, x="x", y="y")
sns.regplot(data=df, x="x", y="y")

model = smf.ols("y ~ x", data=df).fit()
print(model.summary())

考点

  • 2023-2024 计算题:相关系数、一元回归方程、斜率解释。
  • 2024-2025 计算题:一元回归方程和误差方差估计。
  • 25 年回忆版:散点图、相关、简单回归、log-log 回归、模型诊断。

易错点

  • 相关系数显著性受样本量影响。
  • $R^2$ 表示拟合程度,不表示因果。
  • 斜率解释要用“平均”二字。
  • 预测区间通常比置信区间宽。

第 10 章 多元线性回归

多元线性回归模型

总体模型:

$$ y=\beta_0+\beta_1x_1+\beta_2x_2+\cdots+\beta_kx_k+\epsilon $$

估计方程:

$$ \hat{y}=\hat{\beta}_0+\hat{\beta}_1x_1+\hat{\beta}_2x_2+\cdots+\hat{\beta}_kx_k $$

偏回归系数解释:

  • 在其他自变量保持不变时,$x_i$ 每增加 1 个单位,$y$ 平均改变 $\hat{\beta}_i$ 个单位。

基本假定:

  • 误差项均值为 0。
  • 误差项方差齐性。
  • 误差项相互独立。
  • 误差项近似正态。

拟合优度

多重判定系数:

$$ R^2=\frac{SSR}{SST} $$

调整 $R^2$:

$$ R_a^2=1-(1-R^2)\frac{n-1}{n-k-1} $$

调整 $R^2$ 会惩罚无意义自变量,适合比较自变量个数不同的模型。

估计标准误:

$$ s_e=\sqrt{\frac{SSE}{n-k-1}} $$

显著性检验

整体 F 检验:

$$ H_0:\beta_1=\beta_2=\cdots=\beta_k=0 $$
$$ H_1:\text{至少有一个 }\beta_i\ne0 $$
$$ F=\frac{SSR/k}{SSE/(n-k-1)}\sim F(k,n-k-1) $$

单个回归系数 t 检验:

$$ H_0:\beta_i=0 $$
$$ t_i=\frac{\hat{\beta}_i}{s_{\hat{\beta}_i}}\sim t(n-k-1) $$

多重共线性

含义:两个或多个自变量之间高度相关。

后果:

  • 回归系数不稳定。
  • 标准误变大,t 检验可能不显著。
  • 系数符号可能与理论预期相反。
  • 变量解释困难。
  • 可能出现整体 F 显著但多个 t 不显著。

识别:

  • 自变量相关矩阵。
  • 容忍度 $1-R_i^2$,小于 0.1 要警惕。
  • VIF:
$$ VIF_i=\frac{1}{1-R_i^2} $$

一般 VIF 大于 10 认为严重共线性。

处理:

  • 删除高度相关且理论意义较弱的变量。
  • 合并变量或构造综合指标。
  • 增加样本量。
  • 逐步回归、AIC 选择。
  • 必要时使用主成分或岭回归。

模型选择与比较

标准化回归系数:

  • 将所有变量标准化后回归。
  • 绝对值越大,相对重要性越强。

嵌套模型比较:

完全模型比简化模型多一些变量,检验额外变量是否提供信息。

$$ F=\frac{(SSE_R-SSE_F)/(k-g)}{SSE_F/(n-k-1)} $$

AIC:

  • 可比较非嵌套模型。
  • AIC 越小,模型在拟合与简洁之间越优。

哑变量回归

类别自变量进入回归需转换为哑变量。

若类别变量有 $m$ 个水平,通常引入 $m-1$ 个哑变量,避免虚拟变量陷阱。

例:

model = smf.ols("prestige ~ education + income + C(type)", data=df).fit()

解释:

  • 被省略的类别是基准组。
  • C(type)[T.prof] 的系数表示在其他变量相同下,prof 组与基准组的平均差异。

Python 实现

model = smf.ols("y ~ x1 + x2 + x3 + x4", data=df).fit()
print(model.summary())

VIF:

from statsmodels.stats.outliers_influence import variance_inflation_factor

X = model.model.exog
names = model.model.exog_names
pd.Series([variance_inflation_factor(X, i) for i in range(X.shape[1])], index=names)

考点

  • 2023-2024 简答题:高度多重共线性的后果、检验和补救。
  • 2024-2025 客观题:某解释变量对其余解释变量的 $R^2$ 接近 1,说明多重共线性。
  • 25 年回忆版:多元回归、模型诊断、哑变量回归。

易错点

  • 多元回归系数是“控制其他变量不变”的偏效应。
  • 整体 F 显著不代表每个自变量都显著。
  • 所有 t 不显著时,F 检验不一定不显著,尤其在共线性严重时。
  • 类别变量有 $m$ 类只放 $m-1$ 个哑变量。

---

t 检验与整体 F 检验的自由度

知识点关键词

多元线性回归 二元线性回归 t 检验自由度 F 检验自由度 残差自由度

设多元线性回归模型为:

$$ y=\beta_0+\beta_1x_1+\beta_2x_2+\cdots+\beta_kx_k+\varepsilon $$

其中:

  • $n$:样本量;
  • $k$:自变量个数;
  • $k+1$:需要估计的参数个数,包括截距项 $\beta_0$。

因此残差自由度为:

$$ n-(k+1)=n-k-1 $$

---

1. 单个回归系数的 t 检验

检验某一个回归系数是否显著,例如:

$$ H_0:\beta_i=0 $$

使用统计量:

$$ t_i=\frac{\hat{\beta}_i}{s_{\hat{\beta}_i}} $$

在原假设成立时:

$$ t_i\sim t(n-k-1) $$

所以:

> 多元线性回归中,单个系数 t 检验的自由度是残差自由度 $n-k-1$。

---

2. 整体 F 检验

整体 F 检验用于检验所有斜率系数是否同时为 0:

$$ H_0:\beta_1=\beta_2=\cdots=\beta_k=0 $$
$$ H_1:\text{至少有一个 }\beta_i\ne0 $$

整体 F 检验统计量为:

$$ F=\frac{SSR/k}{SSE/(n-k-1)} $$

其中:

  • 分子自由度:$k$,因为整体检验涉及 $k$ 个自变量;
  • 分母自由度:$n-k-1$,即残差自由度。

所以:

$$ F\sim F(k,n-k-1) $$

---

3. 二元线性回归的特殊情况

二元线性回归模型为:

$$ Y=\beta_0+\beta_1X_1+\beta_2X_2+\varepsilon $$

这里有两个自变量:

$$ k=2 $$

需要估计的参数有 3 个:

$$ \beta_0,\beta_1,\beta_2 $$

所以残差自由度为:

$$ n-3 $$
单个系数 t 检验

例如检验:

$$ H_0:\beta_1=0 $$

自由度为:

$$ n-3 $$
整体 F 检验

整体检验为:

$$ H_0:\beta_1=\beta_2=0 $$
$$ H_1:\beta_1,\beta_2 \text{ 至少有一个不为 }0 $$

F 检验自由度为:

$$ (2,n-3) $$

---

4. 例题:2023-2024 A 卷第 14 题

题目问:二元线性回归中,样本量为 $n$,关于 t 检验与 F 检验自由度哪些正确?

二元线性回归有:

  • 2 个自变量;
  • 3 个待估参数:$\beta_0,\beta_1,\beta_2$;
  • 残差自由度:$n-3$。

因此:

检验检验内容自由度
t 检验单个回归系数$n-3$
整体 F 检验两个斜率系数整体是否全为 0$(2,n-3)$

所以正确选项是:

$$ \boxed{A,E} $$

---

5. 快速记忆

模型自变量个数参数个数t 检验自由度整体 F 检验自由度
一元线性回归12$n-2$$(1,n-2)$
二元线性回归23$n-3$$(2,n-3)$
$k$ 元线性回归$k$$k+1$$n-k-1$$(k,n-k-1)$

一句话:

> t 检验看单个系数,用残差自由度;整体 F 检验看所有斜率系数,分子自由度是自变量个数,分母自由度是残差自由度。

第 11 章 时间序列分析

时间序列及其成分

时间序列是按时间顺序记录的一组数据。

记为:

$$ Y_t,\quad t=1,2,\ldots,n $$

四类成分:

  • 趋势 T:长期持续上升或下降。
  • 季节变动 S:一年内重复出现的周期性波动。
  • 循环波动 C:非固定长度的周期性变动。
  • 不规则波动 I:随机波动。

分解模型:

加法模型:

$$ Y_t=T_t+S_t+C_t+I_t $$

乘法模型:

$$ Y_t=T_t\times S_t\times C_t\times I_t $$

若只考虑趋势、季节和随机波动,可写为:

$$ Y_t=T_t+S_t+e_t $$

或:

$$ Y_t=T_t\times S_t\times e_t $$

预测误差

预测误差:

$$ e_t=Y_t-F_t $$

常用评价:

  • ME:平均误差。
  • MAD:平均绝对误差。
  • MSE:均方误差。
  • MAPE:平均绝对百分比误差。

课程中强调:

$$ MSE=\frac{1}{n}\sum_{i=1}^n (Y_i-F_i)^2 $$

指数平滑

简单指数平滑:

  • 适合无趋势、无季节的平稳序列。
  • 参数 $\alpha\in[0,1]$。
  • 常用于短期预测。

Holt 指数平滑:

  • 适合有趋势但无季节的序列。
  • 包含水平和趋势两个平滑部分。

Winter 指数平滑:

  • 适合同时有趋势和季节成分的序列。
  • 至少需要 4 个季节周期以上的季度或月度数据。
  • 可分加法和乘法形式。

Python:

from statsmodels.tsa.holtwinters import SimpleExpSmoothing, Holt, ExponentialSmoothing

fit1 = SimpleExpSmoothing(ts).fit()
fit2 = Holt(ts).fit()
fit3 = ExponentialSmoothing(ts, trend="add", seasonal="mul", seasonal_periods=12).fit()

趋势外推预测

线性趋势:

$$ Y_t=b_0+b_1t $$

指数趋势:

$$ Y_t=b_0e^{b_1t} $$

可取对数线性化:

$$ \ln Y_t=\ln b_0+b_1t $$

多项式趋势:

$$ Y_t=b_0+b_1t+b_2t^2+\cdots+b_kt^k $$

适合有拐点的序列。

分解预测

步骤:

  • 计算移动平均并中心化。
  • 计算季节比率或季节指数。
  • 去除季节成分,得到季节调整序列。
  • 对调整后的序列建趋势模型。
  • 预测趋势值。
  • 加回或乘回季节指数,得到最终预测。

Python:

from statsmodels.tsa.seasonal import seasonal_decompose
decomp = seasonal_decompose(ts, model="multiplicative", period=12)
decomp.plot()

移动平均平滑

移动平均是选择固定长度的窗口逐期求平均。

df["m3"] = df["CPI"].rolling(window=3, center=True).mean()
df["m5"] = df["CPI"].rolling(window=5, center=True).mean()

窗口越大,平滑越强,但越容易滞后。

考点

  • 2024-2025 简答题:时间序列分解常用模型。
  • 根据序列特征选择预测方法。
  • 简单指数平滑、Holt、Winter 的适用场景。
  • 加法模型与乘法模型区别。
  • 移动平均中心化。

易错点

  • 简单指数平滑不适合明显趋势序列。
  • Winter 模型需要趋势和季节数据,且至少有多个季节周期。
  • 乘法模型适合季节波动幅度随水平变化的序列。
  • MSE 越小,预测误差通常越小。