use*_*148 2 random statistics matlab
问题:我希望您帮助从Gumbel分布中随机抽取数字mu和位置的随机数beta.
我想使用维基百科提供的Gumbel分布的定义(参见页面右侧的PDF和CDF定义).
注意:这里evrnd描述的Matlab中的包不能使用(或者可以用于某些修改?)因为它考虑了翻转符号.
让我更好地解释最后一点.
让我们将比例尺固定到0位置1.
现在,遵循维基百科和其他教科书(例如,这里第42页),Gumbel PDF就是
exp(-x)*exp(-exp(-x))
在Matlab中虽然似乎evrnd考虑了以下PDF中的随机抽取:
exp(x)*exp(-exp(x))
您可以看到Matlab -x中的替换为x.
关于什么是最佳方式的任何想法?
根据维基百科,逆累积分布函数是
Q(p) = mu - beta*log(-log(p))
从该函数,可以应用逆变换方法.从而
sz = [1 1e6]; % desired size for result array
mu = 1; % location parameter
beta = 2.5; % scale parameter
result = mu - beta*log(-log(rand(sz)))
Run Code Online (Sandbox Code Playgroud)
给出result了iid Gumbel分布的数字.绘制这些示例值的直方图给出
>> histogram(result, 51)
Run Code Online (Sandbox Code Playgroud)
如果要使用该evrnd功能(统计工具箱),只需更改输出的符号即可.根据文件,
R = evrnd(mu,sigma,[m,n,...])这里使用的版本适用于最小化建模; 此分布的镜像可用于通过否定来模拟最大值
R.
因此,使用
result = -evrnd(mu, beta, sz);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
230 次 |
| 最近记录: |