主成分分析法matlab,怎样用matlab生成符合指数分布的序列呢?


时间:

已知某仪器在固定时间段内的故障率,且无记忆性,用1表示无故障,用0表示故障,如何生成在时间轴上该仪器的故障序列?

所谓指数分布,意指随机变量x取某个值的概率,与exp(-k x)成正比。具体来说,就是x取小的值的概率大,而去大的值的概率小,这个概率与某值的负指数有关。

最简单、最容易生成的分布,就是均匀分布,而均匀分布中,最常见的,就是零到一的均匀分布。这是一般的计算机默认可以给出的随机分布。我相信各个计算机语言中都会提供这些算法。那么,一个很自然的想法就是,虽然均匀分布x0在0~1上是均匀取值的,但是,如果有函数f,得到x1 = f(x0)。这个时候,x1的分布就不再是均匀分布了。比如说,在x0处,有微小的变化dx。对应到x1上,就是在x1附近,有f'(x0)dx的变化。

这个时候,由于x0在任何dx上的采样采样数量都一样,所以在x1上的分布密度就会有变化,即变为之前的1/f'(x0)倍。这时,就可以反推指数分布的采样方法了:我们只需要找到一个合适的f,就可以将均匀分布变为指数分布。

我们来计算一下:对于指数分布,x的出现概率是exp(-k x)。它正比于exp(-k x) = c * 1/ f'(f^(-1)(x))。可以解得,f = -log。

也就是说,将0~1的随机数带入f,也就是-log(x),就可以得到指数分布。我没有安装matlab,用Mathematica做一个演示,基本的算法是不变的:

可以看到,在对数坐标下,分布基本在一条直线上,也就是说,实际采样得到的分布,确实是符合指数分布的。