卡方分布密度曲线python代码
时间: 2024-10-15 07:01:44 浏览: 38
卡方分布(Chi-squared distribution),也称为χ²分布,是一种连续概率分布,在统计学中常用于检验数据的拟合度或其他变量的相关性。在Python中,我们可以使用`scipy.stats`库来生成卡方分布的密度函数图。
以下是一个简单的例子,展示如何使用Python和matplotlib库绘制卡方分布的密度曲线:
```python
import matplotlib.pyplot as plt
from scipy.stats import chi2
# 设置随机数种子以便于复现结果
import numpy as np
np.random.seed(0)
# 定义x轴的取值范围和步长
df = 4 # 分布自由度,例如正态分布的残差平方次数
x = np.linspace(chi2.ppf(0.001, df), chi2.ppf(0.999, df), 100) # 概率积分变换得到均匀分布的区间
# 计算每个x值对应的卡方密度
pdf = chi2.pdf(x, df)
# 绘制密度曲线
plt.figure(figsize=(8, 6))
plt.plot(x, pdf, 'r-', linewidth=2, label=f"χ²(df={df})")
plt.title('Chi-Squared Distribution Density Curve')
plt.xlabel('Value')
plt.ylabel('Density')
plt.legend()
plt.grid(True)
plt.show()
相关问题
1、分布曲线 编写正态分布,二项分布,泊松分布、负二项分布、t 分布、卡方分布密度函数, 并用其函数画出每个分布的三条不同参数的密度曲线
正态分布密度函数:
$$f(x)=\frac{1}{\sigma\sqrt{2\pi}}e^{-\frac{(x-\mu)^2}{2\sigma^2}}$$
其中,$\mu$为均值,$\sigma$为标准差。
二项分布密度函数:
$$f(x)=\binom{n}{x}p^x(1-p)^{n-x}$$
其中,$n$为试验次数,$p$为每次试验成功的概率。
泊松分布密度函数:
$$f(x)=\frac{\lambda^x}{x!}e^{-\lambda}$$
其中,$\lambda$为单位时间内事件发生的平均次数。
负二项分布密度函数:
$$f(x)=\binom{x-1}{r-1}(1-p)^{x-r}p^r$$
其中,$r$为成功的次数,$p$为每次试验成功的概率。
t分布密度函数:
$$f(x)=\frac{\Gamma(\frac{\nu+1}{2})}{\sqrt{\nu\pi}\Gamma(\frac{\nu}{2})}(1+\frac{x^2}{\nu})^{-\frac{\nu+1}{2}}$$
其中,$\nu$为自由度。
卡方分布密度函数:
$$f(x)=\frac{1}{2^{\frac{\nu}{2}}\Gamma(\frac{\nu}{2})}x^{\frac{\nu}{2}-1}e^{-\frac{x}{2}}$$
其中,$\nu$为自由度。
以下是每个分布的三条不同参数的密度曲线:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm, binom, poisson, nbinom, t, chi2
# 正态分布
mu = [0, 0, 0]
sigma = [1, 2, 3]
x = np.linspace(-10, 10, 200)
fig, ax = plt.subplots(nrows=1, ncols=3, figsize=(12, 4))
for i in range(3):
ax[i].plot(x, norm.pdf(x, loc=mu[i], scale=sigma[i]))
ax[i].set_title(f"mu={mu[i]}, sigma={sigma[i]}")
plt.show()
# 二项分布
n = [10, 20, 30]
p = [0.2, 0.5, 0.8]
fig, ax = plt.subplots(nrows=1, ncols=3, figsize=(12, 4))
for i in range(3):
ax[i].bar(range(n[i]+1), binom.pmf(range(n[i]+1), n[i], p[i]))
ax[i].set_title(f"n={n[i]}, p={p[i]}")
plt.show()
# 泊松分布
lam = [1, 3, 5]
fig, ax = plt.subplots(nrows=1, ncols=3, figsize=(12, 4))
for i in range(3):
ax[i].bar(range(20), poisson.pmf(range(20), lam[i]))
ax[i].set_title(f"lambda={lam[i]}")
plt.show()
# 负二项分布
r = [5, 10, 15]
p = [0.2, 0.5, 0.8]
fig, ax = plt.subplots(nrows=1, ncols=3, figsize=(12, 4))
for i in range(3):
ax[i].bar(range(r[i], 100), nbinom.pmf(range(r[i], 100), r[i], p[i]))
ax[i].set_title(f"r={r[i]}, p={p[i]}")
plt.show()
# t分布
nu = [5, 10, 30]
fig, ax = plt.subplots(nrows=1, ncols=3, figsize=(12, 4))
for i in range(3):
ax[i].plot(x, t.pdf(x, nu[i]))
ax[i].set_title(f"nu={nu[i]}")
plt.show()
# 卡方分布
nu = [5, 10, 20]
fig, ax = plt.subplots(nrows=1, ncols=3, figsize=(12, 4))
for i in range(3):
ax[i].plot(x, chi2.pdf(x, nu[i]))
ax[i].set_title(f"nu={nu[i]}")
plt.show()
```
![png](output_1_0.png)
![png](output_1_1.png)
![png](output_1_2.png)
![png](output_1_3.png)
![png](output_1_4.png)
![png](output_1_5.png)
阅读全文