Math 从Fisher分布中提取随机值

Math 从Fisher分布中提取随机值,math,statistics,geometry,fortran,computational-geometry,Math,Statistics,Geometry,Fortran,Computational Geometry,在我的研究中,我正在生成离散平面,用于表示岩石中的裂缝。断裂面的方向由其倾角和倾角方向确定。知道了这一点,我也知道每个平面的法向量的分量 到目前为止,我一直在独立于正态分布绘制倾角和倾角方向。这是可以的,但我想添加从Fisher分布中提取的功能 描述了fisher分布 基本上,我希望能够指定平均倾角和倾角方向(或平均向量)以及“fisher常数”或分散因子k,并从该方向分布中随机抽取值。 附加信息:看起来“冯·米塞斯·费舍尔分布”要么与我所说的“费舍尔分布”相同,要么有某种关联。有关Von M

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

到目前为止,我一直在独立于正态分布绘制倾角和倾角方向。这是可以的,但我想添加从Fisher分布中提取的功能

描述了fisher分布

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

附加信息:看起来“冯·米塞斯·费舍尔分布”要么与我所说的“费舍尔分布”相同,要么有某种关联。有关Von Mises Fisher分布的一些信息:

正如你所看到的,我做了一些调查,但我承认我不完全理解数学。我觉得我很接近,但我还没完全明白。。。非常感谢您的帮助


如果有帮助的话,我的程序是用FORTRAN编写的。

我想你可以手工计算

  • 积分Fisher分布的密度函数,得到累积分布函数

    F(θ)=exp(K cos(θ))/(exp(K)-exp(-K))

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

    F(θ)=yf^(-1)(y)=θ

  • 我想你会得到以下信息

    F^(-1)(y)=arccos(对数((exp(k)-exp(-k))*y)/k)

  • 绘制y1、y2、y3、y4。。。从区间[0,1]上的均匀分布

  • 现在,数字F^(-1)(y1)、F^(-1)(y2)、F^(-1)(y3)、F^(-1)(y4)将根据Fisher分布进行分布


我认为你可以手工计算

  • 积分Fisher分布的密度函数,得到累积分布函数

    F(θ)=exp(K cos(θ))/(exp(K)-exp(-K))

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

    F(θ)=yf^(-1)(y)=θ

  • 我想你会得到以下信息

    F^(-1)(y)=arccos(对数((exp(k)-exp(-k))*y)/k)

  • 绘制y1、y2、y3、y4。。。从区间[0,1]上的均匀分布

  • 现在,数字F^(-1)(y1)、F^(-1)(y2)、F^(-1)(y3)、F^(-1)(y4)将根据Fisher分布进行分布


该算法位于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 ()

该算法在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 ()

许多关于取样的问题已经出现在网站上。短版本:反转CDF或拒绝。现有问题:。这些都不是用Fortran语言编写的,但数学计算总是一样的。请看一下这两个关于方向数据的参考。《圆形数据的统计分析》,剑桥大学出版社,1993年。ISBN 0-521-35018-2美国新泽西州费希尔市,路易斯安那州,恩布尔顿市。《球面数据的统计分析》,剑桥大学出版社,1993年。ISBN 0-521-45699-1我想有一件事我不明白:在我提供的链接中,分布是以θ为单位的。所以基本上分布是一维的,所以我不太明白它在3D中是如何工作的?例如,我可以模拟一些θ值,但这会指定一个围绕平均向量的环,而不是一个实际点。对不起,问题的Fortran部分在哪里?这似乎是一个“为我做家庭作业”(虽然家庭作业可能比我们这里的平均作业更有趣)类型的问题。顺便说一句,Fisher分布特别是三维的,但von Mises Fisher分布被推广到任意数量的维度。许多关于抽样的问题已经在网站上了。短版本:反转CDF或拒绝。现有问题:。这些都不是用Fortran语言编写的,但数学计算总是一样的。请看一下这两个关于方向数据的参考。《圆形数据的统计分析》,剑桥大学出版社,1993年。ISBN 0-521-35018-2美国新泽西州费希尔市,路易斯安那州,恩布尔顿市。《球面数据的统计分析》,剑桥大学出版社,1993年。ISBN 0-521-45699-1我想有一件事我不明白:在我提供的链接中,分布是以θ为单位的。所以基本上分布是一维的,所以我不太明白它在3D中是如何工作的?例如,我可以模拟一些θ值,但这会指定一个围绕平均向量的环,而不是一个实际点。对不起,问题的Fortran部分在哪里?这