卡方分布和卡方验证的关系理解,以及Python实现

本文介绍了卡方分布的概念,通过Python代码展示了正态分布平方和如何逼近卡方分布。接着讨论了卡方检验的原理和应用,并通过实例解释了Python中进行卡方检验的方法,包括卡方拟合性检验和卡方独立性检验。文章还探讨了Pearson卡方检验为何符合卡方分布,并提供了相关资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

卡方分布

定义:设 X1…Xn是服从标准正态分布的随机变量,则称统计量
在这里插入图片描述

服从自由度为n的卡方分布,自由度为n时,他的期望是n,方差为2n
他是标准正态分布变量的平方和,网上找了一张概率密度图:
在这里插入图片描述
然后我很好奇的是,这张图怎么画出来的呢?
既然是正态分布的平方和,我就试一下弄几个正态分布平方和,看看图形是不是这个样子。
用Python代码

# 产生服从N(0,1)分布的1000个数
x1 = np.random.randn(1000)
y1 = np.power(x1,2)

一个一个产生太慢了,,用循环生产随机数:

# 给定一个正数n,产生n个正太分布的平方和
def product(n):
    n = np.ceil(n).astype(int)
    if n <=0:return None
    y = np.power(np.random.randn(1000),2)
    for i in range(1,n):
        y += np.power(np.random.randn(1000),2)
    return y

画什么图?对于正态分布图,数据都会集中在一个点附近,所以我们用直方图最容易看出数据的分布情况

plt.figure(figsize=(10,10))
for i in range(9):
    plt.subplot(3,3,i+1)
    plt.xticks([])
    plt.yticks([])
    plt.hist
正态分布假设的检验通常用于验证数据是否服从正态分布。在Python中,我们可以使用`scipy.stats`库中的`chi2`模块来进行检验。这里是一个简单的例子: ```python from scipy.stats import chi2, norm import numpy as np # 假设我们有一些观测值data data = [random.randn() for _ in range(100)] # 这里用numpy生成一些随机数作为示例 # 计算样本均值标准差 sample_mean = np.mean(data) sample_std_dev = np.std(data) # 对应于正态分布的理论期望值 expected_values = [sample_mean + i * sample_std_dev for i in range(-3, 4)] # 计算每个区间内的观察值与期望值之差的平,除以期望值 observed_counts, expected_counts = np.histogram(data, bins=7, density=True) # 假设我们有7个等宽区间 chi_square_statistic = sum((observed_counts - expected_counts)**2 / expected_counts) # 使用chi2_contingency函数计算统计量p值 chi_square, p_value, degrees_of_freedom, expected_counts = chi2 contingency(observed_counts) print(f"Chi-square statistic: {chi_square}") print(f"P-value: {p_value}") ``` 在这个例子中,我们首先假设数据服从正态分布,并创建了一个小的随机样本。接着,我们将数据分到几个区间,计算每个区间的实际观察次数预期次数(基于正态分布)。然后,我们计算统计量并获取P值。如果P值大于显著性水平(如0.05),则拒绝原假设,即认为数据不服从正态分布
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值