上級マクロ経済学

補論 統計学の復習

Author

荻巣嘉高

1 推測統計へのイントロダクション

データを集めよ

データ分析をする際には、当然データを集める必要がある。

近年ではアンケート調査なども盛んだが、基本的には政府関係機関が調査した統計データを利用する。

基本的な経済データは一通りそろっているが、たいていはマクロデータと呼ばれるもの。

  • 経済全体での総計データ
  • プライバシー関連の問題が発生しにくい

データを集める際には、調査対象のプライバシー保護は必須。

特に、アンケート調査をする人は注意すべき。

母集団

例えば、日本の家計所得を調査したいとする。

すると、調査対象は日本の家計全体にわたる。

  • この調査対象全体の集団のことを母集団(population)と呼ぶ。

  • 母集団全体に対して調査を行うことを、全数調査と呼ぶ。

    • 国勢調査、経済センサス

標本

全数調査は莫大なお金がかかる。

多くの調査は、母集団から調査対象を選んで調査を行う。

  • この時の調査対象を標本(sample)と呼ぶ。
    • この講義では主にサンプルと呼ぶ。
  • 母集団から標本を抽出して調査を行うことを、標本調査と呼ぶ。
  • 標本の選び方は基本的に無作為抽出ランダムサンプリング)。
    • たまに調査対象をを絞った有意抽出というのも。

標本調査には、誤差(標本誤差)がつきもの。

  • 調査されたデータは、確率的に変化すると解釈される。

サンプルサイズとサンプル数

いま、ランダムサンプリングにより母集団から1000家計のサンプルを抽出するとしよう。

  • 1回目に抽出したサンプルをサンプル集団Aとしよう。
    • Aには、1000家計の所得が入っている。
  • 2回目に抽出したサンプルをサンプル集団Bとしよう。
    • Bには、1000家計の所得が入っている。

このとき、AとBには、同じ家計が入っているかもしれないし、そうでないかもしれない。

  • この時、A、Bのサンプル大きさ(sample size)はどちらも1000である。
  • 2回サンプルの抽出をしているので、サンプル数(number of samples)は2である。

妥当な推論をしたい

家計所得を調査するとき、母集団での平均は400万だとしよう。 (ただし、調査者はこれを知らない)

調査者はランダムサンプルされた2つのサンプル集団について、

  • Aの所得平均値を計算すると、380万円だった。
  • Bの所得平均値を計算すると、440万円だった。

さて、今回は母集団の平均値を当てたいとしよう。 このときのサンプルは前述の標本平均の2つ。

つまり、このケースでは、サンプルサイズが2であると考えられる。

  • サンプルをどう設計するかは、問いによる。

標本平均で推論する

妥当そうな計算方法はサンプルの平均をとることだろう。

\frac{380 + 440}{2} = 410 ~ 万円

母集団の平均(母平均)が400万ならば、サンプルC、サンプルD…とサンプルサイズを増やせば、平均値がこれに近くなっていきそう。

  • これが大数の法則の直観
  • より具体的には後で。

2 離散確率変数と確率分布

確率変数

確率的に様々な値を取りうる変数のこと。

離散確率変数

整数値のみを取るような確率変数

  • 質的変数を離散値で表すケースもある。
    • コインの裏を0、表を1とすれば、コイントスの結果も離散確率変数と捉えられる。

確率関数

離散確率変数Xが、次のように与えられているとする。 X = \left\{ \begin{aligned} &x_1 &\text{prob.}~ p_1\\ &x_2 &\text{prob.}~ p_2\\ &x_3 &\text{prob.}~ p_3\\ &\vdots &\\ &x_N &\text{prob.}~ p_N\\ \end{aligned} \right.

ただし、 \sum_{n=1}^N p_n = 1 かつ x_1 < x_2 < x_3 < \cdots < x_n である。 この関係を f_X(x_n) = \textrm{Pr}(X=x_n) = p_n と表し、確率関数あるいは確率質量関数と呼ぶ。

  • \textrm{Pr}(\cdot)は、(\cdot)が成立する確率。

累積分布関数

先の確率関数を用いると、Xx_n以下となるような確率を計算できる。 \begin{aligned} \textrm{Pr}(X\le x_n) &= f_X (x_1) + f_X (x_2) + \cdots + f_X (x_n) \\ &= \sum_{i=1}^n f_X (x_i) \end{aligned}

この関数を累積分布関数あるいは単に分布関数と呼び、 F_X(x_n) = \textrm{Pr}(X\le x_n) と表現する。

離散確率変数の代表値

  • 期待値\textrm{E}(X)あるいは\mu_X
  • 分散\textrm{Var}(X)あるいは\sigma_X^2
  • 標準偏差\sigma_X

E(X) = \mu_X = \sum_{n=1}^N x_n p_n = \sum_{n=1}^N x_n f(x_n)

\textrm{Var}(X) = \sigma_X^2 = \sum_{n=1}^N (x_n-\mu_X)^2 p_n = \sum_{n=1}^N (x_n-\mu_X)^2 f(x_n)

\sigma_X = \sqrt{\sigma_X^2} = \sqrt{\textrm{Var}(X)}

代表的な離散確率分布

ここでは

  • ベルヌーイ分布
  • 二項分布
  • ポアソン分布

を紹介する。

ベルヌーイ分布

結果が2通りのみの確率的試行をベルヌーイ試行と呼ぶ。

  • コイン投げなど

ベルヌーイ試行の結果を表す分布を、ベルヌーイ分布と呼ぶ。

ベルヌーイ分布は、確率関数が例えば次のように与えられる。

f(x) = \left\{ \begin{aligned} &p & \text{if}~ x = 1 \\ &1-p & \text{if}~ x = 0 \end{aligned}\right.

あるいは、次のようにも書ける。

f(x) = p^x (1-p)^{1-x}

期待値と分散は、 \textrm{E}(X) = p \textrm{Var}(X) = p(1-p)

二項分布

1を取る確率がpのベルヌーイ試行をn回繰り返したとしよう。 このとき、1がX回発生する確率が、二項分布に従う。 (Xは確率変数)

これをXが二項分布に従うといい、 X \sim \textrm{Bin} (n,p) と表す。

x \in {0,1,2,\cdots,n}であるとき、確率関数は、 f(x) = \binom{n}{x} p^x (1-p)^{n-x}

期待値と分散は、 \textrm{E}(X) = np \textrm{Var}(X)= np(1-p)

ポアソン分布

短期間ではあまり発生しないイベントがある一定期間で発生する回数を表すのがポアソン分布です。

  • 二項分布でnpを一定に保ちつつ、n\to \inftyp\to 0とするとポアソン分布を得られます。
    • すなわち、試行回数は膨大だが、発生する確率はごくごくわずかな事象の発生回数分布と考えてみてください。
  • 大地震の発生回数とかもポアソン分布に従うと考えられているらしい。

確率関数は、 f(x) = \frac{\lambda^x e^{-\lambda}}{x!}

期待値と分散は、 \textrm{E}(X) = \lambda \textrm{Var}(X) = \lambda

3 連続確率変数と確率分布

確率変数

連続確率変数

実数など、連続的な値を取るような確率変数

  • 非負の実数などもある。

離散の場合と違って、少し扱いがトリッキーになる。

確率密度関数

Xを確率変数としよう。

Xがどれほど出やすいかを表す関数を確率密度関数(あるいは単に密度関数)という。

確率密度関数は f_X(x) で表される。

  • 確率密度間数は、xが出る確率を表しているわけではない
  • 確率密度間数の下側の面積は、合計で1

等確率で[0,1]区間の値をとる場合

2025-09-12T20:15:56.114789 image/svg+xml Matplotlib v3.9.2, https://matplotlib.org/

X[0,1]の間の値を取り、[0,0.5]の値が(0.5,1]の3倍出やすいケース。

2025-09-12T20:15:56.162734 image/svg+xml Matplotlib v3.9.2, https://matplotlib.org/

無限と密度関数

X[0,1]区間の実数を確率で取る確率変数だとしよう。

  • [0,1]区間内のすべての実数は、同様の出やすさであるとします。

\textrm{Pr}(X=0.5)が出る確率はいくつだろうか?

\textrm{Pr}(X=0.5) = p>0 と仮定してみよう。

このとき、[0,1]区間の中でどの値が出るかの出やすさはどれも同じなので、Xが0.51、0.5111、0.51111などをとる確率も同様にpになる。

  • 実数x\in [0,1]は無限個存在するため、全ての場合を足し合わせると、確率の合計が無限になってしまう。
  • 確率の定義に反する。

したがって、p>0という仮定が誤りであるということになる。

  • Xがある一点x \in [0,1]を取る確率は0
    • 無限に出るxがあるなかで
    • X=0.5がジャストで出る確率は
    • 無限に小さい

直観的には、xが取りうる値の数をnとしたら、0.5を取るケースはそのうちの1ケースなので \lim_{n\to \infty} \frac{1}{n} = 0

面積で考える 

  • 1点の確率はゼロ
  • 面積にすれば確率が定義できそう。
    • そのために、確率密度関数の下側の面積が1になっている。

一様分布&\textrm{Pr} (X \le 0.3)のケースの例

\textrm{Pr} (X \le 0.3) を計算するためには、f_X(x)について、[0,0.3]区間の下側の面積を求めれば良い。

2025-09-12T20:15:56.216624 image/svg+xml Matplotlib v3.9.2, https://matplotlib.org/

累積分布関数

確率変数Xについて、あるx点よりも小さいXが出る確率を、累積分布関数(あるいは単に分布関数)として定義する。 F_X(x) = \textrm{Pr}(X\le x)

これは密度関数の下側の面積なので、密度関数を下限からxまで積分したもの。 つまり、

F_X(x) = \textrm{Pr} (X \le x) = \int_{-\infty}^{x} f_X(z) dz

2点間の確率

分布関数や密度関数を使うと、2点間の確率を求めることができる。

例えば、先と同様にX[0,1]区間の値を等確率で取る確率変数だとしよう。

a, b \in [0,1]かつa<bとして、X[a,b]の値を取る確率は、 \textrm{Pr}(a\le X \le b) = F_X(b) - F_X(a) = \int_{a}^{b} f_X(x) dx

a = 0.3, b=0.8の例

2025-09-12T20:15:56.270524 image/svg+xml Matplotlib v3.9.2, https://matplotlib.org/

連続確率変数の代表値

  • 期待値\textrm{E}(X)あるいはあるいは\mu_X
  • 分散\textrm{Var}(X)あるいは\sigma_X^2
  • 標準偏差\sigma_X

E(X) = \mu_X = \int_{-\infty}^{\infty} x f_X(x) dx

\textrm{Var}(X) = \sigma_X^2 = \int_{-\infty}^{\infty} (x-\mu_x)^2 f_X(x) dx

\sigma_X = \sqrt{\sigma_X^2} = \sqrt{\textrm{Var}(X)}

代表的な連続確率分布

ここでは

  • 一様分布
  • 正規分布

を紹介する。

ただし、

  • t分布
  • F分布
  • \chi^2分布

などの分布もぼちぼち使用頻度が高いので、統計分析をする人は名前くらい知っておいても良い。

一様分布

確率変数Xがある実数aからbまでの値を等確率でとるとき、Xが一様分布に従うといい、 X \sim \textrm{Uni}(a,b) と表す。

一様分布の密度関数は、

f_X (x) = \left\{ \begin{aligned} &0 &\textrm{if}~ x<a \\ &\frac{1}{b-a} &\textrm{if}~x \in [a,b] \\ &0 &\textrm{if}~ b<x \\ \end{aligned}\right.

a=0b=5の一様分布

2025-09-12T20:15:56.323241 image/svg+xml Matplotlib v3.9.2, https://matplotlib.org/

正規分布

確率変数Xが次の密度関数 f_X (x) = \frac{1}{\sqrt{2\pi \sigma^2}} e^{-\frac{(x-\mu)^2}{2\sigma^2}} を持つ時、Xは正規分布に従うといい、 X \sim \mathcal{N}(\mu,\sigma^2) と表す。 \mu\sigma^2はそれぞれ正規分布の平均値と分散を示している。

\mu=100\sigma^2=16の正規分布

2025-09-12T20:15:56.368087 image/svg+xml Matplotlib v3.9.2, https://matplotlib.org/

正規分布の性質

正規分布\mathcal{N}(\mu, \sigma^2)に従う確率変数Xは、次のような便利な性質を持っています。

定数abを用いて、 Y = a X + b と定義します。 このとき、Yも確率変数です。

この確率変数Yは、次の正規分布に従います。 Y \sim \mathcal{N} (a \mu+ b, a^2 \sigma^2 )

標準化

先の関係を用いて、標準化という作業ができます。

  • X \sim \mathcal{N} (\mu, \sigma^2)から平均を引き、標準偏差で割ることを標準化と言います。
  • 標準化した変数は、平均0、分散が1の正規分布の標準正規分布に従います。

\frac{X-\mu}{\sigma} \sim \mathcal{N} (0,1)

導出はこちら

Xから\muを引いたものを\hat{X}としましょう。(a=0b=-\mu \hat{X} = X - \mu \sim \mathcal{N}(0 , \sigma^2)

\hat{X}も正規分布に従っているので、次の変形ができます。 a \hat{X} + b \sim \mathcal{N} (a \times 0 + b, a^2 \sigma^2)

次に、\hat{X}\sigmaで割ったものを\tilde{X}としましょう。(a=\frac{1}{\sigma}b=0 \tilde{X} = \frac{\hat{X}}{\sigma} = \frac{X - \mu }{\sigma} \sim \mathcal{N}(0, 1)

4 大数の法則と中心極限定理

大数の法則

大数の(弱)法則

確率変数の列\{X_1,X_2, \cdots X_n \}について、X_iがiidであるとする。このとき、 \bar{X} = \frac{\sum_{i=1}^n X_i}{n} \overset{p}{\to} E[X_i] となる。 ただし、\overset{p}{\to}は確率収束を表す。

  • 詳しいお話はこの講義のスコープを超えるのでスキップしますが、いくつかの点に触れておきます。
    • iidは、「独立同一分布に従う(independent and identically distributed)」の略です。
      • ある確率分布に従うものをランダムにサンプリングしたら、iidは満たされます。
    • 確率収束とは、サンプルサイズが十分に大きくなれば、収束先の値から離れている確率がものすごく小さくなる、ということです。
      • 読み飛ばしてOKですが、一応数式で定義を書いておくと \lim_{n \to \infty} \textrm{Pr}(|X_n - c| \le \varepsilon ) = 0

中心極限定理

もう一つ、中心極限定理というものが存在している。

中心極限定理

確率変数の列\{X_1,X_2, \cdots X_n \}について、X_iがiidであるとする。このとき、

\bar{X} = \frac{\sum_{i=1}^n X_n }{n}, ~ Z = \frac{\bar{X} - E(\bar{X})}{\sigma/ \sqrt{n}} としたとき、 Z \overset{d}{\to} \mathcal{N}(0, 1) となる。 ただし、\overset{d}{\to}は分布収束を表す。

  • 分布収束は、矢印の左側の変数が、サンプルサイズが大きくなるにつれて、右側に示される分布に従うようになっていくことを意味している。
    • 今回のケースでは確率変数Zが、サンプルサイズnが大きくなるにつれて平均ゼロ、分散1の正規分布\mathcal{N}(0,1)に従うとみなせる、と考えればよい。
  • X_iがどんな分布に従っていようと、nが十分多きければX_iの平均値\bar{X}は正規分布に従うと扱える。
    • めっちゃ強力な定理。

シミュレーション

[0,1)区間の一様分布に従う確率変数Xで、シミュレーションをしてみよう。 このとき、 E[X] = 0.5, ~ Var[X] = \frac{1}{12} = 0.0833...

Code
import numpy as np
import matplotlib.pyplot as plt

np.random.seed(1234)

means = []
n_list = np.arange(50, 10000, 50) # 上限は1万 50刻みでサンプルサイズを設定

## Xの分布を[0,1)一様分布とする。
def draw(s):
    return np.random.rand(s)

for i in range(len(n_list)):

    n = n_list[i] #サンプルサイズ

    X = draw(n) # Xをnだけランダムサンプリングする。

    Xbar = np.mean(X) # Xの平均値を出す

    means.append(Xbar)

## 結果のプロット

fig= plt.figure()
ax = fig.add_subplot(111)

ax.axhline(0.5,color="black")
ax.plot(n_list,means, lw=1)
ax.set_xlabel("n")
Text(0.5, 0, 'n')

2025-09-12T20:15:56.410049 image/svg+xml Matplotlib v3.9.2, https://matplotlib.org/

Code
import scipy.stats as stat

mu = 0.5
var = 1/12
sigma = var**(0.5)

np.random.seed(1234)

means = []

# サンプルサイズの設計
n_list0 = np.arange(10,100,1)
n_list1 = np.arange(100,1000,10)
n_list2 = np.arange(1000,10000,100)
n_list3 = np.arange(10000,100000,1000)

n_lists = [n_list0, n_list1, n_list2, n_list3]
label = ["n: 10-100", "n: 100-1000", "n: 1000-10000", "n:10000-100000"]

## Xの分布を[0,1)一様分布とする。
def draw(s):
    return np.random.rand(s)

for n_list in n_lists:
    res = []
    for i in range(len(n_list)):

        n = n_list[i] #サンプルサイズ

        X = draw(n) # Xをnだけランダムサンプリングする。

        Xbar = np.mean(X) # Xの平均値を出す
        res.append(Xbar)
    means.append(res)

## 結果のプロット

fig= plt.figure()
fig.subplots_adjust(wspace=0.3,hspace=0.5)

for i in range(4):
    res = np.array(means[i])
    Z = (res-mu)/sigma*n_lists[i]**(0.5) # Zを計算
    ax = fig.add_subplot(2,2,i+1)
    ax.hist(Z, bins = 21, density=True, alpha=0.5, label="シミュレーション") # ヒストグラムをプロット

    ax.plot(np.linspace(-3,3,100), stat.norm.pdf(np.linspace(-3,3,100)))
    ax.set_title(label[i])

2025-09-12T20:15:56.533545 image/svg+xml Matplotlib v3.9.2, https://matplotlib.org/

5 多変数の確率分布と条件付き確率

多変数の確率分布

確率変数が2つ以上あるケースが多々ある。

  • 例えば、最も単純な単回帰分析でも、(X,Y)は2つの確率変数のペア。

ここでは確率変数がXYの二つであるとしよう。

\textrm{Pr}(X=x, Y=y)のとき、その確率(質量)関数を

f_{XY}(x,y)

と表し、同時確率関数とか、同時関数と呼ぶ。

X=xY=yにおける確率密度関数を

f_{XY}(x,y)

と表し、同時確率密度関数とか、同時密度関数と呼ぶ。

Text(0.5, 0.5, 'Y')

2025-09-12T20:15:56.739216 image/svg+xml Matplotlib v3.9.2, https://matplotlib.org/

確率のイメージ

  • Xが0か1
  • Yが10か20か30

次のような同時確率分布が与えられるはず。

変数 Y=10 Y=20 Y=30
X=0 f_{XY}(0,10) f_{XY}(0,20) f_{XY}(0,30)
X=1 f_{XY}(1,10) f_{XY}(1,20) f_{XY}(1,30)
数値例
変数 Y=10 Y=20 Y=30
X=0 0.15 0.1 0.2
X=1 0.15 0.3 0.1

期待値

確率変数がXYの二つであるとき、そのときのXYそれぞれの期待値を次のように定義します。

E(X) = \sum_x \sum_y x f_{XY}(x,y)

E(Y) = \sum_x \sum_y y f_{XY}(x,y)

E(X) = \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} x f_{XY}(x,y) dx dy

E(Y) = \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} y f_{XY}(x,y) dx dy

“ある”変数の出る確率

確率分布において、Yがどんな値を取ってもいいから、とにかくXがある値を取る確率が計算したい場合がある。

これを示すのが、

  • 離散確率変数においては周辺確率関数
  • 連続確率変数においては周辺密度関数

と呼ばれる。

  • 周辺確率関数や周辺密度関数によって示される分布を、周辺分布と呼ぶ。

周辺確率関数と周辺密度関数

Xの周辺確率関数f_X(x)
f_X (x) = \sum_{y} f (x,y)
Yの周辺確率関数f_Y(y)
f_Y (y) = \sum_{x} f (x,y)
Xの周辺密度関数f_X(x)
f_X (x) = \int_{0}^{\infty} f (x,y) dy
Yの周辺密度関数f_Y(y)
f_Y (y) = \int_{0}^{\infty} f (x,y) dx

行列によるイメージ

先の具体例を用いて考えてみよう。

変数 Y=10 Y=20 Y=30 f_X(x)
X=0 f_{XY}(0,10) f_{XY}(0,20) f_{XY}(0,30) f_X(0)
X=1 f_{XY}(1,10) f_{XY}(1,20) f_{XY}(1,30) f_X(1)
f_Y(y) f_Y(10) f_Y(20) f_Y(30)
数値例
変数 Y=10 Y=20 Y=30 f_X(x)
X=0 0.15 0.1 0.2 0.45
X=1 0.15 0.3 0.1 0.55
f_Y(y) 0.3 0.4 0.3

期待値と周辺確率

期待値の定義から、 \begin{aligned} E(X) &= \sum_x \sum_y x f(x,y) \\ &= \sum_x x \left[ \sum_y f(x,y) \right] \\ &= \sum_x x f_X(x) \end{aligned}

  • ある変数(X)の分布がその変数の周辺確率(f_X(x))で表されるとみなして計算されたもの、と解釈できる。
  • 連続確率変数でも同様。

条件付き密度関数(確率関数)

Xがある値xをとった時の密度関数(確率関数)は、条件付き密度関数確率関数)と呼ばれる。 f_{Y|X} (y|x)

この時、X=xは既に定まっているので、Yについての密度関数(確率関数)になっている。

条件付き確率の定義

f_{Y|X} (y|x) \equiv \frac{f_{XY}(x,y)}{f_X(x)}

  • 分母が周辺確率、分子が確率(密度)関数
    • X=xがでる確率がf_X(x)
    • X=x出たという状況のもとY=yとなる確率が計算されている。

図で見る条件付き確率

X=1の時の条件付き期待値 f_{Y|X} (y|1)

2025-09-12T20:15:57.104076 image/svg+xml Matplotlib v3.9.2, https://matplotlib.org/

2025-09-12T20:15:57.257445 image/svg+xml Matplotlib v3.9.2, https://matplotlib.org/

条件付き期待値

条件付き確率についても期待値をとれる。 これを、条件付き期待値と呼ぶ。

E(Y|X) = \sum_y y f_{y|x} (y|x)

E(Y|X) =\int_{-\infty}^{\infty} y f_{y|x} (y|x) dy

回帰関数

条件付き期待値は、Xがある値に定まったとした上でのYの期待値。

これを今度はXの関数として見てみると、

E(Y|X) = h(X)

とできる。 h(X)回帰関数と呼ぶ。

  • いわゆる最も簡単な回帰分析は、実はこの回帰関数を線形関数だと仮定して行われる。

繰り返し期待値の法則

E(Y|X)Xの関数とみて、両辺Xについての期待値をとると、 E(E(Y|X)) = E(Y) となる。

これを繰り返し期待値の法則と呼ぶ。

証明

\begin{aligned} E(h(X)) &= E(E(Y|X)) \\ &= \sum_x \left[ \sum_y y f_{Y|X}(y) \right] f_{X}(x) \\ &= \sum_x \left[ \sum_y y \frac{f_{XY}(x,y)}{f_X(x)} \right] f_{X}(x) \\ &= \sum_x \sum_y y f_{XY}(x,y) \\ &= E[Y] \end{aligned}

まとめ

  • 離散確率変数と連続確率変数の違いをしっかり整理してください。
    • 連続確率変数は直観に反するような感覚があるかもしれませんが、慣れるほかありません。
  • 回帰分析では、特に連続確率変数がたくさん出てくると心構えておいてください。