Matlab 生成具有污染对数正态分布的随机样本

Matlab 生成具有污染对数正态分布的随机样本,matlab,statistics,probability,Matlab,Statistics,Probability,我想生成一个在Matlab中分布的污染对数正态分布的随机样本。受污染对数正态分布样本的一个例子是双峰对数正态分布,其中有一个大节点和一个小节点 这就是我用来生成5个样本的方法,每个样本包含10个数据点 trueGM=1; trueGSD=2; n=10; m=5; o = lognrnd(log(trueGM), log(trueGSD),n,m); 如何修改此项以获得受污染的对数正态分布?此项使用另一个对数正态样本的25%污染一个对数正态样本 sampleSize = 10000 purel

我想生成一个在Matlab中分布的污染对数正态分布的随机样本。受污染对数正态分布样本的一个例子是双峰对数正态分布,其中有一个大节点和一个小节点

这就是我用来生成5个样本的方法,每个样本包含10个数据点

trueGM=1;
trueGSD=2;
n=10;
m=5;
o = lognrnd(log(trueGM), log(trueGSD),n,m);

如何修改此项以获得受污染的对数正态分布?

此项使用另一个对数正态样本的25%污染一个对数正态样本

sampleSize = 10000
pureln = exp(rnorm(n=sampleSize, 3, 4))
contam = runif(n=sampleSize) < .25
other = exp(rnorm(n=sum(contam), 15, 0.01))
mixture = pureln
mixture[contam] = other
hist(log(mixture))
sampleSize=10000
pureln=exp(rnorm(n=sampleSize,3,4))
contam=runif(n=sampleSize)<.25
其他=经验(rnorm(n=总和(续),15,0.01))
混合物=pureln
混合物[contam]=其他
历史(对数(混合))

这会用另一个对数正态样本的25%污染一个对数正态样本

sampleSize = 10000
pureln = exp(rnorm(n=sampleSize, 3, 4))
contam = runif(n=sampleSize) < .25
other = exp(rnorm(n=sum(contam), 15, 0.01))
mixture = pureln
mixture[contam] = other
hist(log(mixture))
sampleSize=10000
pureln=exp(rnorm(n=sampleSize,3,4))
contam=runif(n=sampleSize)<.25
其他=经验(rnorm(n=总和(续),15,0.01))
混合物=pureln
混合物[contam]=其他
历史(对数(混合))

如果你想要的CDF有一个封闭形式的表达式,你可以简单地在[0,1]中生成一个均匀分布,然后应用CDF的倒数。你想要两个对数正态分布的倒数吗?jonnat:我不知道如何在MatlabNzbuu中编码:是的。两个对数正态分布的混合是可以的。@业余爱好者:你认为下面的解决方案如何?如果你有一个所需CDF的封闭形式表达式,你可以简单地在[0,1]中生成一个均匀分布应用CDF的倒数。你想要两个对数正态分布的倒数吗?乔纳特:我不知道如何用MatlabNzbuu编码。是的。两个对数正态分布的混合是可以的。@业余爱好者:你认为下面的解决方案怎么样?