2009-04-28 9 views
2

Le code suivant permet de calculer l'intervalle de confiance en utilisant le 'quantile' et la fonction de probabilité de Chi-square de Boost. J'essaye d'implémenter cette fonction pour éviter la dépendance à Boost. Y a-t-il une ressource où puis-je trouver une telle mise en œuvre?Fonction de probabilités Chi-Squared en C++

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

[Comment calculer le Chi-Squared P-Value] (http://www.codeproject.com/Articles/432194/How-to-Calculate-the -Chi-Squared-P-Value) sur le projet de code. Il est arrivé quelques années après que vous ayez posé la question, cependant. – jww

Répondre

3

Si vous cherchez code source, vous pouvez copier/coller, voici quelques liens:

YMMV ...

1

J'essaye d'implémenter cette fonction pour éviter la dépendance à Boost.

Une autre option consiste à réduire dépendances Boost, mais pas éviter eux. Si vous réduisez la dépendance, vous pouvez utiliser un dossier Boost avec dis, 200 ou 300 fichiers sources plutôt que l'intégralité de 1 Go ou plus de matériel. (Oui, 200 ou 300 peut être précis - c'est ce que j'ai fini avec lors de la copie shared_ptr). Pour réduire la dépendance, utilisez bcp (boost copy) pour copier uniquement les fichiers nécessaires pour chi_squared.hpp. La mauvaise chose est, vous devez généralement construire bcp à partir de sources, car il n'est pas distribué dans les ZIP ou TARBALLs.

Pour trouver des instructions sur la construction bcp, voir How to checkout latest stable Boost (not development or bleeding edge)?