这叫什么方法生成随机样本

3 Ansichten(30天)的
mutah
mutah 我2014年8月29日
所有
下面的代码表示逆cdf实验组的方法?
y是pdf的分布
cdf_y = cumsum (y);
sum_y = (y)之和;
j = 1: N
randx = sum_y * rand ();
i = 1;
虽然cdf_y (i) < randx
我=我+ 1;
结束
f (j) = x(我);结束
请给我解释

Akzeptierte Antwort

罗杰·斯塔福德
罗杰·斯塔福德 是1。2014年9月
Bearbeitet:罗杰·斯塔福德 是1。2014年9月
代码显示,Mutah,严格说来y向量不是一个pdf -一个概率分布函数。这是一个及一个概率 质量 函数。实际代码的作者允许y只是这些概率成正比,所以y及成正比。这是因为它是处理一组离散的值,而不是一个连续分布。对于每一个我,y(我)必须与一个随机变量的概率成正比,f,等于相应的x (i)。
理解,代码是正确的和N-length数组,f,将统计分布按照y值。原因作者发现cumsum (y)和(y)是cumsum (y)的累积和y值,因此所需的累积概率成正比的结果,和总和(y)的比例常数。如果在第i个for循环之旅,我们有0 < randx < = cdf_y (1), while循环将不执行,你会得到我= 1将x(1)插入f。如果cdf_y (1) < randx < = cdf_y (2), while循环将只是一次,我将会等于2,将x(2)插入f。这仍然是真的到此案cdf_y (end-1) < randx < cdf_y(结束),然后把x(结束)f。因此这找到cdf_y的逆函数的影响,这是对于每一个累积概率值,randx,它提供了适当的x (i)值。
然而,它必须说这个代码不是很有效。它不利用这一事实cdf_y值是一个提升的序列值。则没有必要可能贯穿整个cdf_y序列和while循环寻求的每个randx符合正确的cdf_y间隔值。下面的代码使用了matlab函数“histc” 利用cdf_f排序的,因此应该更快的代码对于大型x和y数组。
cdf_y = cumsum (y);
cdf_y = cdf_y / cdf_y(结束);
(~,ix) = histc(兰德(N, 1), [0; cdf_y]);
f = x (ix);
我在这里假设,x和y是列向量。要理解其工作原理,你应该仔细研究“histc”功能:
//www.tatmou.com/help/matlab/ref/histc.html
5 Kommentare
罗杰·斯塔福德
罗杰·斯塔福德 2014年9月15日
“y是pdf的任何分配” 唯一的方法我可以看到你的边缘矢量未能是单调的引入是你的一个“y”值是负的。然而,发行版应该总是非负的pdf。
你应该能够为自己检查。找到地方cdf_y减少并检查相应的y值。

Melden您西奇,嗯祖茂堂kommentieren。

Weitere Antworten (1)

图像分析
图像分析 我2014年8月29日
不知道你到底是什么意思,具体的你的问题是如何准确的代码,但总的来说生成一串随机数字的过程和运行一个“实验”N *(在你做了这样一个循环)被称为“蒙特卡罗模拟”。例如,查看附件Monty Hall问题,我编写了蒙特卡罗模拟。
10 Kommentare
图像分析
图像分析 我2014年8月31日
嗯,就像我说的,虽然之前和两条线(线)后将取代:
我找= (cdf_y > randx 1“第一”)

Melden您西奇,嗯祖茂堂kommentieren。

Kategorien

找到更多的在描述性统计帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的