Функция вероятности хи-квадрат в C ++ - PullRequest
3 голосов
/ 28 апреля 2009

Следующий мой код вычисляет доверительный интервал, используя «квантиль» Хи-квадрата и функцию вероятности из 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;         
}

Ответы [ 3 ]

2 голосов
/ 05 мая 2009

Если вы ищете исходный код, который вы можете скопировать / вставить, вот несколько ссылок:

YMMV ...

2 голосов
/ 08 июля 2015

Я пытаюсь реализовать эту функцию, чтобы избежать зависимости от Boost.

Другой вариант - уменьшить Увеличить зависимости, но не избегать их. Если вы уменьшите зависимость, вы сможете использовать папку Boost, скажем, с 200 или 300 исходными файлами, а не со всем более 1 ГБ материала. (Да, 200 или 300 могут быть точными - это то, что я получал при копировании shared_ptr).

Чтобы уменьшить зависимость, используйте bcp (ускоренное копирование) , чтобы скопировать только файлы, необходимые для chi_squared.hpp. Плохо то, что вам обычно приходится собирать bcp из источников, потому что он не распространяется в ZIP или TARBALLs.

Чтобы найти инструкции по сборке bcp, см. Как оформить последнюю стабильную версию Boost (без разработки или передового фронта)?

2 голосов
/ 28 апреля 2009

Взгляните на научную библиотеку Gnu . Или посмотрите Численные рецепты . Существует также версия Java в Apache Commons Math , которая должна быть проста для перевода.

...