Is $s^2$ a good estimator?

I'm studying multivariate statistical analysis this semester.

In our text book, the author said that " A measure of spread is provided by the sample variance, defined for $n$ measurements on the first variable as $$s_{1}^2=\frac{1}{n}\sum_{j=1}^{n}(x_{j1}-\bar{x}_{1})^2$$

According to the formula, I don't think $s^2$ is a good estimator. The reason is simple: $s^2$ is too sensitive while we have collected outliers. Hence in some situations $s^2$ can not "as a measure of spread".

My question:

1. Am I correct?
2. Is there any study materials related to this topic?
3. Why we use $s_{1}^2=\frac{1}{n}\sum_{j=1}^{n}(x_{j1}-\bar{x}_{1})^2$ as a estimator?
• Why do you equate "measure" with "estimator"? "Measure" indicates the author is using $s^2$ to describe the data, not to estimate any underlying parameters.
– whuber
Nov 12 '12 at 17:24
• @whuber Thanks for pointing out my misunderstood about the concept. Could you please expand your comment into a formal answer? Thanks for your sharing : ) Nov 13 '12 at 3:13

$s^2$ is certainly affected by outliers. That doesn't make it a bad measure of spread, nor does it make it a good measure of spread, it just makes it one that is strongly influenced by outliers. There are many estimators of spread that are less influenced by outliers - e.g median absolute deviation or interquartile range. That doesn't mean they are good or bad, it means they are less influenced by outliers.

Suppose you are measuring the income of different communities. Income tends to have strong positive skew and outliers. Do you want your measure of spread to be influenced by these? It depends on your purpose.

If you want to use $s^2$ as an estimator of the spread then you are correct that is is sensitive to outliers. If you want to read more about problems with $s^2$ I can recommend the book by Wilcox(2010). A robust alternative to $s^2$ is to use the median absolute deviation which is easily calculated and implemented in many statistics packages, for example in R:

x <- rnorm(n=9999, mean=0, sd=5) # generating random numbers with sd = 5
x <- c(x, rnorm(99, mean=0, sd=100)) # adding some "outliers"
sd(x) # gives an inflated estimate
## 11.11066