石碣做网站,网站开发作业代做,贵阳市住房和城乡建设厅网站,广告网站素材卡方分布
简介
卡方分布是一种连续概率分布#xff0c;常用于统计学中进行假设检验。它描述了在独立抽样中#xff0c;每个样本的平方偏差之和的分布。卡方分布的形状由其自由度 (df) 参数决定#xff0c;自由度越大#xff0c;分布越平缓。
参数
卡方分布用两个参数来…卡方分布
简介
卡方分布是一种连续概率分布常用于统计学中进行假设检验。它描述了在独立抽样中每个样本的平方偏差之和的分布。卡方分布的形状由其自由度 (df) 参数决定自由度越大分布越平缓。
参数
卡方分布用两个参数来定义
df自由度表示卡方分布的形状。自由度必须为正整数。 size输出数组的形状。
公式
卡方分布的概率密度函数 (PDF) 为
f(x) (x^(df/2 - 1) * np.exp(-x/2)) / (2^(df/2) * Gamma(df/2)) for x 0其中
f(x)表示在 x 点的概率密度。 x非负实数。 df自由度。 np.exp(-x/2)指数函数。 Gamma(df/2)伽马函数。
生成卡方分布数据
NumPy 提供了 random.chisquare() 函数来生成服从卡方分布的随机数。该函数接受以下参数
df自由度。 size输出数组的形状。
示例生成 10 个自由度为 5 的卡方分布随机数
import numpy as npdata np.random.chisquare(df5, size10)
print(data)可视化卡方分布
Seaborn 库提供了便捷的函数来可视化分布包括卡方分布。
示例绘制 1000 个自由度为 5 的卡方分布随机数的分布图
import seaborn as sns
import numpy as npdata np.random.chisquare(df5, size1000)
sns.distplot(data)
plt.show()练习
模拟 20 个自由度为 10 的卡方分布随机数并绘制它们的分布图。比较不同自由度下卡方分布形状的变化。利用卡方分布来进行卡方检验假设某枚硬币是公平的即正面朝上的概率为 0.5。抛掷硬币 100 次并计算正面朝上的次数是否服从二项分布。
解决方案
import seaborn as sns
import numpy as np
from scipy import stats# 1. 模拟随机数并绘制分布图
data np.random.chisquare(df10, size20)
sns.distplot(data)
plt.show()# 2. 比较不同自由度下分布形状的变化
df_values [2, 5, 10, 20]
for df in df_values:data np.random.chisquare(dfdf, size1000)sns.distplot(data, labelfdf{df})
plt.legend()
plt.show()# 3. 进行卡方检验
heads np.random.binomial(n100, p0.5)
chi2_stat, p_value stats.chisquare(heads, f_exp50)
print(卡方统计量:, chi2_stat)
print(p 值:, p_value)# 由于 p 值大于 0.05无法拒绝原假设即可以认为硬币是公平的。瑞利分布
简介
瑞利分布是一种连续概率分布常用于描述信号处理和雷达系统中的幅度分布。它表示在一个随机变量的平方根服从指数分布时该随机变量的分布。
参数
瑞利分布用一个参数来定义
scale尺度参数控制分布的平坦程度。较大的尺度参数使分布更加平坦两侧尾部更加分散。默认为 1。
公式
瑞利分布的概率密度函数 (PDF) 为
f(x) (x scale) / (scale^2 np.exp(-x^2 / (2 scale^2))) for x 0其中
f(x)表示在 x 点的概率密度。 x非负实数。 scale尺
Zipf分布
简介
Zipf分布又称为Zeta分布是一种离散概率分布常用于描述自然语言、人口统计学、城市规模等领域中具有幂律特征的数据分布。它体现了“少数服从多数”的现象即排名越靠前的元素出现的频率越高。
参数
Zipf分布用一个参数来定义
a分布参数控制分布的形状。a越小分布越偏向于少数元素越接近幂律分布。默认为 2。
公式
Zipf分布的概率质量函数 (PMF) 为
P(k) 1 / (k ^ a) for k 1其中
P(k)表示第 k 个元素出现的概率。 k元素的排名从 1 开始。 a分布参数。
生成Zipf分布数据
NumPy提供了random.zipf()函数来生成服从Zipf分布的随机数。该函数接受以下参数
a分布参数。 size输出数组的形状。
示例生成10个服从Zipf分布的随机数分布参数为2
import numpy as npdata np.random.zipf(a2, size10)
print(data)可视化Zipf分布
Seaborn库提供了便捷的函数来可视化分布包括Zipf分布。
示例绘制1000个服从Zipf分布的随机数的分布图分布参数为2
import seaborn as sns
import numpy as npdata np.random.zipf(a2, size1000)
sns.distplot(data)
plt.show()练习
模拟不同分布参数下Zipf分布形状的变化。利用Zipf分布来模拟一个城市的规模分布并计算排名前10的城市人口占总人口的比例。比较Zipf分布与幂律分布的异同。
解决方案
import seaborn as sns
import numpy as np# 1. 模拟不同分布参数下Zipf分布形状的变化
a_values [1.5, 2, 2.5, 3]
for a in a_values:data np.random.zipf(aa, size1000)sns.distplot(data, labelfa{a})
plt.legend()
plt.show()2. 模拟城市规模分布并计算人口比例
population np.random.zipf(a2, size100) top10_population population[:10].sum() total_population population.sum() print(“排名前10的城市人口:”, top10_population) print(“排名前10的城市人口比例:”, top10_population / total_population)
3. Zipf分布与幂律分布的比较
Zipf分布和幂律分布都描述了“少数服从多数”的现象即排名越靠前的元素出现的频率越高。
但是Zipf分布的参数化程度更高可以更精确地描述不同领域的幂律现象。幂律分布则更通用但缺乏Zipf分布对参数的控制能力。
具体来说Zipf分布的PMF为
P(k) 1 / (k ^ a)幂律分布的PMF为
P(k) C / k ^ alpha其中C为归一化常数。
可见Zipf分布的参数a控制了分布的倾斜程度而幂律分布的参数alpha则控制了分布的整体形状。
此外Zipf分布通常用于描述离散数据而幂律分布则可以用于描述离散和连续数据。
最后
为了方便其他设备和平台的小伙伴观看往期文章
微信公众号搜索Let us Coding关注后即可获取最新文章推送
看完如果觉得有帮助欢迎点赞、收藏、关注