0

嘿伙计们,我正在尝试使用 GSL(Gnu 统计库)计算 C 中公式的标准正态分布的累积分布函数

我已经安装并包含了 gsl,但无法理解如何使用它。

我认为我需要的功能是:

double gsl_ran_lognormal (const gsl_rng * r, double zeta, double sigma)

我的公式只有一个数字,我会传递给 cdf 函数,所以我不太确定在这里做什么。(这可能是因为我对统计的理解很糟糕)

我将不胜感激,任何人都可以帮助我了解如何使用带有一个输入变量的 gsl 来获取 cdf。

文档只说:

此函数从对数正态分布中返回一个随机变量。分布函数为

p(x) dx = {1 \over x \sqrt{2 \pi \sigma^2} } \exp(-(\ln(x) - \zeta)^2/2 \sigma^2) dx

对于 x > 0。

基本上,有人能解释一下 gsl_rng、zeta 和 sigma 应该是什么吗?

编辑:好的,我认为 zeta 应该是 0(mu)而 sigma 应该是 1(std dev)才能使其正常?那正确吗?什么是 gsl_rng?

4

3 回答 3

2

泰勒,

我希望你的问题已经解决了。我自己不是编程大师,但我会尽力提供帮助。我认为有几点。

您需要的是gsl_cdf_gaussian_P。另一件事(gsl_ran_lognormal)不合适有两个原因。

1)它是一个随机数生成器,而不是累积分布。这意味着它会根据您的需要为您提供遵循特定分布的数字,而不是概率。

2)它指的是对数正态分布,而你想要正态分布。

一旦你有一个正态的、累积的分布,你可以将平均值设为 0,将方差设为统一,使其成为标准正态分布。

我希望这可以澄清情况。如果没有,我早上又来了。

于 2012-11-11T17:43:24.730 回答
2

gsl_rng是一个指向已初始化(和可能的自定义种子)随机数生成器的指针。

参见例如http://www.csse.uwa.edu.au/programming/gsl-1.0/gsl-ref_16.html

于 2010-06-30T15:20:18.533 回答
1

您的功能用于生成具有对数正态分布的随机数。如果您正在寻找累积分布,您需要查看 GSL 手册第 7.15 节的“特殊功能”部分。

于 2012-05-22T20:41:46.257 回答