/**
* Register basic running statics for values in $valuesKeyedBy consolidating/totalizing by $consolidateByKeys
*
* @requires ia\Math\Stats.php
*
* @author Raul Santos
* @license MIT
* @copyright 2017
* @version 1.0.3
*//**
*
* @param array $consolidateByKeys ['totalsBy_1','subtotalsBy_2',...]
* @param array $valuesKeyedBy Keys for values to generate totals & subtotals ['value_1',...]
* @param integer $decimals 2
* @param integer $exceptions How to manage missing, null, N/A & not numeric. ia\Math\Stats::MISSING_ ia\Math\Stats::NA_ default Asume set to 0.00
* @return void
*//**
* Add Data from an array of datapoints
*
* @param array $arrayOfDataPoints [['totalsBy_1','totalsBy_2',...,'value_1',...], ...]
* @return void
*//**
* Add one Data point to the dataset
*
* @param array $dataPoint ['totalsBy_1','totalsBy_2',...,'value_1',...]
* @return void
*//**
* Get desired statistic by stat name ia\Math\Stats:STAT_*
*
* @param string $statName ia\Math\Stats:STAT_* min,avg,max,variance,stdDev, skewness, kurtosis, coefficient of variation (cv)
* @return array ["totalsBy_1\ttotalsBy_2"=>['totalsBy_1', 'totalsBy_2', ..., 'values_1']=>statValue, ...]
*//**
* Get desired statistic by stat name ia\Math\Stats:STAT_* in heirarchy
*
* @param string $statName ia\Math\Stats:STAT_* min,avg,max,variance,stdDev, skewness, kurtosis, coefficient of variation (cv)
* @return @return array ['totalsBy_1'=>['totalsBy_2'=>'values_1']=>statNameValue, ...]
*//**
* All basic stats by total/subtotal as sub-array by value key
*
* @return array [ "totalsBy_1\ttotalsBy_2"=>['totalsBy_1', 'totalsBy_2', ..., 'values_1'=>['min'=>1,'avg'=>2,...] ...], ]
*//**
* Get all statistics as STATNAME_value_1=>1
*
* @return array ["totalsBy_1\ttotalsBy_2"=>['totalsBy_1', 'totalsBy_2', ..., 'MIN_values_1'=>1, 'MIN_avg_1'=>1, ...],... ]
*//**
*
* @return array ['totalsBy_1'=>['totalsBy_2'=>'values_1']=>[min=>1,avg=>2,...]]
*/| One level | ||
$vals = [
['by'=>'a', 'val'=>1],
['by'=>'a', 'val'=>2],
['by'=>'a', 'val'=>3],
['by'=>'b', 'val'=>10],
['by'=>'b', 'val'=>20],
['by'=>'b', 'val'=>30],
];
$statsTotal = new StatsTotalIt(['by'],['val']);
$statsTotal->arrayAdd($vals);
$totals = $statsTotal->get_basicStats();
print_r($totals);
|
Array
(
[a] => Array
(
[0] => a
[val] => Array
(
[min] => 1
[avg] => 2.00
[max] => 3
[count] => 3
[sum] => 6
[variance] => 1.00
[stdDev] => 1.00
[cv] => 50.00
[skewness] => 0.00
[kurtosis] => -1.52
)
)
[b] => Array
(
[0] => b
[val] => Array
(
[min] => 10
[avg] => 20.00
[max] => 30
[count] => 3
[sum] => 60
[variance] => 100.00
[stdDev] => 10.00
[cv] => 50.00
[skewness] => 0.00
[kurtosis] => -1.50
)
)
)
|
$totals = $statsTotal->get_basicStatsHeirarchy();
Array
(
[a] => Array
(
[val] => Array
(
[min] => 1
[avg] => 2.00
[max] => 3
[count] => 3
[sum] => 6
[variance] => 1.00
[stdDev] => 1.00
[cv] => 50.00
[skewness] => 0.00
[kurtosis] => -1.52
)
)
[b] => Array
(
[val] => Array
(
[min] => 10
[avg] => 20.00
[max] => 30
[count] => 3
[sum] => 60
[variance] => 100.00
[stdDev] => 10.00
[cv] => 50.00
[skewness] => 0.00
[kurtosis] => -1.50
)
)
)
|
| Two levels | ||
$vals = [
['by'=>'a', 'sub'=>'a1', 'val'=>1],
['by'=>'a', 'sub'=>'a1', 'val'=>2],
['by'=>'a', 'sub'=>'a1', 'val'=>3],
['by'=>'b', 'sub'=>'b10', 'val'=>10],
['by'=>'b', 'sub'=>'b10', 'val'=>20],
['by'=>'b', 'sub'=>'b10', 'val'=>30],
];
$statsTotal = new StatsTotalIt(['by','sub'],['val']);
$statsTotal->arrayAdd($vals);
$totals = $statsTotal->get_basicStats();
print_r($totals);
|
Array
(
[a a1] => Array
(
[0] => a
[1] => a1
[val] => Array
(
[min] => 1
[avg] => 2.00
[max] => 3
[count] => 3
[sum] => 6
[variance] => 1.00
[stdDev] => 1.00
[cv] => 50.00
[skewness] => 0.00
[kurtosis] => -1.52
)
)
[b b10] => Array
(
[0] => b
[1] => b10
[val] => Array
(
[min] => 10
[avg] => 20.00
[max] => 30
[count] => 3
[sum] => 60
[variance] => 100.00
[stdDev] => 10.00
[cv] => 50.00
[skewness] => 0.00
[kurtosis] => -1.50
)
)
)
|
$totals = $statsTotal->get_basicStatsHeirarchy();
Array
(
[a] => Array
(
[a1] => Array
(
[val] => Array
(
[min] => 1
[avg] => 2.00
[max] => 3
[count] => 3
[sum] => 6
[variance] => 1.00
[stdDev] => 1.00
[cv] => 50.00
[skewness] => 0.00
[kurtosis] => -1.52
)
)
)
[b] => Array
(
[b10] => Array
(
[val] => Array
(
[min] => 10
[avg] => 20.00
[max] => 30
[count] => 3
[sum] => 60
[variance] => 100.00
[stdDev] => 10.00
[cv] => 50.00
[skewness] => 0.00
[kurtosis] => -1.50
)
)
)
)
|
| Get 1 stat | ||
$sum = $statsTotal->get_stat(Stats::STAT_SUM);
* result always in 'val'=>r
* see Stats::STAT_*
STAT_MIN, STAT_AVG, STAT_MAX, STAT_COUNT, STAT_SUM,
STAT_VARIANCE, STAT_STDDEV, STAT_CV, STAT_SKEWNESS, STAT_KURTOSIS
|
Array
(
[a a1] => Array
(
[0] => a
[1] => a1
[val] => 6
)
[b b10] => Array
(
[0] => b
[1] => b10
[val] => 60
)
)
|
$totals = $statsTotal->get_statHeirarchy(Stats::STAT_SUM);
Array
(
[a] => Array
(
[a1] => Array
(
[val] => 6
)
)
[b] => Array
(
[b10] => Array
(
[val] => 60
)
)
)
|
Disclaimer: Auto generated file. Please help us setting parameters to useful values and extending the examples.
/**
*
* @param array $consolidateByKeys ['totalsBy_1','subtotalsBy_2',...]
* @param array $valuesKeyedBy Keys for values to generate totals & subtotals ['value_1',...]
* @param integer $decimals 2
* @param integer $exceptions How to manage missing, null, N/A & not numeric. ia\Math\Stats::MISSING_ ia\Math\Stats::NA_ default Asume set to 0.00
* @return void
*/
/*
$statsTotalIt = new StatsTotalIt(array $consolidateByKeys, array $valuesKeyedBy, integer $decimals = 2, integer $exceptions = 8);
*/
$statsTotalIt = new StatsTotalIt(['a' => '1', 'b' => '2', 'c' => 3], ['a' => '1', 'b' => '2', 'c' => 3]);
|