(正規分布のレクチャーを先に見ることをおすすめします)
確率変数$x$が、平均$\mu$、標準偏差$\sigma$の正規分布に従うとき、$x$の$N$個の平均$\overline{X}$は、平均$\mu$、標準偏差$\frac{\sigma}{\sqrt{N}}$の正規分布に従います。これは、以下の様な新しい変数$z$を導入して、
$z$が標準正規分布(平均0、標準偏差1)に従うと言い換えることが出来ます。
しかし、母集団の平均$\mu$や標準偏差$\sigma$が分かっていることは稀なので、実際には、これらを推定量で代用します。平均値はそのまま計算すれば良いですが、分散の不偏推定量は、以下の式で求められます。$$\hat{\sigma}^{2} = \frac{1}{N-1}\sum_{i=1}^{N}(x_{i}-\overline{X})^{2}$$
ここで、あらたな変数$t$を導入してみます
$$t=\frac{\overline{X}-\mu}{\hat{\sigma}/\sqrt{N}}$$先ほどの$z$とよく似ていますが、このtは特にNが小さい(一般的には30未満)とき正規分布に従いません。では、どんな分布に従うかというと、$\nu=N-1$として、以下の様な分布に従います。
ただし: $$\varGamma(n)=(n-1)!$$ これはガンマ関数と呼ばれる関数です。
$N$が大きくなると、この分布は正規分布に漸近します。ですから、t分布はNが小さいときに、標本の平均が従う分布と考えることができます。 $\nu$は、t分布の自由度と呼ばれ、この値が決まれば分布が決まります。また、発見者ゴセットの最初の論文のペンネームから、スチューデント分布とよばれることもあります。
Pythonでt分布を扱ってみましょう。
import matplotlib.pyplot as plt
%matplotlib inline
# scipy.statsの中にt分布があります。
from scipy.stats import t
import numpy as np
# x軸の数字を用意します。
x = np.linspace(-5,5,100)
# 自由度3のt分布
rv = t(3)
# 確率密度関数(PDF)を書きます。
plt.plot(x, rv.pdf(x))