在Matlab中从Gumbel分布中抽取随机数
问题:我希望您能帮助我在Matlab中使用scale在Matlab中从Gumbel分布中抽取随机数,matlab,random,statistics,Matlab,Random,Statistics,问题:我希望您能帮助我在Matlab中使用scalemu和locationbeta从Gumbel分布中提取随机数 我想使用提供的Gumbel发行版的定义(请参阅页面右侧的PDF和CDF定义) 注意:Matlab中描述的包evrnd无法使用(或者可能需要一些修改才能使用),因为它考虑了翻转符号 让我更好地解释最后一点 让我们将刻度固定为0,将位置固定为1 现在,以下和其他教科书(例如,第42页)的Gumbel PDF是 exp(-x)*exp(-exp(-x)) 尽管如此,evrnd似乎考虑了以下
mu
和locationbeta
从Gumbel分布中提取随机数
我想使用提供的Gumbel发行版的定义(请参阅页面右侧的PDF和CDF定义)
注意:Matlab中描述的包evrnd
无法使用(或者可能需要一些修改才能使用),因为它考虑了翻转符号
让我更好地解释最后一点
让我们将刻度固定为0
,将位置固定为1
现在,以下和其他教科书(例如,第42页)的Gumbel PDF是
exp(-x)*exp(-exp(-x))
尽管如此,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)))
给出带有i.i.d.Gumbel分布数字的结果
。绘制这些示例值的柱状图
>> histogram(result, 51)
如果要使用函数(统计工具箱),只需更改输出的符号。根据文件,
R=evrnd(mu,sigma,[m,n,…])
此处使用的版本适用于建模极小值;此分布的镜像可用于通过对R
求反来模拟最大值
因此,使用
result = -evrnd(mu, beta, sz);