To get an idea of the shape of data, we can’t use Mean, Median or Mode.

Instead the Measurements of Dispersion are used, which are done with the following functions:

- Range
- Standard Deviation
- Variance

## Range

Simply this is the literal range, if we were measuring heights of a sample of men, the data might be:

`6.5, 6.0, 5.2, 5.0, 5.5, 5.6, 6.2, 5.4`

In the sample above that would be the max value of 6.5 minus the minimum value of 5.0.

To quickly get the min. and max. values from a dataset in Python:

```
import numpy as np
np.min([6.5, 6.0, 5.2, 5.0, 5.5, 5.6, 6.2, 5.4])
np.max([6.5, 6.0, 5.2, 5.0, 5.5, 5.6, 6.2, 5.4])
```

## Standard Deviation

The Standard Deviation gives a square root of the sample variance (see below.)

The standard deviation is calculated by taking the **Square Root** of the **Sum** of (x – the **sample mean**)^2 / n (**sample size**) – 1.

In **Python**, using **NumPy**, we can calculate the **standard deviation**

(**Note**: the calculation of standard deviation in NumPy does not default to n-1, but rather N, meaning the **population** size, not a sample size):

`np.std([6.5, 6.0, 5.2, 5.0, 5.5, 5.6, 6.2, 5.4]) # Population Std. Deviation`

To generate a standard deviation of the sample size (meaning divide by (n-1) instead of N), you use the following optional parameter in the method call:

`np.std([6.5, 6.0, 5.2, 5.0, 5.5, 5.6, 6.2, 5.4], ddof=1) # Sample Std. Deviation`

**Note**: If you use R instead of Python, the calculation for Standard Deviation uses Sample size, NOT Population size and is done as follows:

```
# Code from:
# https://stats.stackexchange.com/questions/25956/what-formula-is-used-for-standard-deviation-in-r
> #sd in R
> sd1 <- sd(x)
>
> #self-written sd
> sd2 <- sqrt(sum((x - mean(x))^2) / (n - 1))
>
> #comparison
> c(sd1, sd2) #:-)
```

## Variance

To calculate the variance we need to know the mean. The mean is used in the calculation. Variance is the sum of distances from the mean – which is calculated by summing the square of each point to the mean.

Var(X) = E[X-*μ*]^2

Remember that the *μ* is the population mean.

Using Python to calculate the variance can be done with the NumPy library like so:

```
import numpy as np
np.var([6.5, 6.0, 5.2, 5.0, 5.5, 5.6, 6.2, 5.4]) # Population Variance
np.var([6.5, 6.0, 5.2, 5.0, 5.5, 5.6, 6.2, 5.4], ddof=1) # Sample Variance
```

## Sample vs Population Variance

Sample variance takes the Sum of (x – sample mean) / n (sample size) -1

Population variance is the measure of the sum of (x – population mean) / N (population size)