Per uno non eri con l'indicazione dell'header per kurtosis
:
#include <boost/accumulators/statistics/kurtosis.hpp>
Anche se l'avete fatto, come si vede non funziona con un dritto vector
, quello che probabilmente vuole fare è utilizzare un accumulator_set
e più intestazioni pure.
Ecco un esempio minimo utilizzando accumulator_set
, questo mostra un due metodi per risolvere il problema:
#include <boost/math/distributions.hpp>
#include <boost/accumulators/accumulators.hpp>
#include <boost/accumulators/statistics/stats.hpp>
#include <boost/accumulators/statistics/mean.hpp>
#include <boost/accumulators/statistics/variance.hpp>
#include <boost/accumulators/statistics/kurtosis.hpp>
#include <iostream>
#include <vector>
using namespace boost::accumulators;
int main()
{
accumulator_set<double, stats<tag::mean, tag::kurtosis > > acc;
accumulator_set<double, stats<tag::mean, tag::kurtosis > > acc2;
acc(2) ;
acc(3) ;
acc(4) ;
std::cout << mean(acc) << " " << kurtosis(acc) << std::endl ;
std::vector<double> v1 ;
v1.push_back(2);
v1.push_back(3);
v1.push_back(4);
acc2 = std::for_each(v1.begin(), v1.end(), acc2) ;
std::cout << mean(acc2) << " " << kurtosis(acc2) << std::endl ;
}
Ecco un link alla Accumulators Framework
User's Guide. Questa guida ha alcuni buoni esempi.
Questo precedente thread ha trovato un modo per utilizzare vector
, anche se non è affatto lineare e non ho potuto farlo funzionare.
fonte
2013-03-05 14:49:45
Se non viene compilato, inserire l'errore del compilatore – mathematician1975
La funzione è in un altro spazio dei nomi, è necessario utilizzare 'boost :: some :: namespace :: kurtosis (a)'. Sostituisci 'some :: namespace' con lo spazio dei nomi effettivo (che non so). –
Disclaimer: Non ne so abbastanza del dominio del problema per essere assolutamente sicuro di quello che sto dicendo. La mia ipotesi è che gli algoritmi in funzionano solo con [distribuzioni predefinite parametrizzate] (http://www.boost.org/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref /dists.html). Un'alternativa che utilizza i set di dati potrebbe essere [Boost.Accumulators] (http://www.boost.org/libs/accumulators). [Qui] (http://liveworkspace.org/code/2cDjQ9$0) è un esempio. –