如何在C++中计算probit

5
我正在将一些SAS代码转换为C++,但目前卡在如何计算probit函数上。
我相信我已经找到了probit公式(http://en.wikipedia.org/wiki/Probit),但我的统计知识有点生疏。所以基本上我需要有人将它转换为C ++,或者告诉我是否有另一个名称下的相同方法。

1
我相信Boost已经内建了你要寻找的东西(请参见这里:http://www.boost.org/doc/libs/1_53_0/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/normal_example/normal_misc.html以查看一个完整的示例)。 - NQZ
这将用于移动应用程序(安卓和iPhone)。Boost库似乎相当庞大。 - Daniel Ryan
1个回答

6

使用boost数学库和维基百科文章中找到的probit定义,我得出了以下结论。这里不提供任何保证 :-)

#include <boost/math/special_functions/erf.hpp>

namespace bm = boost::math;

template<typename T>
T probit(T p)
{
    T root_2 = sqrt(2);

    return root_2 * bm::erf_inv(2*p-1);
}

int main()
{
    double val = 0.9;
    double res = probit(val);
}

这将用于移动应用程序(Android和iPhone)。Boost库似乎非常大,嗯... - Daniel Ryan
1
你不需要整个库 - 它非常模块化。只需静态链接到你需要的函数,就可以显著限制损害。 - Peter R
好的,太棒了。我会去看一下的。 - Daniel Ryan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接