生成随机数从混合物中分布

28日视图(30天)
嗨,我想从混合物中生成随机数分布定义为:
pdf_mix = p * burrpdf (x,αc k) + (1 - p) * wblpdf (x, a, b);
目的是计算一个kstest2观测数据和混合分布。
这是可能的吗?我可以得到一些帮助吗?
T PLOCOSTE
2的评论
托马斯PLOCOSTE
托马斯PLOCOSTE 2019年8月2日
的经验数据(X1) 3849点(N = 3849)以2253分了11年第一季和第二季的1596点。每年都是由这两个季节。
混合函数是:
Fmix = p * (Fburr (x)) + (1 - p) * (Fweibull (x))
我想从这个函数生成一个随机数
我已经试过这个:
R =[随机(“毛刺”, αc k ,2253,(1);wblrnd ( a、b ,1596,(1)];
这个公式我获得一个连接从2 distribtutions而不是混合物。
如何生成一个随机数这个混合物等于N = 3849 ?

登录置评。

接受的答案

约翰D 'Errico
约翰D 'Errico 2019年8月3日
编辑:约翰D 'Errico 2019年8月3日
读到大卫的答案。但是这样让我解释,因为我觉得很多人不理解混合分布的含义或它是什么。
混合分布意味着你有两个(或更多)不同的分布。我叫他们与概率p A和B,样本来自分布,然后用概率1 - p, B的样本来自分布。
解决方案是简单。对于每一个样本,首先,选择一个随机数。如果数量小于或等于p,那么你将样本分布a如果数量超过p,那么你选择分布b容易,peasy。
让我们看看它如何工作。我将选择两个分布明显不同。
分布:限制(2、3)之间的统一
B:分布正态分布,平均0,标准偏差1。
假设1000000样本总体,足以让干净的直方图。我将p设置为0.4,随意。所以大约40%的样本将制服,60%正常。
N = 1000000;
p = 0.4;
% U是一个二进制变量指标,告诉如何
%样本为每个样本。1 - - >,0 - - > B。
U =兰德(N, 1) < = p;
nA = (U)之和;
nB = N - nA;
% preallocate X
X = 0 (N, 1);
X (U) =兰德(nA, 1) * 1 + 2;
X (- U) = randn(注1);
%最后,直方图,就给我们做了我们所期望的事情。
直方图(X, 1000)
所以我们有一些重叠之间的分布,但很明显的混合高斯和制服,当我们预期。
总和(U)
ans =
399632年
我们会预期大约400000事件的统一。相当接近。

更多的答案(3)

大卫Goodmanson
大卫Goodmanson 2019年8月3日
编辑:大卫Goodmanson 2019年8月3日
你好,托马斯。
我猜你的意思是像下面这样。统一的随机变量是用来创建一个索引,选择从第一分布概率p,和从第二个概率1 - p。我随便做了两个不同的标准正态分布的分布。你不要说如果p = 2253/3849在你的情况下,但这并不是必要的,可以是任何东西。
%的正态分布参数
s1 = 1;mu1 = 1;
s2 = 2;mu2 = 5;
p = 2;
n = 1000;
R = 0 (1, n);%将是最终的结果
r =兰德(1,n);
印第安纳州= r < p;%指数分布
np =总和(印第安纳州);
R(印第安纳州)= s1 * randn (np) + mu1;% np实例
R ~(印第安纳州)= s2 * randn (1, n-np) + mu2;% n-np实例

杰夫•米勒
杰夫•米勒 2019年8月3日
>这个公式我获得一个连接从2 distribtutions而不是混合物。
好吧,只是一个串联混合从2分布以随机的顺序。所以你可以随机的顺序R和混合物。
就kstest2而言,订单不重要,所以你可以实际上只使用R和得到相同的kstest2输出。
但如果你的目标是测试数据来自一个已知的分布,是否你真的会更好的治疗,分布已知和使用一个示例键糟。(我不确定你是否可以建立混合分布,为MATLAB分布对象,然而,你可能要自己编写键糟如果你想走这条路。)

辛西娅的事情
辛西娅的事情 2021年1月24日
你好托马斯,谢谢你这篇文章。
我目前发现关于这个。
希望你能帮我如果你能获得。
谢谢你!
2的评论
辛西娅的事情
辛西娅的事情 2021年1月26日
你好托马斯,
你非常有帮助的。
但是我想知道如果我有一个随机的数据,我想试着适应输出数据到函数,会有一个通用的公式吗?(例如,如果我没有一个特定的数据,我知道)
谢谢你!

登录置评。

社区寻宝

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

开始狩猎!