正規分布から導く三つの分布

はてな
目次

3つの分布を公式として覚えていませんか?

統計学を学び始めると、正規分布、二項分布、ポアソン分布など比較的早い段階で目にする確率分布がある。その後、統計的推測や仮設検定を学ぶ頃には以下の3つの分布が登場する。

  • χ2\chi^2 分布
  • tt 分布
  • FF 分布

これらを初めて学んだとき、どのように覚えただろうか。それぞれの分布を描画し、その形で覚える。もしくは、それぞれについて期待値や分散、自由度を公式として、またはそれらの分布の登場場面で覚えた方も多いのではないだろうか。

  • 母分散の検定は χ2\chi^2 分布
  • 母平均の検定では tt 分布
  • 分散の比較では FF 分布

などといった要領で。

ではこれらの検定でそれらの分布が登場するのはなぜか?本記事では、標準正規分布を原点としてそれらの分布がどう組み立てられるのかを解明していく。

ZN(0,1)i=1νZi2χ2(ν)ZU/νt(ν)U1/ν1U2/ν2F(ν1,ν2)Z \sim N \:(0,\:1)\:\:\Rightarrow\:\: \displaystyle \sum_{i = 1}^{\nu} Z_i^2 \sim\chi^2(\nu)\:\:\Rightarrow\:\:\dfrac{\:Z\:}{\:\sqrt{U/\nu}\:}\sim t(\nu)\:\:\Rightarrow\:\: \dfrac{\:U_1/\nu_1\:}{\:U_2/\nu_2\:}\sim F(\nu_1,\:\nu_2)

最左辺の標準正規分布から各分布へつながる上式において、正規乱数や χ2\chi^2 乱数は互いに独立と仮定しておく。

正規分布の二乗

自由度 1 の χ2\chi^2 分布

まずはじめに標準正規乱数


ZN(0,1)Z\sim N(0,\:1)

を考える。この ZZ を二乗した


Z2Z^2

は非負の値を取り、 ZZ の平均が 0 であることから、 Z2Z^2 も 0 に値が集中することとなる。一方、|Z|\lvert Z \rvert が大きい値を取ることは稀だが、二乗することにより裾は右に長くなる。この Z2Z^2 の分布を、自由度 1 の χ2\chi^2 分布と呼ぶ。


Z2χ2(1)Z^2\sim \chi^2(1)

自由度 ν\nuχ2\chi^2 分布

独立な標準正規乱数


Z1,Z2,,Zνi.i.dN(0,1)Z_1,\:Z_2,\:\cdots,\:Z_\nu\overset{\text\small\textrm{i.i.d}}{\sim} N(0,\:1)

を用意し(i.i.di.i.d; Independent and Identically Distributed )、その二乗和 UU


U=i=1νZi2U\:=\:\displaystyle \sum_{i=1}^\nu Z_i^2

とする。このとき


Uχ2(ν)U\sim \chi^2 (\nu)

であり、μ\mu は自由度と呼ばれる。χ2(ν)\chi^2 (\nu) 分布の平均と分散は


E[U]=ν,Var(U)=2νE[U]\:=\:\nu,\:\:\:\mathrm{Var}(U) \:=\: 2\nu 

である。自由度が大きいほど分布の中心は右へ移動し、相対的なばらつきは小さくなる。グラフの形も自由度が小さいほど右に強く歪むが、大きくなればなるほど正規分布に近い形となる。

図1: 標準正規乱数の二乗和で作ったヒストグラム、およびSciPyの χ2\chi^2 理論密度

標本分散との関係

分散の検定に χ2\chi^2 分布が出てくる理由は、正規母集団の標本分散が二乗和で表されるからである。

χ2\chi^2 を独立に


XiN(μ,σ2)X_i\sim N(\mu,\:\sigma^2)

から抽出した標本とし、標本平均を X\bar{X}、不偏分散 SS


S2=1n1i=1n(XiX)2S^2 \:=\: \dfrac{\:1\:}{\:n-1\:}\displaystyle \sum_{i=1}^n (X_i – \bar{X})^2

とする。この式の両辺に (n1)/σ2(n-1)/\sigma ^2 をかけると( σ\sigma は母集団の標準偏差)


(n1)S2σ2=1σ2i=1n(XiX)2\dfrac{(n−1)S^2}{\sigma^2}=\dfrac{\:1\:}{\:\sigma^2\:}\displaystyle \sum_{i=1}^n (X_i−\bar{X})^2

となる。ここで母平均 μ\mu が既知であることは極めて稀である。仮に母平均 μ\mu が既知であれば各 XiX_i を標準化し


Zi=XiμσZ_i \:=\: \dfrac{\:X_i – \mu\:}{\:\sigma\:}

とすることでこれらは互いに独立な標準正規分布に従う。


ZiN(0,1)Z_i \sim N(0,\:1)

である。したがってその二乗和は以下の式の通り自由度 nnχ2\chi^2 分布に従うことになる。


i=1nZi2=1σ2i=1n(Xiμ)2χn2\displaystyle \sum_{i=1}^n Z_i^2 \:=\:\dfrac{\:1\:}{\:\sigma^2\:}\displaystyle \sum_{i=1}^{n} (X_i – \mu)^2 \sim \chi_n^2

しかし標本分散の検定で使用できるのは μ\mu ではなく X\bar{X} である。つまり μX\mu \:\rightarrow\: \bar{X} としてもその分散は χ2\chi^2 分布に従うことを示すことが目標である。

ここで母平均を用いた二乗和を以下のように変形する。


i=1n(Xiμ)2=i=1n(XiX+Xμ)2=i=1n(XiX)2+2(Xμ)i=1n(XiX)+i=1n(Xμ)2=i=1n(XiX)2+n(Xμ)2\displaystyle \sum_{i=1}^n (X_i – \mu)^2 \:=\: \displaystyle \sum_{i=1}^n (X_i – \bar{X} + \bar{X}-\mu)^2 \:\:\:=\:\displaystyle \sum_{i=1}^n (X_i – \bar{X})^2 + 2 (\bar{X} – \mu) \displaystyle \sum_{i=1}^n(X_i – \bar{X})+\displaystyle \sum_{i=1}^n (\bar{X} – \mu)^2\:=\: \displaystyle \sum_{i=1}^n (X_i – \bar{X})^2 + n(\bar{X} – \mu)^2


2(Xμ)i=1n(XiX)2 (\bar{X} – \mu) \displaystyle \sum_{i=1}^n(X_i – \bar{X})

において、標本平均は


X=1ni=1nXinX=i=1nXi\bar{X}\:=\: \dfrac{\:1\:}{\:n\:}\displaystyle\sum_{i=1}^n X_i \:\iff\:n\bar{X} \:=\: \sum_{i=1}^n X_i

であり


i=1n(XiX)=i=1nXinX\displaystyle \sum_{i=1}^n(X_i – \bar{X}) \:=\: \sum_{i=1}^n X_i – n\bar{X}

となるため


2(Xμ)i=1n(XiX)=02 (\bar{X} – \mu) \displaystyle \sum_{i=1}^n(X_i – \bar{X})\:=\:0

である。つまり


i=1n(Xiμ)2=i=1n(XiX)2+n(Xμ)2\displaystyle \sum_{i=1}^n(X_i – \mu)^2 \:=\: \sum_{i=1}^n (X_i – \bar{X})^2 + n(\bar{X}-\mu)^2

であり、上式の両辺を σ2\sigma^2 で割ると


1σ2i=1n(Xiμ)2=1σ2i=1n(XiX)2+n(Xμ)2σ2\dfrac{\:1\:}{\:\sigma^2\:}\displaystyle\sum_{i=1}^n(X_i – \mu)^2 \:=\: \dfrac{\:1\:}{\:\sigma^2\:}\sum_{i=1}^n (X_i – \bar{X})^2 + \dfrac{\:n(\bar{X}-\mu)^2\:}{\:\sigma^2\:}

となる。左辺は自由度 nnχ2\chi^2 分布に従い、右辺の第二項においてもその平方根を取ると


Xμσ/nN(0,1)\dfrac{\:\bar{X}-\mu\:}{\:\sigma/\sqrt{n}\:} \sim N(0,\:1)

と標準正規分布に従うため、


n(Xμ)2σ2χ12\dfrac{\:n(\bar{X}-\mu)^2\:}{\:\sigma^2\:} \sim \chi_1^2

と自由度 1 の χ2\chi^2 分布へ従う。ここで正規母集団では、X\bar{X}S2S^2 は独立となるので、

二乗和の自由度は以下のように分解することができる。


χn2=χn12+χ12\chi^2_n \:=\: \chi_{n-1}^2 \:+\:\chi_1^2 

したがって残りの第一項は自由度 n1n-1χ2\chi^2 分布に従うことになる。

よって


(n1)S2σ2χn12\dfrac{\:(n-1)S^2\:}{\:\sigma^2\:} \sim \chi_{n-1}^2

となる。本来不明である母平均 μ\mu を標本平均 X\bar{X} で推定するために、自由度を 1 つ使う。そのため、標本平均を用いて偏差の二乗和を推定しようとするとその自由度は n1n-1 になる。

母分散が未知の場合の推定

tt 分布

母平均 μ\mu を検定したいものとする。母分散 σ2\sigma^2 が既知であれば、標本平均の標準化


Z=Xμσ/nZ\:=\: \dfrac{\:\bar{X}- \mu\:}{\:\sigma/ \sqrt{n}\:}

は標準正規分布に従う。


ZN(0,1)Z\sim N(0,\:1)

しかし母分散 σ2\sigma^2 が既知であることは稀であり、未知の σ\sigma の代わりに標本標準偏差 SS を使う必要がある。


T=XμS/nT\:=\:\dfrac{\:\bar{X}-\mu\:}{S/\sqrt{n}}

上式において、標本標準偏差 SS には推定誤差が含まれる。したがって TT は標準正規分布よりも裾が厚い分布になる。これが tt 分布である。σS\sigma \to S と置き換えると、 SS は標本ごとに値が変化する確率変数である。したがって統計量 TT には SS を推定することによる不確実性も含まれることになる。以下ではこの統計量がどんな分布に従うかを、前章で扱った χ2\chi^2 分布との関係から確認する。

前章において標本分散については、


(n1)S2σ2χn12\dfrac{\:(n-1)S^2\:}{\:\sigma^2\:} \sim \chi_{n-1}^2

が成り立つことが確認できた。ここで


U=(n1)S2σ2U\:=\: \dfrac{\:(n-1)S^2\:}{\sigma^2}

は自由度 n1n-1χ2\chi^2 分布に従い


Uχ2(n1)U\sim \chi^2(n-1)

である。この UUn1n-1 で割った後平方根を取ると


Un1=1n1(n1)S2σ2=S2σ2=Sσ\sqrt{\dfrac{\:U\:}{\:n-1\:}} \:=\: \sqrt{\dfrac{\:1\:}{\:n-1\:}\cdot \dfrac{\:(n-1)S^2\:}{\:\sigma^2\:}} \:=\: \sqrt{\dfrac{\:S^2\:}{\:\sigma^2\:}}\:=\: \dfrac{\:S\:}{\:\sigma\:}

ここで、母標準偏差が既知の場合に用いた標準正規変数


Z=Xμσ/nZ\:=\: \dfrac{\:\bar{X}- \mu\:}{\:\sigma/ \sqrt{n}\:}

を先ほど求めた S/σS/\sigma で割ると


ZU/(n1)=Xμσ/nSσ=Xμσ/nσS=XμS/n\dfrac{\:Z\:}{\:\sqrt{U/(n-1)}\:} \:=\: \dfrac{\:\dfrac{\:\bar{X}- \mu\:}{\:\sigma/\sqrt{n}\:}\:}{\:\dfrac{\:S\:}{\:\sigma\:}\:}=\dfrac{\:\bar{X}- \mu\:}{\:\sigma/\sqrt{n}\:}\cdot \dfrac{\:\sigma\:}{\:S\:} \:=\:\dfrac{\:\bar{X}- \mu\:}{\:S/\sqrt{n}\:}

となる。右辺は未知の標準偏差 σ\sigma を標本標準偏差 SS に置き換えた統計量 TT に一致する。

正規母集団では、標本平均 X\bar{X} と標本分散 S2S^2 は独立である。したがって


ZN(0,1)Z\sim N(0,\:1)


Uχ2(n1)U\sim \chi^2(n-1)

も独立であり


T=ZU/(n1)=XμS/nT\:=\:\dfrac{\:Z\:}{\:\sqrt{U/(n- 1)}\:} \:=\: \dfrac{\:\bar{X}- \mu\:}{\:S/\sqrt{n}\:}

は自由度 n1n-1tt 分布に従う。


XμS/nt(n1)\dfrac{\:\bar{X}- \mu\:}{\:S/\sqrt{n}\:} \sim t(n-1)

以上から tt 分布は、母標準偏差 σ\sigma が未知であるために標本から求めた SS を用いて標準化を行い、その時に発生する分布であることがわかる。

母標準偏差が既知の時、統計量は標準正規分布に従う。一方、SS は標本ごとに変動するため、その不確実性が加わり、 tt 分布は標準正規分布よりも裾の厚い形になる。

図2: 正規乱数と χ2\chi^2 型の二乗和から作った tt 分布、およびSciPyの tt 理論密度

ここで χ2\chi^2 分布の期待値と分散は


E[U]=ν,Var(U)=2νE[U]\:=\:\nu,\:\:\:Var(U) \:=\: 2\nu

であった。ここで UU を自由度 ν\nu で割った値については


E[U/ν]=E[U]ν=1E[U/\nu] \:=\: \dfrac{\:E[U]\:}{\:\nu\:}\:=\: 1

また分散は


Var(Uν)=1ν2Var(U)=2ν\mathrm{Var}\biggl(\dfrac{\:U\:}{\:\nu\:}\biggr) \:=\: \dfrac{\:1\:}{\:\nu^2\:}\mathrm{Var(U)} \:=\: \dfrac{\:2\:}{\:\nu\:}

つまり U/νU/\nu はばらつきを含めて


Uν=1±2ν\dfrac{\:U\:}{\:\nu\:} \:=\: 1 \:\pm\: \dfrac{\:2\:}{\:\nu\:}

と表すことで整合性がとれ、自由度が大きくなると変動が小さくなり


νUν1\nu\to\infty \:\:\Rightarrow\:\: \dfrac{\:U\:}{\:\nu\:} \to 1

上式のようにやがて 1 に収束する。したがって


Uν1\sqrt{\dfrac{\:U\:}{\:\nu\:}} \to 1

である。ここで tt 統計量は


T=ZU/νT\:=\: \dfrac{\:Z\:}{\:\sqrt{U/\nu}\:}

であり、自由度が大きくなると分母は 1 に近づくことから


T=ZU/νZ1=ZT\:=\: \dfrac{\:Z\:}{\:\sqrt{U/\nu}\:} \:\approx\: \dfrac{\:Z\:}{\:1\:} \:=\: Z

となる。ZZ はその定義から


ZN(0,1)Z \sim N(0,\:1)

であるから、tt 分布は自由度が大きくなるにつれて標準正規分布に近づくことがわかる。

分散比検定

FF 分布

二つの正規母集団から独立に標本を取る。


X1,X2,,Xn1i.i.dN(μ1,σ12),Y1,Y2,,Yn2i.i.dN(μ2,σ22)X_1,\:X_2,\:\cdots,\:X_{n1} \overset{\text\small\textrm{i.i.d}}{\sim}N(\mu_1,\:\sigma_1^2),\hspace{2em}Y_1,\:Y_2,\:\cdots,Y_{n2}\overset{\text\small\textrm{i.i.d}}{\sim} N(\mu_2,\:\sigma_2^2)

それぞれの不偏分散を S12,S22S_1^2,\:S_2^2 とすると、前々節の内容から


U1=(n11)S12σ12χ2(n11),U2=(n21)S22σ22χ2(n21)U_1\:=\:\dfrac{\:(n_1 – 1) S_1^2\:}{\:\sigma_1^2\:} \sim \chi^2(n_1 -1),\hspace{2em}U_2\:=\:\dfrac{\:(n_2 – 1) S_2^2\:}{\:\sigma_2^2\:} \sim \chi^2(n_2 -1)

であり、二つは独立である。

それぞれの χ2\chi^2 変数(U1,U2U_1, \:U_2)を自由度で割ると


U1n11=S12σ12U2n21=S22σ22\dfrac{\:U_1\:}{n_1-1}\:=\:\dfrac{\:S_1^2\:}{\:\sigma_1^2\:}\\\dfrac{\:U_2\:}{n_2-1}\:=\:\dfrac{\:S_2^2\:}{\:\sigma_2^2\:}

となる。ここで2つの量の比を取るとこれが FF 統計量となる。


F=U1/(n11)U2/(n21)=S12S22σ22σ12F\:=\: \dfrac{\:U_1/(n_1-1)\:}{\:U_2/(n_2 -1)\:}\:=\: \dfrac{\:S_1^2\:}{\:S_2^2\:}\cdot \dfrac{\:\sigma_2^2\:}{\:\sigma_1^2\:}

この統計量は二つの自由度


ν1=n11,ν2=n21\nu_1 \:=\: n_1 -1,\hspace{2em}\nu_2 \:=\: n_2 -1

を持つ FF 分布に従う。


FF(ν1,ν2)F\sim F(\nu_1,\:\nu_2)

母分散の比の検定

2つの母分散が等しいかどうかを調べたいとする。このとき帰無仮説を


H0:σ12=σ22H_0:\sigma_1^2 \:=\: \sigma_2^2

とおく。この仮説の元では


σ22σ12=1\dfrac{\:\sigma_2^2\:}{\:\sigma_1^2\:}\:=\: 1

であるから、FF 統計量は


F=S12S22F\:=\: \dfrac{\:S_1^2\:}{\:S_2^2\:}

となる。したがって


S12S22F(n11,n21)\dfrac{\:S_1^2\:}{\:S_2^2\:}\sim F(n_1-1, \: n_2 -1)

である。つまり FF 分布は2つの標本分散の比が、母分散が等しいという仮定のもとでどの程度変動するかを表す分布である。

図3: 二つの独立な平均二乗の比で作った FF 分布および、SciPyの FF 理論密度

$t$ 分布との関係

自由度 ν\nutt 分布に従う確率変数 TT


TtνT \sim t_\nu

があるとき、これを二乗すると


T2F(1,ν)T^2\sim F(1,\:\nu)

となる。TT


T=ZU/νT\:=\: \dfrac{\:Z\:}{\:\sqrt{U/\nu}\:}

と表せるため、二乗すると


T2=Z2U/νT^2\:=\: \dfrac{\:Z^2\:}{\:{U/\nu}\:}

となる。標準正規変数 ZZ の二乗は自由度 1 の χ2\chi^2 分布に従い


Z2χ12Z^2\sim \chi_1^2

であるため、


T2=χ12/1χν2/νT^2\:=\: \dfrac{\:\chi_1^2/1\:}{\:\chi_\nu^2/\nu\:}

となる。これは分子の自由度 1、分母の自由度が ν\nu である FF 分布の定義そのものとなっている。

まとめ

最後に、分布の関係を一つの流れとして整理する。

  • 標準正規分布


ZN(0,1)Z \sim N(0,\:1)

  • 独立な標準正規乱数を二乗して足すと、χ2\chi^2 分布になる。


i=1νZi2χ2(ν)\displaystyle\sum_{i=1}^{\nu} Z_i^2 \sim \chi^2(\nu)

  • 標準正規乱数を、独立な χ2\chi^2 乱数から作った推定標準偏差で割ると、tt 分布になる。


ZU/νt(ν)\dfrac{\:Z\:}{\:\sqrt{U/\nu}\:} \sim t(\nu)

  • 独立な二つの χ2\chi^2 乱数を自由度で割り、その比を取ると、FF 分布になる。


U1/ν1U2/ν2F(ν1,ν2)\dfrac{\:U_1/\nu_1\:}{\:U_2/\nu_2\:} \sim F(\nu_1,\:\nu_2)

したがって、χ2\chi^2 分布、tt 分布、FF 分布は正規分布を出発点にして、「二乗和」「推定分散による標準化」「平均二乗の比」という操作を追えば、検定でなぜその分布が出てくるのかが自然に見えてくる。

付録

3つの図の描画に使ったPythonコードを以下に示す。

"""
Generate only the three simulation figures: chi-square, t, and F.

The figures are built from normal random numbers first, then theoretical
SciPy densities are overlaid for comparison.
"""

from pathlib import Path

import matplotlib

matplotlib.use("Agg")

import matplotlib.pyplot as plt
import numpy as np
from scipy import stats


ROOT = Path(__file__).resolve().parents[1]
# Figuresに保存する前提
OUTPUT_DIR = ROOT / "Figures"
OUTPUT_DIR.mkdir(exist_ok=True)

RNG = np.random.default_rng(20260717)
N = 100_000

plt.rcParams.update(
    {
        "font.family": ["YuGothic", "Hiragino Sans", "DejaVu Sans"],
        "axes.unicode_minus": False,
        "figure.dpi": 140,
        "savefig.dpi": 220,
        "axes.spines.top": False,
        "axes.spines.right": False,
    }
)


def save(fig, name):
    for suffix in ("png", "pdf"):
        fig.savefig(
            OUTPUT_DIR / f"{name}.{suffix}",
            bbox_inches="tight",
            facecolor="white",
            edgecolor="white",
        )
    plt.close(fig)


def style(ax):
    ax.grid(True, axis="y", color="#d9dee7", linewidth=0.8, alpha=0.8)
    ax.tick_params(labelsize=8)


def chi_square_figure():
    dfs = [1, 2, 5, 30]
    fig, axes = plt.subplots(2, 2, figsize=(10.5, 6.4))
    fig.suptitle("標準正規乱数の二乗和から作る $\\chi^2$ 分布", fontsize=14)

    for ax, df in zip(axes.ravel(), dfs):
        z = RNG.normal(size=(N, df))
        simulated = np.sum(z**2, axis=1)
        xmax = stats.chi2.ppf(0.995, df)
        x = np.linspace(0.001, xmax, 600)

        ax.hist(simulated, bins=90, range=(0, xmax), density=True, color="#7aa6c2", alpha=0.58)
        ax.plot(x, stats.chi2.pdf(x, df), color="#b23b3b", lw=2.1)
        ax.set_title(f"自由度 $\\nu={df}$", fontsize=11)
        ax.set_xlabel("$x$")
        ax.set_ylabel("density")
        style(ax)

    fig.legend(["SciPy 理論密度", "正規乱数から作成"], loc="lower center", ncol=2, frameon=False)
    fig.tight_layout(rect=(0, 0.06, 1, 0.95))
    save(fig, "three_distribution_chi_square")


def t_figure():
    dfs = [1, 3, 10, 30]
    fig, axes = plt.subplots(2, 2, figsize=(10.5, 6.4), sharex=True, sharey=True)
    fig.suptitle("標準正規を推定分散で標準化すると $t$ 分布になる", fontsize=14)
    x = np.linspace(-5.5, 5.5, 900)

    for ax, df in zip(axes.ravel(), dfs):
        z = RNG.normal(size=N)
        u = np.sum(RNG.normal(size=(N, df)) ** 2, axis=1)
        simulated = z / np.sqrt(u / df)

        ax.hist(simulated, bins=120, range=(-5.5, 5.5), density=True, color="#83b799", alpha=0.55)
        ax.plot(x, stats.t.pdf(x, df), color="#b23b3b", lw=2.1)
        ax.plot(x, stats.norm.pdf(x), color="#30343f", lw=1.6, ls="--")
        ax.set_title(f"自由度 $\\nu={df}$", fontsize=11)
        ax.set_xlabel("$t$")
        ax.set_ylabel("density")
        style(ax)

    fig.legend(
        ["SciPy t 密度", "標準正規密度", "正規乱数から作成"],
        loc="lower center",
        ncol=3,
        frameon=False,
    )
    fig.tight_layout(rect=(0, 0.06, 1, 0.95))
    save(fig, "three_distribution_t")


def f_figure():
    df_pairs = [(1, 5), (5, 5), (10, 20), (30, 30)]
    fig, axes = plt.subplots(2, 2, figsize=(10.5, 6.4))
    fig.suptitle("二つの独立な平均二乗の比から作る $F$ 分布", fontsize=14)

    for ax, (df1, df2) in zip(axes.ravel(), df_pairs):
        u1 = np.sum(RNG.normal(size=(N, df1)) ** 2, axis=1)
        u2 = np.sum(RNG.normal(size=(N, df2)) ** 2, axis=1)
        simulated = (u1 / df1) / (u2 / df2)
        xmax = stats.f.ppf(0.995, df1, df2)
        x = np.linspace(0.001, xmax, 700)

        ax.hist(simulated, bins=120, range=(0, xmax), density=True, color="#d7a86e", alpha=0.55)
        ax.plot(x, stats.f.pdf(x, df1, df2), color="#b23b3b", lw=2.1)
        ax.axvline(1, color="#30343f", lw=1.2, ls=":")
        ax.set_title(f"自由度 $(\\nu_1,\\nu_2)=({df1},{df2})$", fontsize=11)
        ax.set_xlabel("$f$")
        ax.set_ylabel("density")
        style(ax)

    fig.legend(["SciPy F 密度", "$F=1$", "正規乱数から作成"], loc="lower center", ncol=3, frameon=False)
    fig.tight_layout(rect=(0, 0.06, 1, 0.95))
    save(fig, "three_distribution_f")


if __name__ == "__main__":
    chi_square_figure()
    t_figure()
    f_figure()
    print(f"Generated three distribution figures in {OUTPUT_DIR}")
CTA
  • URLをコピーしました!
  • URLをコピーしました!
この記事を書いた人
目次