UP | HOME

Exercise 13

Variance of a vector

If we have a vector \(X\) containing \(n\) values, then the unbiased sample variance \(s^{2}\) is:

\begin{equation} s^{2} = \frac{1}{n-1} \sum_{i=1}^{n} \left( X_{i} - \bar{X} \right)^{2} \end{equation}

where \(\bar{X}\) is the mean of the vector.

In MATLAB, Python (NumPy) and R there are built-in functions for computing the variance of a vector. Conveniently, in all three languages the function is called var().

In MATLAB:

x = [2,1,5,4,8,3,4,3];
var(x)

ans =

    4.5000

In Python / NumPy: (started using ipython --pylab)

x = array([2,1,5,4,8,3,4,3], 'float')
var(x, ddof=1)
Out[2]: 4.5

Note above for the Python / NumPy function var() the default is for the function to compute the biased variance, that is, using a denominator equal to \(n\) not \(n-1\). To force the unbiased variance we have to pass the optional argument ddof and set it to 1.

In R:

x <- c(2,1,5,4,8,3,4,3)
var(x)
[1] 4.5

from scratch

Write a function called myvar() that computes the unbiased variance of a list of numbers. Do it from scratch, in other words don't use the built-in functions var() or mean().

solutions


Paul Gribble | fall 2014
This work is licensed under a Creative Commons Attribution 4.0 International License
Creative Commons License