llcyyf 2023-03-23 15:45 采纳率: 50%
浏览 81
已结题

概率密度函数拟合与分布检验

本人使用蒙卡特罗模拟对要计算的参数进行了10000次模拟,现在需要对模拟得到的这10000个数据用最小二乘法拟合出最佳的概率密度曲线,并测试其最符合的哪种统计分布(如贝塔、二项式、χ2、非中心χ2、F、非中心F、伽玛、负二项式,正态、泊松、学生t和非中心t等),得到类似于如下图的结果。最好利用python实现。

img

  • 写回答

8条回答 默认 最新

  • m0_73340666 2023-03-23 15:52
    关注

    回答参考chatgpt
    首先,您需要安装一些Python库,包括NumPy、SciPy、matplotlib和seaborn,以便更好地实现和可视化拟合过程。您可以通过以下命令安装这些库(如果尚未安装)

    pip install numpy scipy matplotlib seaborn
    

    接下来,使用以下代码示例进行最小二乘法拟合并找到最符合的概率密度函数(PDF):

    import numpy as np
    import scipy.stats as stats
    import matplotlib.pyplot as plt
    import seaborn as sns
    
    # 模拟数据
    np.random.seed(42)
    data = np.random.randn(10000)
    
    # 可视化直方图
    plt.figure()
    sns.histplot(data, kde=False, bins=50, color='b', stat='density')
    plt.title('Histogram of Simulated Data')
    
    # 拟合概率密度函数
    distributions = [
        stats.beta, stats.binom, stats.chi2, stats.ncx2,
        stats.f, stats.ncf, stats.gamma, stats.nbinom,
        stats.norm, stats.poisson, stats.t, stats.nct
    ]
    
    best_fit = None
    best_sse = np.inf
    best_params = None
    
    for dist in distributions:
        try:
            params = dist.fit(data)
            pdf = dist.pdf(np.sort(data), *params)
            sse = np.sum((pdf - data) ** 2)
            if sse < best_sse:
                best_fit = dist
                best_sse = sse
                best_params = params
        except Exception as e:
            pass
    
    print(f"Best fit: {best_fit.name}, Parameters: {best_params}")
    
    # 绘制拟合曲线
    x = np.linspace(min(data), max(data), 1000)
    y = best_fit.pdf(x, *best_params)
    plt.plot(x, y, 'r-', lw=2, label=f'{best_fit.name} fit')
    plt.legend()
    plt.show()
    

    该代码首先生成了一个随机正态分布的模拟数据集(您可以用您自己的数据替换这部分),然后计算并绘制直方图。接着,代码尝试使用最小二乘法拟合上述提到的各种概率密度函数,并选择具有最小平方和误差(SSE)的分布作为最佳拟合。最后,它将最佳拟合曲线绘制在直方图上。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

问题事件

  • 系统已结题 4月6日
  • 已采纳回答 3月29日
  • 创建了问题 3月23日

悬赏问题

  • ¥15 ps2手柄控制树莓派小车
  • ¥30 C#:vsto powerpoint的外接程序
  • ¥30 stata将do文件代码转化为ado文件
  • ¥15 两个同维数组相比,不同位置、出现重复比无意义,而不同位置、不出现重复比,则有意义。把有意义的两个数组放入新的集合MK中。
  • ¥15 可以远程电脑安装nvm
  • ¥15 写一个可直接调用的函数,将32位有符号数转成另一个无符号的数
  • ¥15 CMAKE+VS2019+QT5.15.2组合进行二次编译
  • ¥15 nginx 配置静态html访问 ,后台登录时页面始终被重定向到登录页,无法访问到后台的静态html页
  • ¥20 自动登录的j2ee程序编译
  • ¥15 fluent模拟静态气体扩散