Chi-Squared Probability Function in C++

2019-03-31 13:22发布

The following code of mine computes the confidence interval using Chi-square's 'quantile' and probability function from Boost.

I am trying to implement this function as to avoid dependency to Boost. Is there any resource where can I find such implementation?

#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;         
}

3条回答
虎瘦雄心在
2楼-- · 2019-03-31 13:24

Have a look at the Gnu Scientific library. Or look in Numerical Recipes. There's also a Java version in Apache Commons Math, which should be straightforward to translate.

查看更多
我欲成王,谁敢阻挡
3楼-- · 2019-03-31 13:24

I am trying to implement this function as to avoid dependency to Boost.

Another option is to reduce Boost dependencies, but not avoid them. If you reduce the dependency, you might be able to use a Boost folder with say, 200 or 300 source files rather than the entire 1+ GB of material. (Yes, 200 or 300 can be accurate - its what I ended up with when copying out shared_ptr).

To reduce the dependency, use bcp (boost copy) to copy out just the files needed for chi_squared.hpp. The bad thing is, you usually have to build bcp from sources because its not distributed in the ZIPs or TARBALLs.

To find instructions on building bcp, see How to checkout latest stable Boost (not development or bleeding edge)?

查看更多
倾城 Initia
4楼-- · 2019-03-31 13:25

If you're looking for source code you can copy/paste, here are some links:

YMMV...

查看更多
登录 后发表回答