当前位置:网站首页>MCS:连续随机变量——Chi-Square分布

MCS:连续随机变量——Chi-Square分布

2022-06-23 03:56:00 今晚打佬虎

Chi-Square 分布

Chi-Square分布是统计分析上最常用的分布之一,用于检验变量的方差的变化,Chi-Square变量用 X 2 \mathcal X^2 X2表示,自由度参数用 k k k表示(正整数)通常 k < = 100 k <= 100 k<=100,令 w = X 2 w = \mathcal X^2 w=X2,概率密度函数为:

f ( w ) = w ( k / 2 − 1 ) e − w / 2 2 k / 2 Γ ( k / 2 ) , w > = 0 f(w) = \frac{w^{(k/2-1)} e^{-w/2}}{2^{k/2}\Gamma(k/2)},w >= 0 f(w)=2k/2Γ(k/2)w(k/21)ew/2w>=0

Γ ( k ) \Gamma(k) Γ(k):Gamma函数:
Γ ( k ) = ∫ 0 ∞ t k − 1 e − t d t , k > 0 \Gamma(k) = \int_0^{\infty} t^{k-1}e^{-t}dt, k > 0 Γ(k)=0tk1etdtk>0
如果 k k k为正整数(Gamma = Erlang):
Γ ( k ) = ( k − 1 ) ! \Gamma(k) = (k-1)! Γ(k)=(k1)!

w w w( X 2 \mathcal X^2 X2)的均值和方差为: E ( w ) = k , V ( w ) = 2 k E(w) = k,V(w) = 2k E(w)=kV(w)=2k

E ( X 2 ) = k E(\mathcal X^2) = k E(X2)=k
V ( X 2 ) = 2 k V(\mathcal X^2) = 2k V(X2)=2k

自由度为 k k k的卡方变量与标准正态变量的关系:

X 2 = z 1 2 + z 2 2 + . . . + z k 2 \mathcal X^2 = z_1^2 + z_2^2 + ... + z_k^2 X2=z12+z22+...+zk2

k > 30 k > 30 k>30,根据中心极限定理,chi-square的概率密度将呈现出正态分布, X 2 ∼ N ( k , 2 k ) \mathcal X^2 \sim N(k, 2k) X2N(k,2k),根据这个关系, α \alpha α-percent chi-square近似值:

X α 2 ≈ k + z α 2 k \mathcal X_{\alpha}^2 \approx k + z_{\alpha} \sqrt{2k} Xα2k+zα2k

  • z z z : 标准正态变量, P ( z > z α ) = α P(z > z_{\alpha}) = \alpha P(z>zα)=α, P ( X 2 > X α 2 ) ≈ α P(\mathcal X^2 > \mathcal X_{\alpha}^2 ) \approx \alpha P(X2>Xα2)α
  • k k k : 均值, 2 k 2k 2k : 方差

同Gamma分布的关系:

当Gamma分布的参数 θ = 2 , k ′ = k / 2 \theta = 2, k' = k/2 θ=2,k=k/2时,他们具有相同的形状。

生成随机的Chi-Square变量

根据卡方变量跟标准正态变量之间的关系,可以通过K个标准的正态变量来生成自由度为k的卡方变量,计算步骤如下:

  1. X 2 = 0 \mathcal X^2 = 0 X2=0
  2. For i in range(1, k+1).
  3. Generate a standard normal variate z.
  4. X 2 = X 2 + z 2 \mathcal X^2 = \mathcal X^2 + z^2 X2=X2+z2.
  5. Next i.
  6. Return X 2 \mathcal X^2 X2.

根据Chi-Square变量跟Gamma变量的关系,也可以通过Gamma分布生成随机Chi-Square变量。

例:假设一个随机卡方变量自由度为 k = 3 k=3 k=3,模拟生成服从这样分布的随机变量,过程如下:

  1. Generate three random standard normal variates : z 1 , z 2 , z 3 = 0.47 , − 0.81 , 1.04 z_1, z_2, z_3 = 0.47, -0.81, 1.04 z1,z2,z3=0.47,0.81,1.04
  2. X 2 = 0.4 7 2 + − 0.8 1 2 + 1.0 4 2 = 1.9586 \mathcal X^2 = 0.47^2 + -0.81^2 + 1.04^2 = 1.9586 X2=0.472+0.812+1.042=1.9586
  3. Return X 2 = 1.9586 \mathcal X^2 = 1.9586 X2=1.9586

例:假设一个随机卡方变量的自由度为239,模拟生成一个这样的随机变量:

注:根据Chi-Square分布的特点,当自由度较高时(k > 30),Chi-Square分布将呈现出正态分布的形状。(N(k, 2k)),根据这个性质可以通过标准正态分布生成Chi-Square变量。

  1. Generate a random standard normal z ∼ N ( 0 , 1 ) , z = 1.34 z \sim N(0, 1),z = 1.34 zN(0,1)z=1.34
  2. X 2 ≈ i n t ( k + z × 2 k + 0.5 ) = 269 \mathcal X^2 \approx int(k + z \times \sqrt{2k} + 0.5) = 269 X2int(k+z×2k+0.5)=269
  3. Return X 2 = 269 \mathcal X^2 = 269 X2=269
import numpy as np
import matplotlib.pyplot as plt
def generate_chi_square_var(k=1):
    if k <= 30:
        z = np.random.normal(0, 1, size=(k))**2
        x = z.sum()
    else:
        z = np.random.normal(0, 1)
        x = int(k + z * np.sqrt(2*k) + 0.5)
    return x

k = 1 、 10 、 30 、 50 k = 1、10、30、50 k=1103050

x_k1 = [generate_chi_square_var() for i in range(10000)]
x_k10 = [generate_chi_square_var(10) for i in range(10000)]
x_k30 = [generate_chi_square_var(30) for i in range(10000)]
x_k50 = [generate_chi_square_var(50) for i in range(10000)]
plt.figure(figsize=(12, 5))
plt.hist(x_k1, label="$k=1$")
plt.hist(x_k10, label="$k=10$", alpha=0.5)
plt.hist(x_k30, label="$k=30$", alpha=0.5)
_=plt.hist(x_k50, label="$k=50$", alpha=0.5)
plt.legend()
plt.grid()

在这里插入图片描述

原网站

版权声明
本文为[今晚打佬虎]所创,转载请带上原文链接,感谢
https://wangjh.blog.csdn.net/article/details/125302402