嘿伙计们,我正在尝试使用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?
答案 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,使其标准正常。
我希望这能澄清情况。如果没有,我早上又在这里。