製品を設計するとき、「この部品は何年もつのか」は最も重要な問いの一つです。電球のフィラメント、自動車のベアリング、航空機のエンジン部品——これらの寿命をどのように予測し、信頼性を保証すればよいのでしょうか。
寿命データの解析で最も広く使われている確率分布がワイブル分布(Weibull distribution)です。スウェーデンの工学者 Waloddi Weibull が1951年に提唱したこの分布は、形状パラメータ1つを変えるだけで、初期故障型・偶発故障型・摩耗故障型という3つの故障パターンをすべて表現できる、極めて柔軟な分布です。
ワイブル分布を理解すると、以下のような応用が開けます。
- 信頼性工学: 製品の寿命予測、保証期間の設定、メンテナンス計画の策定
- 材料科学: 材料の破壊強度分布のモデリング(最弱リンク理論)
- 風力発電: 風速分布のモデリング(発電量の予測に不可欠)
- 生存時間解析: 医療統計における患者の生存時間のモデリング
本記事では、ワイブル分布が「最弱リンク理論」から自然に導かれることを直感的に理解し、確率密度関数とハザード関数を導出します。さらに、モーメントの計算、パラメータ推定法、そしてPythonによる可視化と応用例を示します。
本記事の内容
- ワイブル分布の直感的理解(最弱リンク理論・極値分布との関係)
- 確率密度関数・累積分布関数・ハザード関数の導出
- モーメントの計算
- 特殊ケース(指数分布・レイリー分布)との関係
- ワイブルプロットによるパラメータ推定
- Pythonによる可視化と信頼性解析の実装
前提知識
この記事を読む前に、以下の記事を読んでおくと理解が深まります。
ワイブル分布とは — 直感的な理解
最弱リンク理論
ワイブル分布を理解するための最も良い出発点は、最弱リンク理論(weakest link theory)です。
鎖の強度は、最も弱い環(リンク)で決まります。$n$ 個の環でできた鎖に引張り力をかけたとき、どれか1つでも壊れれば鎖全体が壊れます。環の強度のばらつきが特定の条件を満たすとき、鎖の破壊強度(= 最も弱い環の強度)がワイブル分布に従うのです。
より一般的に言えば、多数の構成要素のうち最も弱いものが全体の寿命を決めるという状況で、ワイブル分布が自然に現れます。これは極値分布理論の一つの帰結です。
たとえば、電球のフィラメントは多数の微小領域からなり、どれか1か所でも切れれば電球は故障します。半導体チップ上の多数の素子も同様です。こうした「並列に弱点が存在する」系の故障時間分布がワイブル分布なのです。
3つの故障パターン
ワイブル分布が信頼性工学で重宝される最大の理由は、形状パラメータ $k$(shape parameter)を変えるだけで、製品のライフサイクルにおける3つの典型的な故障パターンを表現できることです。
- $k < 1$: 初期故障型(infant mortality)— 製造欠陥や設計ミスにより、使い始めに故障率が高く、時間とともに低下する
- $k = 1$: 偶発故障型(random failure)— 故障率が時間によらず一定。指数分布と一致する
- $k > 1$: 摩耗故障型(wear-out)— 経年劣化により、時間とともに故障率が増加する
これら3つのパターンは、信頼性工学で「バスタブ曲線」(bathtub curve)として知られる故障率の典型的な推移に対応しています。
この直感を数学的に定式化しましょう。
ワイブル分布の数学的定義
ワイブル分布は2つのパラメータ——形状パラメータ $k > 0$ と尺度パラメータ $\lambda > 0$——で特徴づけられます。
累積分布関数(CDF)は次のように定義されます。
$$ \begin{equation} F(t) = 1 – \exp\left(-\left(\frac{t}{\lambda}\right)^k\right), \quad t \geq 0 \end{equation} $$
確率密度関数(PDF)は CDF を微分して得られます。
$$ \begin{equation} f(t) = \frac{k}{\lambda}\left(\frac{t}{\lambda}\right)^{k-1}\exp\left(-\left(\frac{t}{\lambda}\right)^k\right), \quad t > 0 \end{equation} $$
各パラメータの意味は次の通りです。
- $k$(形状パラメータ): 分布の形状、特に故障パターンの種類を決定する
- $\lambda$(尺度パラメータ): 寿命のスケール。$F(\lambda) = 1 – e^{-1} \approx 0.632$ であるため、$\lambda$ は「製品の約63.2%が故障する時間」に対応する
信頼性関数(生存関数)$R(t) = 1 – F(t)$ は次のようになります。
$$ \begin{equation} R(t) = \exp\left(-\left(\frac{t}{\lambda}\right)^k\right) \end{equation} $$
この $R(t)$ が最弱リンク理論から導かれることを見てみましょう。
ハザード関数と最弱リンク理論からの導出
ハザード関数
ハザード関数(hazard function, 故障率関数)$h(t)$ は、時刻 $t$ まで生存している製品が、次の微小時間 $dt$ に故障する条件付き確率の密度です。
$$ h(t) = \frac{f(t)}{R(t)} = \frac{f(t)}{1 – F(t)} $$
ワイブル分布の場合、
$$ \begin{equation} h(t) = \frac{k}{\lambda}\left(\frac{t}{\lambda}\right)^{k-1} \end{equation} $$
ハザード関数がべき関数になるのがワイブル分布の特徴です。
- $k < 1$: $h(t) \propto t^{k-1}$ は単調減少 → 初期故障型
- $k = 1$: $h(t) = 1/\lambda$ は定数 → 偶発故障型(指数分布)
- $k > 1$: $h(t) \propto t^{k-1}$ は単調増加 → 摩耗故障型
特に $k = 2$ のとき $h(t) \propto t$ で故障率が時間に比例して増加し、$k = 3.5$ あたりでは正規分布に近い形の寿命分布になります。
最弱リンク理論からの導出
$n$ 個の同一構成要素が直列系(1つでも故障すれば系全体が故障する系)をなしているとします。各構成要素の寿命を $T_1, T_2, \dots, T_n$(独立同分布)とすると、系全体の寿命は
$$ T_{\min} = \min(T_1, T_2, \dots, T_n) $$
$T_i$ の累積分布関数を $F_0(t)$ とすると、$T_{\min}$ の信頼性関数は
$$ R_{\min}(t) = P(T_{\min} > t) = \prod_{i=1}^n P(T_i > t) = [1 – F_0(t)]^n $$
$n$ が大きく、$F_0(t)$ が特定の正則条件を満たすとき、フィッシャー・ティペットの定理(極値分布の理論)により、適切な正規化のもとで $T_{\min}$ の分布はワイブル分布に収束します。
もっと直接的には、個々の構成要素の故障率が $h_0(t) = ct^{k-1}$($c, k > 0$)の形であると仮定すると、
$$ R(t) = \exp\left(-\int_0^t h_0(s)\,ds\right) = \exp\left(-\frac{c}{k}t^k\right) $$
$\lambda = (k/c)^{1/k}$ とおけば、これはワイブル分布の信頼性関数そのものです。
つまり、ワイブル分布は「ハザード関数がべき関数」という仮定から自然に導かれる分布なのです。
次に、モーメントを計算しましょう。
期待値・分散・モーメント
$n$ 次モーメント
$X \sim \text{Weibull}(k, \lambda)$ の $n$ 次モーメントは、$u = (t/\lambda)^k$ と置換することで計算できます。
$$ E[X^n] = \int_0^\infty t^n f(t)\,dt = \lambda^n \int_0^\infty u^{n/k} e^{-u}\,\frac{du}{k \cdot u^{(k-1)/k}} \cdot k $$
整理すると、ガンマ関数の積分表現に帰着します。
$$ \begin{equation} E[X^n] = \lambda^n\,\Gamma\left(1 + \frac{n}{k}\right) \end{equation} $$
期待値
$$ \begin{equation} E[X] = \lambda\,\Gamma\left(1 + \frac{1}{k}\right) \end{equation} $$
分散
$$ \begin{equation} \text{Var}(X) = \lambda^2\left[\Gamma\left(1 + \frac{2}{k}\right) – \left(\Gamma\left(1 + \frac{1}{k}\right)\right)^2\right] \end{equation} $$
最頻値
$k > 1$ のとき最頻値が存在し、
$$ \begin{equation} \text{mode} = \lambda\left(\frac{k-1}{k}\right)^{1/k} \quad (k > 1) \end{equation} $$
$k \leq 1$ のとき最頻値は $t = 0$(確率密度が原点で最大または発散)です。
中央値
$$ \begin{equation} \text{median} = \lambda(\ln 2)^{1/k} \end{equation} $$
中央値は $F(t) = 0.5$ を解くことで得られ、ガンマ関数を含まない閉じた式になります。
次に、特殊ケースとの関係を整理しましょう。
特殊ケースと他の分布との関係
$k = 1$: 指数分布
$k = 1$ のとき、$f(t) = \frac{1}{\lambda}e^{-t/\lambda}$ であり、パラメータ $1/\lambda$ の指数分布に一致します。ハザード関数は定数 $1/\lambda$ であり、「過去の履歴によらず故障率が一定」という無記憶性を持ちます。
$k = 2$: レイリー分布
$k = 2$ のとき、$f(t) = \frac{2t}{\lambda^2}e^{-t^2/\lambda^2}$ であり、パラメータ $\sigma = \lambda/\sqrt{2}$ のレイリー分布に一致します。レイリー分布は、2次元ガウスノイズの距離が従う分布として通信理論で重要です。
$k = 3.4$: 正規分布への近似
$k \approx 3.44$ のとき、ワイブル分布の形状は正規分布にかなり近くなります(歪度がほぼゼロ)。これは、寿命データが正規分布に見える場合にワイブル分布でもモデル化できることを意味します。
極値分布との関係
ワイブル分布は極値分布理論と深く関連しています。$X \sim \text{Weibull}(k, \lambda)$ のとき、$Y = \ln X$ はタイプI極値分布(ガンベル分布)の鏡像、すなわち最小値のガンベル分布に従います。
$$ Y = \ln X \sim \text{Gumbel}_{\min}(\mu = \ln\lambda, \sigma = 1/k) $$
逆に言えば、ワイブル分布は「対数を取るとガンベル分布になる分布」です。フィッシャー・ティペットの定理により、独立同分布な確率変数の最小値の極限分布は3つのタイプ(ワイブル型、フレシェ型、ガンベル型)のいずれかになります。ワイブル分布はその名の通り、タイプIII極値分布(最小値のワイブル型)に対応しています。
ガンマ分布との比較
ワイブル分布とガンマ分布はどちらも非負の値を取る柔軟な分布であり、寿命データのモデリングでしばしば競合します。主な違いは以下の通りです。
- ハザード関数: ワイブル分布はべき関数(単調増加・単調減少・定数)、ガンマ分布は一般に単調増加($k > 1$のとき一定値に収束)
- 裾の重さ: ワイブル分布の裾は $\exp(-(t/\lambda)^k)$ で指数よりも速く($k > 1$ のとき)または遅く($k < 1$のとき)減衰。ガンマ分布は $t^{k-1}\exp(-t/\lambda)$ で常に指数的減衰
- 解析的な扱いやすさ: ワイブル分布は累積分布関数が閉じた形($F(t) = 1 – e^{-(t/\lambda)^k}$)を持つため、信頼性関数やパーセンタイルの計算が容易です
Pythonによる可視化
さまざまな形状パラメータに対するワイブル分布の確率密度関数とハザード関数を描画します。
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
from scipy.special import gamma
fig, axes = plt.subplots(1, 3, figsize=(18, 5))
lam = 1.0 # 尺度パラメータ
t = np.linspace(0.01, 3, 500)
# (a) 確率密度関数
ax = axes[0]
for k in [0.5, 1.0, 1.5, 2.0, 3.5, 5.0]:
pdf = stats.weibull_min.pdf(t, c=k, scale=lam)
ax.plot(t, pdf, linewidth=2, label=rf"$k = {k}$")
ax.set_xlabel("t", fontsize=12)
ax.set_ylabel("f(t)", fontsize=12)
ax.set_title(r"Weibull PDF ($\lambda = 1$)", fontsize=13)
ax.legend(fontsize=9)
ax.set_ylim(0, 2.5)
ax.grid(True, alpha=0.3)
# (b) 信頼性関数
ax = axes[1]
for k in [0.5, 1.0, 1.5, 2.0, 3.5, 5.0]:
sf = stats.weibull_min.sf(t, c=k, scale=lam)
ax.plot(t, sf, linewidth=2, label=rf"$k = {k}$")
ax.set_xlabel("t", fontsize=12)
ax.set_ylabel("R(t)", fontsize=12)
ax.set_title(r"Reliability function ($\lambda = 1$)", fontsize=13)
ax.legend(fontsize=9)
ax.grid(True, alpha=0.3)
# (c) ハザード関数
ax = axes[2]
for k in [0.5, 1.0, 1.5, 2.0, 3.5, 5.0]:
hazard = (k / lam) * (t / lam)**(k - 1)
ax.plot(t, hazard, linewidth=2, label=rf"$k = {k}$")
ax.set_xlabel("t", fontsize=12)
ax.set_ylabel("h(t)", fontsize=12)
ax.set_title(r"Hazard function ($\lambda = 1$)", fontsize=13)
ax.legend(fontsize=9)
ax.set_ylim(0, 8)
ax.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig("weibull_overview.png", dpi=150, bbox_inches="tight")
plt.show()
このグラフから、ワイブル分布の形状について以下の特徴が読み取れます。
-
左図(PDF): $k < 1$ では $t = 0$ で発散する急峻な減衰形状、$k = 1$ では指数分布、$k > 1$ ではピークを持つ山型の分布です。$k$ が大きくなるほどピークが鋭くなり、正規分布に近づきます
-
中央図(信頼性関数): $k = 1$(指数分布)の場合は直線的な減衰(対数スケールで)、$k > 1$ では初めはゆっくり減衰し後半で急速に減衰する S字型の曲線です
-
右図(ハザード関数): $k < 1$ では時間とともに故障率が減少(初期故障型)、$k = 1$ では一定(偶発故障型)、$k > 1$ では時間とともに故障率が増加(摩耗故障型)。これがワイブル分布の最も重要な性質です
ワイブルプロットによるパラメータ推定
ワイブルプロットの原理
ワイブル分布のパラメータを推定する古典的な手法がワイブルプロット(Weibull plot)です。信頼性関数の対数を2回取ると線形関係が現れます。
$$ \ln\left[-\ln R(t)\right] = k\ln t – k\ln\lambda $$
$Y = \ln[-\ln R(t)]$ と $X = \ln t$ の関係が直線になり、傾きが $k$、切片が $-k\ln\lambda$ です。
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
np.random.seed(42)
# ワイブル分布からのデータ生成
k_true = 2.5
lam_true = 100.0
n = 50
data = np.random.weibull(k_true, size=n) * lam_true
# ソートと経験的CDF(メディアンランク近似)
data_sorted = np.sort(data)
median_rank = (np.arange(1, n+1) - 0.3) / (n + 0.4) # Benard近似
# ワイブルプロット用の変換
x = np.log(data_sorted)
y = np.log(-np.log(1 - median_rank))
# 線形回帰
coeffs = np.polyfit(x, y, 1)
k_est = coeffs[0]
lam_est = np.exp(-coeffs[1] / k_est)
fig, axes = plt.subplots(1, 2, figsize=(14, 5.5))
# (a) ワイブルプロット
ax = axes[0]
ax.scatter(x, y, color="steelblue", s=30, alpha=0.7, label="Data")
x_fit = np.linspace(x.min() - 0.3, x.max() + 0.3, 100)
y_fit = coeffs[0] * x_fit + coeffs[1]
ax.plot(x_fit, y_fit, "r-", linewidth=2,
label=rf"Fit: $k={k_est:.2f}$, $\lambda={lam_est:.1f}$")
ax.set_xlabel(r"$\ln(t)$", fontsize=12)
ax.set_ylabel(r"$\ln[-\ln R(t)]$", fontsize=12)
ax.set_title("Weibull probability plot", fontsize=13)
ax.legend(fontsize=10)
ax.grid(True, alpha=0.3)
ax.text(0.05, 0.85, f"True: k={k_true:.1f}, $\\lambda$={lam_true:.0f}\n"
f"Est: k={k_est:.2f}, $\\lambda$={lam_est:.1f}",
transform=ax.transAxes, fontsize=10,
bbox=dict(boxstyle="round", facecolor="wheat", alpha=0.5))
# (b) フィットの確認
ax = axes[1]
t_plot = np.linspace(0.1, max(data) * 1.3, 500)
# 推定パラメータによるPDF
pdf_est = stats.weibull_min.pdf(t_plot, c=k_est, scale=lam_est)
pdf_true = stats.weibull_min.pdf(t_plot, c=k_true, scale=lam_true)
ax.hist(data, bins=15, density=True, alpha=0.6, color="steelblue",
edgecolor="white", label="Data")
ax.plot(t_plot, pdf_est, "r-", linewidth=2, label=f"Estimated (k={k_est:.2f})")
ax.plot(t_plot, pdf_true, "k--", linewidth=1.5, label=f"True (k={k_true:.1f})")
ax.set_xlabel("Lifetime t", fontsize=12)
ax.set_ylabel("Density", fontsize=12)
ax.set_title("Weibull fit verification", fontsize=13)
ax.legend(fontsize=10)
ax.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig("weibull_plot.png", dpi=150, bbox_inches="tight")
plt.show()
このパラメータ推定の結果から、以下のことが確認できます。
-
左図(ワイブルプロット): データ点がほぼ直線上に乗っている 。これはワイブル分布の当てはまりが良いことを示しています。もしデータ点が系統的に曲がっていれば、ワイブル分布は適切なモデルではないと判断できます
-
右図: 推定されたパラメータによるPDF(赤)が真のPDF(黒破線)とよく一致している 。50個のサンプルから形状パラメータ $k$ と尺度パラメータ $\lambda$ が精度よく推定できていることがわかります
信頼性解析の実装例
製品の寿命データを用いた信頼性解析の完全な例を実装します。
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats, optimize
np.random.seed(42)
# 模擬的な寿命データ(摩耗故障型: k > 1)
k_true = 3.0
lam_true = 5000 # 時間(例: 運転時間)
n_products = 100
lifetimes = np.random.weibull(k_true, size=n_products) * lam_true
# 最尤推定
shape_mle, _, scale_mle = stats.weibull_min.fit(lifetimes, floc=0)
# B10ライフ(10%故障時間)の推定
B10 = stats.weibull_min.ppf(0.10, c=shape_mle, scale=scale_mle)
# 平均寿命
MTTF = scale_mle * gamma(1 + 1/shape_mle)
from scipy.special import gamma
fig, axes = plt.subplots(1, 2, figsize=(14, 5.5))
# (a) 信頼性指標の可視化
ax = axes[0]
t = np.linspace(0, max(lifetimes) * 1.2, 500)
R = stats.weibull_min.sf(t, c=shape_mle, scale=scale_mle)
ax.plot(t, R, "b-", linewidth=2, label=f"Weibull (k={shape_mle:.2f})")
# 信頼性指標
ax.axhline(0.9, color="red", linewidth=1, linestyle="--", alpha=0.7)
ax.axvline(B10, color="red", linewidth=1, linestyle="--", alpha=0.7,
label=f"B10 life = {B10:.0f} hrs")
ax.axhline(0.5, color="green", linewidth=1, linestyle=":", alpha=0.7)
median_life = stats.weibull_min.ppf(0.5, c=shape_mle, scale=scale_mle)
ax.axvline(median_life, color="green", linewidth=1, linestyle=":", alpha=0.7,
label=f"Median life = {median_life:.0f} hrs")
# 経験的な信頼性
sorted_data = np.sort(lifetimes)
empirical_R = 1 - (np.arange(1, n_products + 1) - 0.3) / (n_products + 0.4)
ax.step(sorted_data, empirical_R, "gray", linewidth=1, alpha=0.7,
label="Empirical", where="post")
ax.set_xlabel("Operating time [hours]", fontsize=12)
ax.set_ylabel("Reliability R(t)", fontsize=12)
ax.set_title("Reliability analysis", fontsize=13)
ax.legend(fontsize=9)
ax.grid(True, alpha=0.3)
# (b) 信頼性指標のサマリー
ax = axes[1]
ax.axis("off")
summary_text = (
f"Weibull Analysis Summary\n"
f"{'='*40}\n\n"
f"Sample size: {n_products}\n"
f"Shape parameter k: {shape_mle:.3f}\n"
f"Scale parameter λ: {scale_mle:.1f} hrs\n\n"
f"{'='*40}\n"
f"Failure type: {'Wear-out' if shape_mle > 1 else 'Random' if abs(shape_mle-1) < 0.1 else 'Infant mortality'}\n"
f"B10 life: {B10:.0f} hrs\n"
f"Median life (B50): {median_life:.0f} hrs\n"
f"MTTF: {MTTF:.0f} hrs\n"
f"R(1000 hrs): {stats.weibull_min.sf(1000, c=shape_mle, scale=scale_mle):.4f}\n"
f"R(3000 hrs): {stats.weibull_min.sf(3000, c=shape_mle, scale=scale_mle):.4f}\n"
f"R(5000 hrs): {stats.weibull_min.sf(5000, c=shape_mle, scale=scale_mle):.4f}\n"
)
ax.text(0.1, 0.95, summary_text, transform=ax.transAxes,
fontsize=12, verticalalignment="top", fontfamily="monospace",
bbox=dict(boxstyle="round", facecolor="lightyellow", alpha=0.8))
plt.tight_layout()
plt.savefig("weibull_reliability_analysis.png", dpi=150, bbox_inches="tight")
plt.show()
この信頼性解析から、以下の実用的な知見が得られます。
-
推定された形状パラメータ $k > 1$ であるため、この製品は摩耗故障型に分類されます。使用時間が長くなるほど故障率が上昇するため、予防保全(定期交換)が推奨されます
-
B10ライフは製品の10%が故障する時間であり、保証期間の設定基準として使われます。このB10ライフ以内に保証期間を設定すれば、保証期間中の故障率を10%以下に抑えられます
-
経験的な信頼性関数(灰色)とワイブルモデル(青)がよく一致している ことから、ワイブル分布がこのデータの適切なモデルであることが確認できます
ワイブル分布のパラメータ推定法
最尤推定
ワイブル分布の最尤推定は、形状パラメータ $k$ について閉じた形の解が得られないため、数値的な最適化が必要です。
観測データ $t_1, t_2, \dots, t_n$ に対する対数尤度関数は
$$ \ell(k, \lambda) = n\ln k – nk\ln\lambda + (k-1)\sum_{i=1}^n \ln t_i – \sum_{i=1}^n \left(\frac{t_i}{\lambda}\right)^k $$
$\lambda$ について偏微分をゼロとおくと、$k$ が与えられたときの $\lambda$ の最尤推定量は
$$ \hat{\lambda}(k) = \left(\frac{1}{n}\sum_{i=1}^n t_i^k\right)^{1/k} $$
これを対数尤度に代入すると、$k$ のみの関数になり、ニュートン法やブレント法で数値的に解けます。
打ち切りデータの扱い
信頼性試験では、すべての製品が故障するまで待てない場合があります。試験を途中で打ち切った場合のデータを打ち切りデータ(censored data)と呼びます。
右打ち切り(right censoring): 時刻 $c_i$ まで観測して故障しなかった場合、「寿命は $c_i$ 以上」という情報しか得られません。打ち切りデータに対する対数尤度は
$$ \ell = \sum_{i \in \text{故障}} \ln f(t_i) + \sum_{i \in \text{打ち切り}} \ln R(c_i) $$
故障したデータは通常の確率密度で寄与し、打ち切られたデータは信頼性関数(生存関数)で寄与します。この形式はCox比例ハザードモデルとも共通する考え方です。
バスタブ曲線と混合ワイブル分布
バスタブ曲線
多くの製品のハザード関数は「バスタブ曲線」(bathtub curve)の形をしています。
- 初期故障期(infant mortality): 製造不良による故障。ハザード率は減少($k < 1$)
- 偶発故障期(useful life): ランダムな故障。ハザード率は一定($k = 1$)
- 摩耗故障期(wear-out): 経年劣化による故障。ハザード率は増加($k > 1$)
単一のワイブル分布ではバスタブ曲線を表現できません。そこで、3つのワイブル分布の混合として
$$ f(t) = w_1 f_1(t; k_1, \lambda_1) + w_2 f_2(t; k_2, \lambda_2) + w_3 f_3(t; k_3, \lambda_3) $$
($w_1 + w_2 + w_3 = 1$)を使う混合ワイブルモデルが実用的に用いられます。$k_1 < 1$, $k_2 = 1$, $k_3 > 1$ とすることで、3つの故障パターンを同時にモデル化できます。
ワイブル分布と加速寿命試験
製品を通常の使用条件で長期間試験するのは時間がかかるため、過酷な条件(高温、高湿度、高電圧など)で試験を加速する加速寿命試験(accelerated life testing, ALT)が実施されます。
ワイブル分布では、ストレスレベル $s$ に対して尺度パラメータが $\lambda(s) = \lambda_0 \cdot g(s)$ と変化し、形状パラメータ $k$ はストレスに依存しないと仮定するのが一般的です。代表的な加速モデルとして、アレニウスモデル $\lambda(T) = A \exp(E_a/kT)$(温度加速)やべき乗則モデル $\lambda(V) = A V^{-n}$(電圧加速)が使われます。
加速寿命試験の結果を通常条件に外挿する際には、形状パラメータ $k$ が一定であるという仮定が重要です。この仮定が成り立たない場合は、ストレスごとに別のワイブル分布をあてはめ、パラメータの変化傾向を確認する必要があります。
まとめ
本記事では、ワイブル分布の定義から導出、性質、信頼性工学への応用までを解説しました。
- ワイブル分布は最弱リンク理論から導かれる寿命分布 であり、形状パラメータ $k$ と尺度パラメータ $\lambda$ の2つのパラメータを持ちます
- ハザード関数 $h(t) = (k/\lambda)(t/\lambda)^{k-1}$ がべき関数であり、$k < 1$ で初期故障型、$k = 1$ で偶発故障型(指数分布)、$k > 1$ で摩耗故障型を表現します
- モーメント $E[X^n] = \lambda^n\Gamma(1+n/k)$ はガンマ関数を通じて計算されます
- ワイブルプロットによる視覚的なパラメータ推定と適合度判定が可能です
- 信頼性解析ではB10ライフ、MTTF、信頼性関数などの指標を計算し、保証期間の設定やメンテナンス計画に活用します
次のステップとして、以下の記事も参考にしてください。