 # Statistics

## Overview #

Talking about data, we also talk about statistics because we learn about data through statistics. The `Statistics` package allows you to compute basic and advanced statistical measures for columns of your data. The basic measures could be `min`, `max`, `mean`, `median`, etc. The advanced measures are, for example, `lowerQuartile`, `popStdDeviation` and others.

## Installation #

2. Unzip the zip file
3. Copy the folder `statistics` into `koolreport` folder so that look like below
``````koolreport
├── core
├── statistics
``````

#### By composer #

``````composer require koolreport/statistics
``````

## Quick start #

In your report's setup page, use the process `\koolreport\statistics\Statistics` with an array parameter in the type of '{{statistical measure}}' => '{{array of column names}}'

``````<?php
//MyReport.php
use \koolreport\statistics\Statistics;

class MyReport extends \koolreport\KoolReport
{
...
function setup()
{
\$this->src('sales')
->pipe(new Statistics(array(
'min' => array('2003'),
'max' => array('2003'),
'mean' => array('2003', '2004'),
'median' => array('2003', '2004', '{{all}}'),
'lowerQuartile' => array('2005'),
'upperQuartile' => array('2005'),
'meanDeviation' => array('{{all}}'),
'stdDeviation' => array('{{all}}'),
'percentile_10' => array('{{all}}'),
'percentile_90' => array('{{all}}'),
)))
->pipe(\$this->dataStore('salesYearMonthStatistics'));
}
}
``````

Then in your view, you could use the utility StatisticsReader to extract the measures:

``````<?php
//MyReport.view.php:

echo \$stats['min']['2003'];
echo \$stats['median']['2004'];
echo \$stats['percentile_90']['{{all}}'];
?>
``````

## Properties #

The package supports the following statistical measures:

namedescription
`min`Returns the first minimum value of a data series.
`max`Returns the first maximum value of a data series.
`mode`Returns the first most common value of a data series.
`mean`Returns the average value of a data series.
`median`Returns the middle value that divides a data series into 2 equal halves when ordering.
`lowerQuartile`Returns the first quartile of the quartiles that divides a data series into 4 equal group when ordering. The second quartile is the median.
`upperQuartile`Returns the third quartile.
`percentile_X`Returns the value that X percentage of a data series fall below when ordering. X is an integer from 0 to 100.
`meanDeviation`Returns the mean absolute deviation value of a data series in the formula of Sum of absolute(elementValue - mean) / length of data series.
`popStdDeviation`Returns the population standard deviation value of a data series in the formula of Square root of (sum of square(elementValue - mean) / length of data series).
`samStdDeviation`Returns the sample standard deviation value of a data series in the formula of Square root of (sum of square(elementValue - mean) / (length of data series - 1)).

### Get started with KoolReport

KoolReport will help you to construct good php data report by gathering your data from multiple sources, transforming them into valuable insights, and finally visualizing them in stunning charts and graphs.