4

我的以下代码使用卡方的“分位数”和 Boost 的概率函数计算置信区间。

我正在尝试实现此功能以避免对 Boost 的依赖。有什么资源可以在哪里找到这样的实现?

#include <boost/math/distributions/chi_squared.hpp>
#include <boost/cstdint.hpp>

using namespace std;     
using boost::math::chi_squared; 
using boost::math::quantile;

vector <double> ConfidenceInterval(double x) {
    vector <double> ConfInts; 

    // x is an estimated value in which
    // we want to derive the confidence interval.

    chi_squared distl(2);     
    chi_squared distu((x+1)*2);

    double alpha = 0.90;      

    double lower_limit = 0;   

    if (x != 0) {
        chi_squared distl(x*2);   
        lower_limit = (quantile(distl,((1-alpha)/2)))/2;
    }

    double upper_limit = (quantile(distu,1-((1-alpha)/2)))/2;

    ConfInts.push_back(lower_limit);
    ConfInts.push_back(upper_limit);

    return ConfInts;         
}
4

3 回答 3

2

看看Gnu Scientific 图书馆。或查看数字食谱Apache Commons Math中还有一个 Java 版本,应该很容易翻译。

于 2009-04-28T03:09:52.180 回答
2

如果您正在寻找可以复制/粘贴的源代码,这里有一些链接:

YMMV...

于 2009-05-05T19:34:37.417 回答
2

我正在尝试实现此功能以避免对 Boost 的依赖。

另一种选择是减少Boost 依赖项,但不避免它们。如果您减少依赖关系,您可能可以使用包含Boost200 或 300 个源文件的文件夹,而不是整个 1+ GB 的材料。(是的,200 或 300 可能是准确的 - 这是我在复制时得到的结果shared_ptr)。

要减少依赖性,请使用bcp(boost copy)仅复制chi_squared.hpp. 坏事是,您通常必须bcp从源代码构建,因为它没有分布在 ZIP 或 TARBALL 中。

要查找有关构建的说明bcp,请参阅如何检查最新的稳定 Boost(不是开发或前沿)?

于 2015-07-08T13:18:37.700 回答