【问题标题】:Trying to use Cumulative Distribution Function in GSL尝试在 GSL 中使用累积分布函数
【发布时间】:2011-03-10 04:39:18
【问题描述】:

大家好,我正在尝试使用 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?

【问题讨论】:

  • 但是 GSL 是 GNU 科学图书馆而不是统计数据

标签: c math statistics gsl


【解决方案1】:

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

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

【讨论】:

【解决方案2】:

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

【讨论】:

    【解决方案3】:

    泰勒,

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

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

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

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

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

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

    【讨论】:

    • 酷,谢谢。我已经摆脱了这个问题,但我相信这些信息会对其他人有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2015-04-27
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 2014-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多