从Fisher分布中绘制随机值

时间:2010-12-11 07:11:38

标签: math statistics geometry fortran computational-geometry

在我的研究中,我正在生成用于表示岩石中裂缝的离散平面。断裂面的方向由其倾角和倾角方向确定。知道这一点,我也知道每个平面的法向量的分量。

到目前为止,我一直在绘制与正态分布无关的倾角和倾角方向。这没关系,但我想添加从Fisher分布中绘制的能力。

描述了渔民分布 HERE

基本上,我希望能够指定平均倾角和倾角方向(或平均向量)和“渔夫常数”或分散因子k,并从该方向分布中随机抽取值。

附加信息:似乎“Von Mises-Fisher发行版”与我称之为“Fisher发行版”的版本相同或者是某种相关的。关于Von Mises-Fisher分布的一些信息:

正如你所看到的,我已经做了一些调查,但我承认我并不完全理解数学。我觉得我很亲近,但我不太明白......任何帮助都非常感谢!

如果有帮助,我的编程就在FORTRAN中。

2 个答案:

答案 0 :(得分:2)

我认为你可以手工做数学

  • 积分Fisher分布的密度函数以获得累积分布函数

    F(theta)= exp(K cos(theta)))/(exp(k)-exp(-k))

  • 下一步是找到逆累积分布函数函数F ^( - 1)(y)。此功能实现

    F(θ)= y< => F ^( - 1)(y)= theta

  • 我认为你得到以下内容。

    F ^( - 1)(y)= arccos(log((exp(k)-exp(-k))* y)/ K)

  • 在区间[0,1]上均匀分布绘制y1,y2,y3,y4 ......

  • 现在,数字F ^( - 1)(y1),F ^( - 1)(y2),F ^( - 1)(y3),F ^( - 1)(y4)将根据费希尔分布图分发..

答案 1 :(得分:2)

该算法在N.I.Fisher,T.Lewis和B.J.Embleton的“球形数据的统计分析”的第59页上。我强烈推荐这本书 - 它将帮助你理解数学。

以下将产生以北极为中心的随机Fisher分布位置。如果您希望它们随机居中,那么您可以在球体上生成其他均匀的随机位置,并将这些位置旋转到这些位置的中心位置。如果您不确定这些步骤,请参阅上述书籍。此Fortran代码片段使用随机数生成器生成从0到1的均匀偏差。

  lambda = exp (-2.0 * kappa)
  term1 = get_uniform_random () * (1.0 - lambda) + lambda
  CoLat = 2.0 * asin ( sqrt ( -log (term1) / (2.0 * kappa) ) )
  Long = 2.0 * PI * get_uniform_random ()