Boost logo

Boost Users :

Subject: Re: [Boost-users] quantil
From: Philipp Kraus (philipp.kraus_at_[hidden])
Date: 2013-06-11 06:02:39


On 2013-06-11 10:33:14 +0200, sguazt said:

>
>
>
> On Mon, Jun 10, 2013 at 10:56 PM, Philipp Kraus
> <philipp.kraus_at_[hidden]> wrote:
> On 2013-06-10 21:44:21 +0200, sguazt said:
>
>
>
>
> On Mon, Jun 10, 2013 at 9:13 PM, Philipp Kraus
> <philipp.kraus_at_[hidden]> wrote:
> On 2013-06-10 20:58:40 +0200, sguazt said:
>
>
>
> On Mon, Jun 10, 2013 at 4:22 PM, Philipp Kraus
> <philipp.kraus_at_[hidden]> wrote:
> Hello,
>
> I would like to create a box plot and use the static calls of the
> boost. Median / average etc works well, but I need also the 25% & 75%
> quantil of my data, I'm using a
> boost::accumulators::accumulator_set for calculating statistical data.
> Can I / How can I use this for the quantil calculation or should I do
> this myself?
>
> Thanks
>
> Phil
>
> Hi,
>
> Have you tried p_square_quantile from boost::accumulator?
>
> http://www.boost.org/doc/libs/1_53_0/doc/html/accumulators/user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.p_square_quantile
>
>
> It uses a well-known algorithm to incrementally compute quantile estimation.
>
> Great thanks, I don't see this section. But another question: I have
> defined my accumulator like
>                typedef boost::accumulators::accumulator_set<double,
> boost::accumulators::stats<
>                    boost::accumulators::tag::count,
>                    boost::accumulators::tag::sum,
>                    boost::accumulators::tag::median,
>                    boost::accumulators::tag::mean,
>                    boost::accumulators::tag::variance,
>                    boost::accumulators::tag::min,
>                    boost::accumulators::tag::max,
>                    boost::accumulators::tag::p_square_quantile
>                > > Accumulator;
>
> Within the example the quantil value is set in the Ctor of the
> accumulator. In my case I need two quantiles
> 0.25 & 0.75 so I need two p_square_quantile parts in my accu, so how I
> can add the two quantils and how I
> can set it to the values?
>
>
> You can use the extended_p_square_quantile ;)
>
> See the example here:
>
> http://www.boost.org/doc/libs/1_53_0/doc/html/accumulators/user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.extended_p_square_quantile
>
>
> Thanks, but I can not create a working example and I can not compile
> the example code on the page.
> I have set up my typedef to:
>                 typedef boost::accumulators::accumulator_set<double,
> boost::accumulators::stats< 
>                     boost::accumulators::tag::count,
>                     boost::accumulators::tag::sum,
>                     boost::accumulators::tag::median, 
>                     boost::accumulators::tag::mean, 
>                     boost::accumulators::tag::variance,
>                     boost::accumulators::tag::min,
>                     boost::accumulators::tag::max,
>                     boost::accumulators::tag::extended_p_square
>                 > > Accumulator;
> and try to create the ctor call with
>
> boost::array<double> probs = {0.25, 0.75};
> x = Accumulator(
> boost::accumulators::tag::extended_p_square::probabilities = probs );
>
> I get the error:
> error: wrong number of template arguments (1, should be 2)
> /Boost/1.53.0/include/boost/fusion/support/tag_of.hpp:24: error:
> provided for 'template<class T, long unsigned int N> class boost::array'
> error: invalid type in declaration before '=' token
> error: scalar object 'probs' requires one element in initializer
>
> I don't see my mistake at the moment. Thanks a lot for your help, this
> calls seems to be the correct parameter for creating the whisker on a
> box plot.
>
> I think the error refers to boost::array which needs an additional
> parameter representing the (fixed) sized of the array.
>
> Also, you can replace tag::median with the calculation of 0.50th quantile:
>
> using namespace boost::accumulators;
>
> typedef accumulator_set<double,
>                         stats<tag::count,
>                               tag::sum,
>                               tag::mean,
>                               tag::extended_p_square_quantile> > accumulator_t;
>
>
> int main()
> {
>     boost::array<double,3> probs = {0.25, 0.50, 0.75};
>
>     accumulator_t acc(extended_p_square_probabilities = probs);
> }
>
> I got compilation errors if I add tag::variance, tag::min and tag::max.
> Unfortunately, I don't know how to solve it. Sorry
>
> In the meanwhile, you can always keep two separate accumulators.

I try this with boost 1.53, f I try to create my accumulator with
(disable all except the quantil) and call

boost::array<double, 3> probs = {0.25, 0.5, 0.75};
m_times[p_name] = Accumulator(
boost::accumulators::extended_p_square_probabilities = probs );

I got

/Developer/opt/Boost/1.53.0/include/boost/accumulators/statistics/extended_p_square.hpp:91:
error: no match for 'operator[]' in
'args[boost::accumulators::<unnamed>::extended_p_square_probabilities]'
/Developer/opt/Boost/1.53.0/include/boost/parameter/aux_/arg_list.hpp:346:
note: candidates are: typename boost::mpl::eval_if<typename
boost::parameter::aux::is_maybe<typename TaggedArg::value_type>::type,
boost::parameter::aux::get_reference<typename TaggedArg::value_type>,
boost::parameter::aux::get_reference<TaggedArg> >::type
boost::parameter::aux::arg_list<TaggedArg, Next>::operator[](const
boost::parameter::keyword<typename TaggedArg::key_type>&) const [with
TaggedArg =
boost::parameter::aux::tagged_argument<boost::accumulators::tag::accumulator,
boost::accumulators::accumulator_set<double,
boost::accumulators::stats<boost::accumulators::tag::count,
boost::accumulators::tag::extended_p_square, mpl_::na, mpl_::na,
mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na,
mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na,
mpl_::na, mpl_::na>, void> >, Next =
boost::parameter::aux::empty_arg_list]

Phil



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net