尝试在GSL中使用累积分布函数

时间:2010-06-30 15:01:18

标签: c math statistics gsl

嘿伙计们,我正在尝试使用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?

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

泰勒,

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

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

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

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

一旦你有一个正常的累积分布,你可以将均值设为0,将方差设为1,使其标准正常。

我希望这能澄清情况。如果没有,我早上又在这里。