【问题标题】:Matlab: generate random numbers from custom made probability density functionMatlab:从定制的概率密度函数生成随机数
【发布时间】:2023-04-03 07:30:02
【问题描述】:

我有一个数据集,其中包含 1977-1983 年 1 月份的 3 小时降水量(见附件)。但是,我想根据这些数据生成 1984-1990 年期间的降水数据。因此,我想知道是否可以创建一个自定义的降水量概率密度函数(1977-1983),并由此生成所需时期(1984-1990)的随机数(降水数据)。

这在 Matlab 中是否可行,有人可以帮助我吗?

提前致谢!

【问题讨论】:

  • 如果 1977-1983 年的数据是高斯数据,您可以计算均值和样本标准差,然后使用 data = normrnd(mu, sigma, m, n) 获取均值 = mu 且标准差 = sigma 的随机分布数据点的 amxn 数组。

标签: matlab random histogram probability-density probability-distribution


【解决方案1】:

引用@AnonSubmitter85:

"通过积分估计CDF。最后,你可以选择一个统一的 分布在 0 和 1 之间的随机数并估计 将产生该数字的 CDF。也就是说,如果 y 是随机数 你选择的数字,那么你想找到 x 使得 CDF(x) = y。这 x 的值将是具有所需 PDF 的随机数。”

%random sampling
 N=10; %number of resamples

 pdf = normrnd(0, 1, 1,100); %your pdf
 s = cumsum(pdf); %its cumulative distribution

 r = rand(N,1); %random numbers between 0 and 1
 for ii=1:N
   inds = find(s>r(ii));
   indeces(ii)=inds(1); %find first value greater than the random number
 end
 resamples = pdf(indeces) %the resamples

【讨论】:

    【解决方案2】:

    如果您有“统计和机器学习工具箱”,您可以使用'Kernel Distribution' 方法评估数据的 PDF:

    Percip_pd = fitdist(Percip,'Kernel');
    

    然后使用它从同一分布中生成N 随机数:

    y = random(Percip_pd,N,1);
    

    【讨论】:

      【解决方案3】:

      直方图将为您提供 PDF 的估计值 - 只需将 bin 计数除以样本总数即可。从那里您可以通过积分来估计 CDF。最后,您可以选择一个介于 0 和 1 之间的均匀分布的随机数,并估计会产生该数字的 CDF 参数。也就是说,如果 y 是您选择的随机数,那么您希望找到满足 CDF(x) = y 的 x。 x 的值将是具有所需 PDF 的随机数。

      【讨论】:

        猜你喜欢
        • 2017-05-30
        • 1970-01-01
        • 1970-01-01
        • 2020-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多