从平方和说起:一步步推明白卡方分布的概率密度函数
很多学统计、做数据分析的朋友第一次碰到卡方分布,心里多少都有点嘀咕——教材里直接甩出一个带伽马函数的密度公式,告诉你这就是卡方分布,然后用它做拟合优度检验、列联表独立性检验。但那个公式到底怎么来的,为什么自由度是几就是几,很少有人真正推过一遍。
这篇文章就是干这件事的:从最基础的标准正态分布出发,手把手把卡方分布的概率密度函数推出来。我会避开那些“显然可得”的跳跃,尽量把每一步的逻辑讲透,你只需要会换元积分、知道雅可比行列式是什么东西,就能跟着走完全程。即便你一时半会儿跟不上某些细节,我也建议你硬着头皮看完——因为卡方分布这条推导线,几乎串起了概率统计里最重要的几个工具:变量变换、卷积、矩母函数、伽马分布。把这一个分布弄明白,后面学t分布、F分布会轻松非常多。
先交代一下我们要推导的目标。设(Z_1, Z_2, \dots, Z_n)是相互独立且都服从标准正态分布(N(0,1))的随机变量,定义:
[ \chi^2_n = Z_1^2 + Z_2^2 + \dots + Z_n^2 ]
这个随机变量服从自由度(n)的卡方分布,记作(\chi^2_n \sim \chi^2(n))。我们的任务,是把它的概率密度函数:
[ f(x) = \frac{1}{2^{n/2}\Gamma(n/2)} x^{n/2 - 1} e^{-x/2}, \quad x > 0 ]
从头推出来,并搞清楚每一部分为什么长这样。
1. 先把工具备齐:推导要用的三个数学基础
1.1 标准正态分布和它的平方
标准正态分布(Z \sim N(0,1))的密度函数是:
[ f_Z(z) = \frac{1}{\sqrt{2\pi}} e^{-z^2/2}, \quad -\infty < z < \infty ]
如果你对正态分布已经很熟,这里只需要记住一件事:标准正态分布的密度函数里,指数部分是(-z^2/2)。就是这玩意儿,让正态分布和平方和产生了千丝万缕的联系。你可以把(e^{-z^2/2})想象成一个天然的“权重因子”,它决定了每个(z)出现的概率密度,而平方和本身就是多个这样的指数项相乘之后的结果。
后面你会看到,卡方分布密度函数里那个(e^{-x/2}),本质上就是(n)个(e^{-z_i^2/2})乘在一起后换元留下的东西。
1.2 随机变量变换的通用公式:单调函数的变量替换
假设(X)是一个连续型随机变量,密度函数是(f_X(x)),我们想求(Y = g(X))的密度函数。如果(g)是严格单调函数,有反函数(x = g^{-1}(y)),那么:
[ f_Y(y) = f_X(g^{-1}(y)) \cdot \left| \frac{d}{dy} g^{-1}(y) \right| ]
直观理解就是:(Y)落在([y, y+dy])的概率,等于(X)落在对应区间([x, x+dx])的概率,两者概率相等,所以密度函数要乘上一个“伸缩因子”,也就是导数绝对值的倒数。这个公式是后面一切推导的基础工具。
对于二维情况,公式变成:
[ f_{Y_1,Y_2}(y_1,y_2) = f_{X_1,X_2}(x_1,x_2) \cdot |J| ]
其中(|J|)是雅可比行列式的绝对值:
[ J = \begin{vmatrix} \frac{\partial x_1}{\partial y_1} & \frac{\partial x_1}{\partial y_2} \ \frac{\partial x_2}{\partial y_1} & \frac{\partial x_2}{\partial y_2} \end{vmatrix} ]
这个雅可比行列式,说白了就是坐标变换时“面积元”的缩放倍数。生活在二维平面上,从直角坐标((x_1,x_2))换到另一个坐标系((y_1,y_2)),一小块面积(dx_1dx_2)会变成(|J|dy_1dy_2),密度函数就得相应调整。
1.3 两个独立随机变量之和:卷积公式
如果(U)和(V)是相互独立的连续型随机变量,密度函数分别是(f_U(u))和(f_V(v)),那么(W = U+V)的密度函数是:
[ f_W(w) = \int_{-\infty}^{\infty} f_U(u) f_V(w-u), du ]
这就是卷积公式。它背后的逻辑也很朴素:要让(U+V = w),可以是(U = u)且(V = w-u),把所有可能的(u)都积分起来就行。因为独立,联合密度直接相乘。
卷积公式用来处理两个分布相加的场景。但是当随机变量超过两个、或者我们已经知道一个分布的形状时,逐次卷积会变得非常笨重。这时候有一个更好用的工具——矩母函数。
2. 从最简单的情况入手:自由度1的推导
2.1 一个标准正态变量的平方
先从最简单的情况开始:(n=1),也就是(Y = Z^2),其中(Z \sim N(0,1))。
这里要用变量变换公式。设(Y = g(Z) = Z^2)。这个函数在((-\infty, 0))和((0, \infty))两个区间上分别是单调的,所以不能直接套单调函数的公式,得换成分布函数法。
先求(Y)的分布函数:
[ F_Y(y) = P(Y \le y) = P(Z^2 \le y) = P(-\sqrt{y} \le Z \le \sqrt{y}), \quad y > 0 ]
因为(Z)的密度函数是对称的,所以:
[ F_Y(y) = \int_{-\sqrt{y}}^{\sqrt{y}} \frac{1}{\sqrt{2\pi}} e^{-z^2/2}, dz = 2\int_0^{\sqrt{y}} \frac{1}{\sqrt{2\pi}} e^{-z^2/2}, dz ]
对(y)求导,得到密度函数:
[ f_Y(y) = \frac{d}{dy}F_Y(y) = 2 \cdot \frac{1}{\sqrt{2\pi}} e^{-y/2} \cdot \frac{d}{dy}(\sqrt{y}) ]
这里用到了变上限积分的求导规则,以及链式法则:
[ \frac{d}{dy}(\sqrt{y}) = \frac{1}{2\sqrt{y}} ]
所以:
[ f_Y(y) = 2 \cdot \frac{1}{\sqrt{2\pi}} e^{-y/2} \cdot \frac{1}{2\sqrt{y}} = \frac{1}{\sqrt{2\pi}} y^{-1/2} e^{-y/2}, \quad y > 0 ]
这就是自由度1的卡方分布密度函数。写成更规范的形式:
[ f_{\chi^2_1}(x) = \frac{1}{\sqrt{2\pi}} x^{-1/2} e^{-x/2}, \quad x > 0 ]
注意一个细节:当(y>0)时,(Z^2 \le y)对应的是(Z)在([-\sqrt{y}, \sqrt{y}])区间内,因为(Z^2)是关于0对称的。这也是这个推导里最容易出错的地方——忘记乘2,或者忘记对(\sqrt{y})求导。我第一次推的时候就在这里翻过车,直接抄公式没算中间步骤,结果怎么也对不上那个(\frac{1}{2\sqrt{y}})。
2.2 发现规律:和伽马函数的关系
看到(f_{\chi^2_1}(x) = \frac{1}{\sqrt{2\pi}} x^{-1/2} e^{-x/2})这个形式,你可能已经隐约感觉到它和伽马分布有关。伽马分布的密度函数是:
[ f(x; \alpha, \beta) = \frac{\beta^\alpha}{\Gamma(\alpha)} x^{\alpha-1} e^{-\beta x}, \quad x>0 ]
对比一下,(\alpha = 1/2, \beta = 1/2)时:
[ f(x; 1/2, 1/2) = \frac{(1/2)^{1/2}}{\Gamma(1/2)} x^{-1/2} e^{-x/2} ]
而(\Gamma(1/2) = \sqrt{\pi}),所以:
[ \frac{(1/2)^{1/2}}{\sqrt{\pi}} = \frac{1}{\sqrt{2\pi}} ]
完美对上。也就是说,(\chi^2_1)分布就是(\text{Gamma}(1/2, 1/2))分布。
这个观察特别重要。它告诉我们卡方分布不是凭空蹦出来的新东西,而是伽马分布族的一个特例。后面我们会用这个关系推导一般情况,也会解释为什么参数恰好各是(1/2)。
3. 推导自由度2:极坐标变换的经典操作
3.1 问题设定:两个标准正态变量的平方和
现在考虑(n=2)的情况:(Y = Z_1^2 + Z_2^2),其中(Z_1, Z_2)独立且都服从(N(0,1))。
最直接的方法是先求联合分布,再做变量变换。设:
[ U = Z_1^2 + Z_2^2, \quad V = \text{某个与}U\text{独立的量} ]
但从直角坐标直接处理平方和并不方便。这里有一个经典技巧:把((Z_1, Z_2))看成平面上的一个点,转换成极坐标:
[ Z_1 = r\cos\theta, \quad Z_2 = r\sin\theta ]
那么(Z_1^2+Z_2^2 = r^2),问题变成了求极径(r)的分布。
3.2 极坐标变换与雅可比行列式
((Z_1, Z_2))的联合密度函数是:
[ f_{Z_1,Z_2}(z_1,z_2) = \frac{1}{2\pi} e^{-(z_1^2+z_2^2)/2} ]
因为两个变量独立且都服从标准正态分布,联合密度就是各自密度的乘积。
坐标变换的雅可比行列式:
[ J = \begin{vmatrix} \frac{\partial z_1}{\partial r} & \frac{\partial z_1}{\partial \theta} \ \frac{\partial z_2}{\partial r} & \frac{\partial z_2}{\partial \theta} \end{vmatrix} = \begin{vmatrix} \cos\theta & -r\sin\theta \ \sin\theta & r\cos\theta \end{vmatrix} = r\cos^2\theta + r\sin^2\theta = r ]
所以(dz_1dz_2 = r, dr, d\theta)。这个(r)就是面积元从直角坐标到极坐标的缩放倍数——你在高数里学极坐标积分时的那个“多出来的(r)”,和这里是同一个东西。
于是((r, \theta))的联合密度函数为:
[ f_{r,\theta}(r,\theta) = \frac{1}{2\pi} e^{-r^2/2} \cdot r, \quad r>0, ; 0\le\theta<2\pi ]
把(\theta)积分掉:
[ f_r(r) = \int_0^{2\pi} \frac{1}{2\pi} r e^{-r^2/2}, d\theta = r e^{-r^2/2}, \quad r>0 ]
这是瑞利分布的密度函数。现在令(Y = r^2),再次使用变量变换公式,反函数(r = \sqrt{y}),导数(\frac{dr}{dy} = \frac{1}{2\sqrt{y}}):
[ f_Y(y) = f_r(\sqrt{y}) \cdot \frac{1}{2\sqrt{y}} = \sqrt{y} e^{-y/2} \cdot \frac{1}{2\sqrt{y}} = \frac{1}{2} e^{-y/2}, \quad y>0 ]
这就是自由度2的卡方分布密度函数——它其实就是参数(\lambda = 1/2)的指数分布。这个结论很多人第一次看到会觉得惊讶:两个标准正态变量的平方和,居然服从指数分布。但从几何上看非常自然:极径的平方就是圆盘面积的尺度,而二维标准正态分布在极坐标下对角度积分后,剩下的密度自然就是指数衰减的形式。
3.3 为什么自由度2恰好得到指数分布
从伽马分布的角度看,(\chi^2_2 \sim \text{Gamma}(1, 1/2))。因为(\Gamma(1) = 1),密度函数化简为:
[ f(x) = \frac{(1/2)^1}{\Gamma(1)} x^{0} e^{-x/2} = \frac{1}{2} e^{-x/2} ]
这正好是指数分布。
这里有个很有意思的规律:自由度每增加1,形状参数(\alpha)就增加(1/2)。自由度1对应(\alpha=1/2),自由度2对应(\alpha=1),自由度3对应(\alpha=3/2),以此类推。这个规律为我们推导一般情况提供了线索。
4. 一般自由度的推导:矩母函数方法最省力
4.1 从已知自由度的规律出发
我们已经知道:
[ \chi^2_1 \sim \text{Gamma}(1/2, 1/2), \quad \chi^2_2 \sim \text{Gamma}(1, 1/2) ]
自由度(n)的卡方分布是(n)个独立的标准正态变量平方和。如果卡方分布真的是伽马分布族的一员,那自由度(n)对应的就应该是(\text{Gamma}(n/2, 1/2))。现在需要验证这个猜想。
要验证两个分布是否相同,最直接的方法是比较它们的矩母函数。如果两个分布的所有矩都相同,那它们就是同一个分布。矩母函数本质上就是矩的“生成器”,(M(t) = E(e^{tX}))。
4.2 标准正态变量平方的矩母函数
设(Y = Z^2),其中(Z\sim N(0,1)),那么(Y \sim \chi^2_1)。求(Y)的矩母函数:
[ M_Y(t) = E(e^{tZ^2}) = \int_{-\infty}^{\infty} \frac{1}{\sqrt{2\pi}} e^{tz^2} e^{-z^2/2}, dz ]
合并指数项:
[ M_Y(t) = \int_{-\infty}^{\infty} \frac{1}{\sqrt{2\pi}} e^{-(1-2t)z^2/2}, dz ]
这个积分需要(1-2t > 0)才能在实数域收敛,所以要求(t < 1/2)。用高斯积分的公式:
[ \int_{-\infty}^{\infty} e^{-az^2}, dz = \sqrt{\frac{\pi}{a}}, \quad a>0 ]
令(a = (1-2t)/2),得到:
[ M_Y(t) = \frac{1}{\sqrt{2\pi}} \cdot \sqrt{\frac{2\pi}{1-2t}} = (1-2t)^{-1/2} ]
4.3 独立变量和的矩母函数:相乘即可
现在考虑自由度(n)的情况:(\chi^2_n = Z_1^2 + \dots + Z_n^2)。因为(Z_i^2)是相互独立的,它们的矩母函数可以直接相乘:
[ M_{\chi^2_n}(t) = \prod_{i=1}^{n} M_{Z_i^2}(t) = \left[(1-2t)^{-1/2}\right]^n = (1-2t)^{-n/2} ]
这一步是整条推导线的关键。独立随机变量之和的矩母函数等于各自矩母函数的乘积——这是因为和的期望等于期望的乘积在指数函数下的自然结果:
[ E(e^{t(X_1+\dots+X_n)}) = E(e^{tX_1}\dots e^{tX_n}) = E(e^{tX_1})\dots E(e^{tX_n}) ]
中间等号成立正是因为独立性。
4.4 对照伽马分布的矩母函数
接下来要证明(\text{Gamma}(n/2, 1/2))的矩母函数恰好是((1-2t)^{-n/2})。伽马分布(\text{Gamma}(\alpha, \beta))的密度函数是:
[ f(x) = \frac{\beta^\alpha}{\Gamma(\alpha)} x^{\alpha-1} e^{-\beta x}, \quad x>0 ]
它的矩母函数:
[ M(t) = \int_0^\infty e^{tx} \frac{\beta^\alpha}{\Gamma(\alpha)} x^{\alpha-1} e^{-\beta x}, dx ]
合并指数项,当(t < \beta)时:
[ M(t) = \frac{\beta^\alpha}{\Gamma(\alpha)} \int_0^\infty x^{\alpha-1} e^{-(\beta-t)x}, dx ]
做变量替换(u = (\beta-t)x),则(x = u/(\beta-t)),(dx = du/(\beta-t)):
[ M(t) = \frac{\beta^\alpha}{\Gamma(\alpha)} \int_0^\infty \left(\frac{u}{\beta-t}\right)^{\alpha-1} e^{-u} \frac{du}{\beta-t} ]
整理:
[ M(t) = \frac{\beta^\alpha}{(\beta-t)^\alpha} \cdot \frac{1}{\Gamma(\alpha)} \int_0^\infty u^{\alpha-1} e^{-u}, du ]
那一坨积分就是(\Gamma(\alpha))的定义:
[ M(t) = \frac{\beta^\alpha}{(\beta-t)^\alpha} = \left(\frac{\beta}{\beta-t}\right)^\alpha = \left(1-\frac{t}{\beta}\right)^{-\alpha} ]
现在代入(\alpha = n/2, \beta = 1/2):
[ M(t) = \left(1-\frac{t}{1/2}\right)^{-n/2} = (1-2t)^{-n/2} ]
和(\chi^2_n)的矩母函数完全一致。根据矩母函数的唯一性定理,两个分布相同。因此:
[ \chi^2_n \sim \text{Gamma}\left(\frac{n}{2}, \frac{1}{2}\right) ]
密度函数直接写出来:
[ f_{\chi^2_n}(x) = \frac{(1/2)^{n/2}}{\Gamma(n/2)} x^{n/2-1} e^{-x/2} = \frac{1}{2^{n/2}\Gamma(n/2)} x^{n/2-1} e^{-x/2}, \quad x>0 ]
这就得到了教科书上的标准形式。
4.5 卷积法的补充思路
除了矩母函数,也可以直接用卷积公式从低自由度往高自由度推。比如已知(f_{\chi^2_1})和(f_{\chi^2_1}),卷积得到(f_{\chi^2_2});再卷积一个(f_{\chi^2_1})得到(f_{\chi^2_3})。但这个过程每做一次都要算一个伽马型的卷积积分,非常繁琐,而且很容易出错。
我建议你至少手动做一次从(\chi^2_1)卷积到(\chi^2_2)的计算,感受一下卷积公式的工作方式,然后再用矩母函数处理一般情况。两种方法各有优势:卷积法让你直观看到“和的密度是如何被积分出来的”,矩母函数法则在计算上省力太多。实际做研究的时候,矩母函数几乎是标配工具。
另外还有一种思路是利用卡方分布与伽马分布的关系,直接用伽马分布的加法性质:独立伽马变量若速率参数相同,则形状参数相加。(\chi^2_1 \sim \text{Gamma}(1/2,1/2)),(n)个独立加起来就是(\text{Gamma}(n/2,1/2))。这个性质本质上和矩母函数法是同一回事,但表述上更直观。
5. 卡方分布的核心性质与应用场景
5.1 均值与方差:为什么是n和2n
有了密度函数,就可以计算均值和方差。已知(\text{Gamma}(\alpha, \beta))的均值为(\alpha/\beta),方差为(\alpha/\beta^2)。代入(\alpha = n/2, \beta = 1/2):
[ E(\chi^2_n) = \frac{n/2}{1/2} = n, \quad \text{Var}(\chi^2_n) = \frac{n/2}{(1/2)^2} = 2n ]
这个结论很多人在实际使用中会忘记验证:样本方差和总体方差的比值服从卡方分布,自由度(n-1),所以均值是(n-1)而不是(n)。这是一个高频易错点,后面会详细讲。
从矩母函数的角度也可以直接验证。矩母函数(M(t) = (1-2t)^{-n/2})在(t=0)处展开:
[ M(t) = 1 + (n)t + \frac{n(n+2)}{2}t^2 + \dots ]
一阶矩(E(X) = n),二阶矩(E(X^2) = n(n+2)),于是方差(= n(n+2) - n^2 = 2n)。两种方法殊途同归。
5.2 可加性:独立卡方变量相加仍为卡方
如果(X \sim \chi^2_m),(Y \sim \chi^2_n),且(X, Y)相互独立,那么:
[ X+Y \sim \chi^2_{m+n} ]
这个性质在方差分析中有重要作用。比如,两个独立的样本方差估计量相加,自由度也相加,因为背后的信息量是累加的。
5.3 标准化样本方差:统计学里最重要的卡方应用
假设(X_1, \dots, X_n)是来自正态总体(N(\mu, \sigma^2))的独立样本。样本方差为:
[ S^2 = \frac{1}{n-1}\sum_{i=1}^{n}(X_i - \bar{X})^2 ]
那么有经典的结论:
[ \frac{(n-1)S^2}{\sigma^2} \sim \chi^2_{n-1} ]
这里自由度是(n-1)而不是(n),因为样本均值(\bar{X})是从数据中估计出来的,消耗了一个自由度。直观理解:给定(\bar{X}),只有(n-1)个((X_i-\bar{X}))是“自由”的,最后一个可以由(\bar{X})和各偏差之和为0这个约束反推出来。这就是“自由度”这个名字的由来。
这个结论是t检验、卡方检验、F检验的基石。例如,构造t统计量:
[ t = \frac{\bar{X} - \mu}{S/\sqrt{n}} ]
分母中的(S^2)与分子中的(\bar{X})独立(这是正态总体下的著名结论),且((n-1)S^2/\sigma^2 \sim \chi^2_{n-1}),于是(t)服从自由度为(n-1)的t分布。
5.4 拟合优度检验:卡方统计量的经验版本
还有一种非常常见的卡方检验场景是拟合优度检验。假设有(k)个类别,观测频数分别是(O_1, \dots, O_k),期望频数是(E_1, \dots, E_k),那么统计量:
[ \chi^2 = \sum_{i=1}^{k}\frac{(O_i-E_i)^2}{E_i} ]
在零假设下近似服从(\chi^2_{k-1-p}),其中(p)是估计参数的个数。这个检验用到的就是卡方分布作为“平方和”的特质。
6. 实际操作中容易踩的坑与排查技巧
6.1 自由度到底是n还是n-1
最常见的坑是自由度用错。比如用样本方差构造卡方统计量时,用(n)还是(n-1),结果差异巨大。记住一句话:每估计一个参数,就少一个自由度。估计了均值,自由度减1;估计了回归模型里的(p)个系数,自由度减(p)。
6.2 标准正态条件是硬性要求
卡方分布定义要求变量来自标准正态分布。如果随机变量不是标准正态,平方和就不服从卡方分布。举个例子,如果(X_i \sim N(0, \sigma^2)),那么:
[ \sum_{i=1}^{n}\frac{X_i^2}{\sigma^2} \sim \chi^2_n ]
必须先标准化再平方和。很多新手在这里直接拿原始变量平方求和,然后发现分布对不上,其实就是漏了标准化的步骤。
6.3 用软件验证推导结果
推完公式后,最直接的验证方式是模拟。用R、Python都可以,先生成大量标准正态随机数,平方求和,再画直方图,和理论密度曲线叠加在一起看。
比如在R里:
set.seed(42) n <- 5 samples <- replicate(100000, sum(rnorm(n)^2)) hist(samples, breaks=50, freq=FALSE) curve(dchisq(x, df=n), add=TRUE, col="red", lwd=2)如果直方图和曲线贴合得很好,说明推导和实现都没有问题。这个方法也适合验证其他分布的推导——用随机模拟检验真是省心又高效。
6.4 小心伽马函数在整数和半整数处的值
计算卡方分布密度时经常要算(\Gamma(n/2))。当(n)为偶数时,(\Gamma(n/2))就是普通的阶乘;当(n)为奇数时,需要用到(\Gamma(1/2) = \sqrt{\pi})。例如(\Gamma(5/2) = (3/2)(1/2)\Gamma(1/2) = 3\sqrt{\pi}/4)。算错这个值,密度函数的归一化就不对了,这在半整数自由度场景下很容易出现。
6.5 用卡方分布表反查临界值
实际做假设检验时很少手算密度函数,而是直接查表或用软件。但理解密度函数的形状有助于判断检验的方向:卡方分布是右偏的,自由度越小偏得越厉害,自由度增大后逐渐接近正态分布。所以查临界值时,小自由度场景下右侧尾部概率对应的分位数往往比直觉中的大不少。
7. 从推导过程得到的几点体会
最后再分享一点我自己的体会。推卡方分布这条线,最值钱的不是最后那个公式本身,而是过程中反复出现的几个思想:平方和结构对应几何里的距离、变量变换对应坐标系的切换、矩母函数把复杂的卷积变成了简单的乘法、伽马分布则把所有独立同分布的平方和问题统一成一个框架。
如果你以后遇到类似的问题——比如想知道两个独立卡方变量之比服从什么分布(答案:F分布),或者想知道卡方变量除以它的自由度再开方是什么分布(答案:t分布的一种构造方式),你完全可以沿着这篇文章的思路自己推。方法都是现成的,只是换了个壳而已。
另一个实用的建议是,做这类推导时,尽量把最终结果和已知的特殊情况对照一下。比如我当年推完(\chi^2_2)的密度函数后,发现是指数分布,立刻觉得“这结果大概是对的”——因为自由度为2的卡方分布在伽马分布族里有明显的对应关系。这种“直觉检查”虽然不能代替严格证明,但能帮你快速筛掉大部分计算错误。
要是你在学习过程中卡在了某一步,可以试着回到一开始的变量变换公式,确认有没有漏了雅可比行列式,或者忘记对反函数求导。百分之八十的推导错误都出在这两个地方,而不是出在线性代数和积分本身。