概率分布检验


1、分布是概率密度函数还是互补累积分布

image-20250917210856428

image-20250917210901094

2、如何辨别幂律分布还是指数分布

image-20250917210931444

image-20250917210936073

image-20250917210945154

import numpy as np
import matplotlib.pyplot as plt
# 生成幂律分布数据
power_data = np.random.pareto(2, 1000) + 1  # α=2

# 生成指数分布数据
exp_data = np.random.exponential(scale=1, size=1000)  # λ=1


# 画双对数观察
def plot_loglog(data, title):  
    counts, bins = np.histogram(data, bins=50)
    pdf = counts / (sum(counts) * np.diff(bins))  # 计算概率密度
    plt.loglog(bins[:-1], pdf, 'o')  # 双对数图
    plt.title(title)
    plt.xlabel('Value')
    plt.ylabel('Probability Density')

plt.figure(figsize=(12, 5))
plt.subplot(121)
plot_loglog(power_data, 'Power Law Distribution')
plt.subplot(122)
plot_loglog(exp_data, 'Exponential Distribution')
plt.show()


from powerlaw import Fit
# 检验幂律分布
fit = Fit(power_data)
print(f"Estimated alpha: {fit.alpha}")  # 是估计的幂律指数
print(f"Log-likelihood: {fit.power_law.loglikelihood}")

# 绘制拟合结果
fig = fit.plot_pdf(color='b', label='Empirical Data')
fit.power_law.plot_pdf(color='r', linestyle='--', label='Power Law Fit')
plt.legend()
plt.show()


from scipy.stats import expon
# 拟合指数分布参数
lambda_hat = 1 / np.mean(exp_data)  # λ的估计值
ks_stat, p_value = expon.fit(exp_data)  # 如果P值较大(如 >0.05),则不能拒绝数据符合指数分布的假设。

print(f"Estimated lambda: {lambda_hat}")
print(f"KS Statistic: {ks_stat}, P-value: {p_value}")

# 绘制经验数据与拟合结果
counts, bins = np.histogram(exp_data, bins=50, density=True)
plt.hist(exp_data, bins=50, density=True, alpha=0.5, label='Empirical Data')
plt.plot(bins, expon.pdf(bins, scale=1/lambda_hat), 'r--', label='Exponential Fit')
plt.legend()
plt.xlabel('Value')
plt.ylabel('Probability Density')
plt.title('Exponential Fit')
plt.show()

# 评估两种你和效果
from scipy.stats import expon
# 幂律拟合
fit_power = Fit(power_data)
log_likelihood_power = fit_power.power_law.loglikelihood

# 指数拟合
lambda_hat = 1 / np.mean(exp_data)
log_likelihood_exp = sum(np.log(expon.pdf(exp_data, scale=lambda_hat)))

# 比较似然比
likelihood_ratio = log_likelihood_power - log_likelihood_exp
print(f"Likelihood Ratio: {likelihood_ratio}")

3、特殊的幂律分布

https://www.jianshu.com/p/b7e06c4839b2

截断幂律、尺度不变性、胖尾 长尾


文章作者: 猴猴猴
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 猴猴猴 !
  目录