Variance estimate for Student's t-distribution with heavy tails The variance of a Student's t random variable when the degrees of freedom $\nu$ is greater than $2$ is $\nu/(\nu-2)$. In R, when I try to estimate the variance using the usual estimator $$1/(n-1)\sum_{i=1}^n (x_i-\overline{x})^2$$, the estimates seem biased, when $\nu$ is close-ish to 2, like $\nu=2.2$. Here is my code and the output:
nu <- 2.2
sim <- sapply(round(seq(1e6, 5e6, len=10)), 
        function(n)replicate(10, var(rt(n, 
          nu)) - nu/(nu-2)))
matplot(t(sim), pch=1, col=1)
abline(h=0)


The estimated variance looks too small compared to the true variance. Is this

*

*my sample sizes (up to 5 million) are still too small for the consistency to show for degrees of freedom this close to 2,


*the sample variance estimator actually isn't consistent for these values of $\nu$,


*something else?

The distribution has a few large values. You don't see them when you plot only a hundred as in your example.
The example below shows more clearly that you get a mode that is unequal to zero but you do not necessarily have a mean unequal to zero.
set.seed(1)
nu <- 2.2
sim <- sapply(round(seq(1e4, 1e4, 
        len=10000)), function(n) 
         replicate(10, var(rt(n, nu)) - 
          nu/(nu-2)))

matplot(t(sim),pch=21,col=1, bg = 1, 
  cex = 0.5)
abline(h=0)

hist(sim, breaks = seq(min(sim-1), 
     max(sim+1), 0.25), xlim = c(-7,30))

mean(sim)
### the mean of this sample will equal 
### 2.297499, which is *above* zero


