スプレッドシートのWEIBULL関数の使い方|ワイブル分布(互換)

スポンサーリンク

「この製品、あと何時間くらいもつんだろう?」。品質管理やメンテナンス計画で、こんな疑問を持ったことはありませんか?

平均寿命はわかっていても、特定の時間内に故障する確率を出すのは簡単ではありません。手計算で求めようとすると、べき乗やeの計算が出てきて大変ですよね。

そんなときに使うのがWEIBULL関数です。この記事では基本構文から実務活用まで解説します。累積分布と確率密度の使い分けや、WEIBULL.DIST関数との関係もあわせて紹介しますよ。

WEIBULL関数とは

WEIBULL関数(読み方: ワイブル関数)は、ワイブル分布にもとづいて確率を返す関数です。ワイブル分布とは、製品の寿命や故障までの時間を表すのによく使われる確率分布です。

「WEIBULL」はスウェーデンの数学者ワロディ・ワイブル(Waloddi Weibull)の名前に由来しています。

たとえば「平均1,000時間で故障する部品が、500時間以内に壊れる確率」を1つの数式で求められます。

WEIBULL関数にできることをまとめると、次のとおりです。

  • ある時間内に製品が故障する確率を求める(累積分布)
  • 特定の時点での故障確率の密度を求める
  • 製品寿命の予測やメンテナンス計画の立案に使う
  • 形状パラメータを変えて故障パターン(初期故障・偶発故障・摩耗故障)を分析する

NOTE

WEIBULL関数はGoogleスプレッドシートの全バージョンで使えます。ただし互換関数のため、新しく数式を書くときはWEIBULL.DIST関数の使用が推奨されています。

ワイブル分布が使える場面とは

ワイブル分布は、次のような場面で使われます。

  1. 製品の寿命分析: 電子部品やモーターなどの故障時間を予測する
  2. 品質管理: 不良品の発生タイミングを統計的に把握する
  3. メンテナンス計画: 予防保全のタイミングを確率で決める
  4. 信頼性工学: 製品の故障率が時間とともにどう変化するかを分析する

指数分布(EXPON.DIST関数)は「故障率が一定」という前提ですが、ワイブル分布は「故障率が時間とともに変化する」場面も扱えます。そこがワイブル分布の強みです。

TIP

ワイブル分布の形状パラメータ(alpha)を1にすると、指数分布とまったく同じになります。ワイブル分布は指数分布を含む、より汎用的な分布といえます。

基本構文と4つの引数

=WEIBULL(x, alpha, beta, cumulative)

カッコの中に4つの引数を指定します。

引数必須/任意説明
x必須評価する値(故障時間など、0以上の数値)
alpha(アルファ)必須形状パラメータ(分布の形を決める、0より大きい数値)
beta(ベータ)必須尺度パラメータ(分布のスケールを決める、0より大きい数値)
cumulative必須TRUEで累積分布、FALSEで確率密度

alphaは「形状パラメータ」と呼ばれます。この値によって分布の形(故障パターン)が大きく変わります。betaは「尺度パラメータ」と呼ばれ、時間のスケール(目安となる寿命)を決めます。

WARNING

alphaとbetaはどちらも0より大きい値を指定してください。0以下を指定すると#NUM!エラーになります。

WEIBULL.DIST関数(推奨関数)との関係

GoogleスプレッドシートにはWEIBULL.DISTという関数もあります。これはWEIBULL関数の新しいバージョンです。計算結果はまったく同じです。

=WEIBULL(500, 2, 1000, TRUE)          --- 旧関数名(互換関数)
=WEIBULL.DIST(500, 2, 1000, TRUE)     --- 新関数名(推奨)

引数の数・順番・意味もすべて同じです。新しく数式を書くときはWEIBULL.DIST関数を使いましょう。既存のシートでWEIBULL関数が使われていても、そのまま動作します。急いで書き換える必要はありません。

NOTE

WEIBULL.DIST関数の詳しい使い方は、別の記事で解説しています。

WEIBULL関数の基本的な使い方

累積分布関数で「〇〇時間以内の故障確率」を求める

4番目の引数にTRUEを指定すると累積分布関数(CDF)の値を返します。「時間x以内に故障する確率」です。

たとえば形状パラメータ alpha=2、尺度パラメータ beta=1000のとき、500時間以内に故障する確率を求めてみましょう。

=WEIBULL(500, 2, 1000, TRUE)

結果は約0.2212(22.1%)です。500時間以内に故障する確率は約22%です。

数学的には、次の式で計算されています。

F(x) = 1 - e^(-(x/beta)^alpha)

実務で「何時間以内に故障する確率は?」と聞かれたら、TRUEを使ってください。

確率密度関数で特定時点の値を求める

4番目の引数にFALSEを指定すると確率密度関数(PDF)の値を返します。「時間xでの故障確率の密度」を表す値です。

=WEIBULL(500, 2, 1000, FALSE)

結果は約0.000778です。

数学的には、次の式で計算されています。

f(x) = (alpha / beta^alpha) * x^(alpha-1) * e^(-(x/beta)^alpha)

確率密度はそのままでは「ちょうどx時間での故障確率」にはなりません。連続分布なので、確率はTRUEで求めるのが一般的です。

2つを比較してみる(サンプルデータつき)

alpha=2、beta=1000の場合で、経過時間ごとの結果を比べてみましょう。

経過時間(h)FALSE(確率密度)TRUE(x時間以内の故障確率)
1000.0001980.0100(1.0%)
2000.0003850.0392(3.9%)
5000.0007780.2212(22.1%)
8000.0008050.4727(47.3%)
10000.0007360.6321(63.2%)
15000.0003160.8946(89.5%)
20000.0000730.9817(98.2%)

alpha=2なので、確率密度(FALSE列)はベータ付近でピークを迎えます。累積確率(TRUE列)は時間とともに1に近づいていきます。

「x時間以上もつ確率」を求めたいときは =1 - WEIBULL(x, alpha, beta, TRUE) と書きます。たとえば「1,500時間以上もつ確率」なら次のとおりです。

=1 - WEIBULL(1500, 2, 1000, TRUE)

結果は約0.1054(10.5%)です。

WEIBULL関数の実務活用パターン

基本がわかったところで、実際の業務で使えるパターンを紹介します。

製品の故障率・寿命分析

「平均寿命が約1,000時間のモーターがある。保証期間を500時間に設定したい。保証期間内に故障する確率はどのくらいか?」を考えてみましょう。

過去の故障データから alpha=1.5、beta=1000 が推定されているとします。

=WEIBULL(500, 1.5, 1000, TRUE)

結果は約0.1455(14.6%)です。保証期間500時間以内に故障する確率は約15%です。

では保証期間を800時間に延ばすとどうなるでしょうか。

=WEIBULL(800, 1.5, 1000, TRUE)

結果は約0.3440(34.4%)です。800時間にすると故障確率が約34%に上がります。保証コストとのバランスを考える判断材料になりますね。

形状パラメータで故障パターンを読み解く

ワイブル分布の最大の特徴は、形状パラメータ(alpha)の値で故障パターンが変わることです。これは「バスタブ曲線」として知られています。

alphaの値故障パターン意味
alpha < 1初期故障型使い始めに故障が多く、時間とともに故障率が下がる
alpha = 1偶発故障型故障率が一定(指数分布と同じ)
alpha > 1摩耗故障型使い続けるほど故障率が上がる

実際に同じ beta=1000 で、alphaを変えて500時間以内の故障確率を比較してみましょう。

=WEIBULL(500, 0.5, 1000, TRUE)    --- alpha=0.5(初期故障型)
=WEIBULL(500, 1, 1000, TRUE)      --- alpha=1(偶発故障型)
=WEIBULL(500, 2, 1000, TRUE)      --- alpha=2(摩耗故障型)
=WEIBULL(500, 3, 1000, TRUE)      --- alpha=3(摩耗故障型・急激)
alpha故障パターン500h以内の故障確率
0.5初期故障型0.5073(50.7%)
1.0偶発故障型0.3935(39.3%)
2.0摩耗故障型0.2212(22.1%)
3.0摩耗故障型0.1175(11.8%)

alphaが小さいほど初期に故障しやすく、大きいほど初期は安定している代わりに後から故障率が急激に上がります。自社製品の故障データを分析して、どの故障パターンに当てはまるかを把握することが品質改善の第一歩です。

メンテナンス時期の判断

「故障確率が10%を超える前にメンテナンスしたい」という場合、何時間で10%に達するかを逆算できます。

直接的な逆関数はありませんが、経過時間を変えながら確率を見ていく方法が実用的です。

経過時間(h)数式故障確率
200=WEIBULL(200, 2, 1000, TRUE)3.9%
300=WEIBULL(300, 2, 1000, TRUE)8.6%
350=WEIBULL(350, 2, 1000, TRUE)11.5%

alpha=2、beta=1000の場合、300時間前後でメンテナンスするのが妥当です。300時間での故障確率は約8.6%で、目標の10%以内に収まっていますね。

WEIBULL関数でよくあるエラーと対処法

WEIBULL関数でつまずきやすいポイントをまとめました。

エラー原因対処法
#NUM!xが負の値0以上の数値を指定する
#NUM!alphaが0以下0より大きい数値を指定する
#NUM!betaが0以下0より大きい数値を指定する
#VALUE!引数に文字列が含まれるセル参照先が数値か確認する
想定外の値TRUE/FALSEの指定ミス累積確率ならTRUE、密度ならFALSE

WARNING

4番目の引数(cumulative)は省略できません。TRUEとFALSEでは結果がまったく異なります。「x時間以内に故障する確率」を求めたいのにFALSEを指定すると、確率密度が返ってしまいます。

WEIBULL関数とWEIBULL.DIST関数の違い

WEIBULL関数は、以前のバージョンとの互換性を維持するために残されている関数です。引数・計算結果はWEIBULL.DIST関数とまったく同じです。

比較項目WEIBULLWEIBULL.DIST
関数名旧名称(互換関数)新名称(推奨)
引数の数4つ4つ
引数の順番x, alpha, beta, cumulativex, alpha, beta, cumulative
計算結果同じ同じ
Googleスプレッドシート使用可使用可
Excel使用可(互換関数)使用可(推奨)

新しく数式を書くときはWEIBULL.DIST関数を使いましょう。既存のシートでWEIBULL関数が使われていても問題なく動作します。急いで書き換える必要はありません。

ただし、今後のバージョンアップで互換関数が廃止される可能性はゼロではありません。新規のシートではWEIBULL.DISTを選んでおくのが安心です。

確率分布関数ファミリー

Googleスプレッドシートには、確率分布に関連する関数がいくつかあります。目的に応じて使い分けましょう。

関数用途いつ使うか
WEIBULLワイブル分布の確率(互換関数)既存のシートで使われている場合
WEIBULL.DISTワイブル分布の確率(推奨)製品寿命・故障率を分析する場合
EXPON.DIST指数分布の確率故障率が一定の場合(ワイブル分布のalpha=1に相当)
EXPONDIST指数分布の確率(互換関数)既存のシートで使われている場合
NORM.DIST正規分布の確率連続データ(寸法・重量・品質指標など)を扱う場合

迷ったときの判断基準はシンプルです。

  • 故障率が時間とともに変化する → WEIBULL.DIST(またはWEIBULL)
  • 故障率が一定EXPON.DIST
  • 連続データの確率NORM.DIST

まとめ

WEIBULL関数は、ワイブル分布にもとづいて確率を求める互換関数です。

  • 4番目の引数にTRUEで「x以内に故障する確率」が返る
  • FALSEで「時間xでの確率密度」が返る
  • alphaは形状パラメータ(故障パターンを決める)、betaは尺度パラメータ(時間のスケールを決める)
  • alpha < 1で初期故障型、alpha = 1で偶発故障型、alpha > 1で摩耗故障型
  • 製品の故障率分析、保証期間の設定、メンテナンス計画の立案に使える
  • 「x時間以上もつ確率」を求めるには =1 - WEIBULL(x, alpha, beta, TRUE) と書く
  • xが負、alphaやbetaが0以下だと#NUM!エラー
  • WEIBULL.DIST関数と計算結果は同じ。新規にはWEIBULL.DISTを推奨
  • 故障率が一定ならEXPON.DIST関数、連続データの確率ならNORM.DIST関数を使う
タイトルとURLをコピーしました