Matlab:从定制的概率密度函数生成随机数
我有一个数据集,包含1977-1983年1月的3小时降水量(见附件)。但是,我想根据这些数据生成1984-1990年期间的降水数据。因此,我想知道是否有可能创建降水量(1977-1983)的定制概率密度函数,并由此生成所需时期(1984-1990)的随机数(降水数据) 这在Matlab中是可能的吗?有人能帮我吗 提前谢谢Matlab:从定制的概率密度函数生成随机数,matlab,random,histogram,probability-density,probability-distribution,Matlab,Random,Histogram,Probability Density,Probability Distribution,我有一个数据集,包含1977-1983年1月的3小时降水量(见附件)。但是,我想根据这些数据生成1984-1990年期间的降水数据。因此,我想知道是否有可能创建降水量(1977-1983)的定制概率密度函数,并由此生成所需时期(1984-1990)的随机数(降水数据) 这在Matlab中是可能的吗?有人能帮我吗 提前谢谢 直方图将为您提供PDF的估计值——只需将垃圾箱计数除以样本总数即可。从那里你可以通过积分来估计CDF。最后,您可以选择0和1之间的均匀分布随机数,并估计将产生该数的CDF的参数
直方图将为您提供PDF的估计值——只需将垃圾箱计数除以样本总数即可。从那里你可以通过积分来估计CDF。最后,您可以选择0和1之间的均匀分布随机数,并估计将产生该数的CDF的参数。也就是说,如果y是您选择的随机数,那么您希望找到x,使得CDF(x)=y。x的值将是一个随机数,具有所需的PDF。如果您有“统计和机器学习工具箱”,您可以使用以下方法评估数据的PDF: 然后使用它从同一分布生成
N
随机数:
y = random(Percip_pd,N,1);
引用@AnonSubmitter85: “通过积分估计CDF。最后,您可以选择一个统一的 0和1之间的分布随机数,并估计 产生这个数字的CDF,也就是说,如果y是随机数 你选择的数字,然后你想找到x,这样CDF(x)=y x的值将是一个随机数,具有所需的PDF。”
如果1977-1983年的数据是高斯分布的,您可以计算平均值和样本标准偏差,然后使用
data=normrnd(mu,sigma,m,n)
获得一个m x n随机分布的数据点阵列,平均值=mu,标准偏差=sigma。
y = random(Percip_pd,N,1);
%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