「2つのグループのばらつきに差があるのか、それとも誤差の範囲なのか」。こんな疑問を感じたことはありませんか?
目視でグラフを比べるだけでは、報告書に「統計的に差がある」とは書けません。きちんと数値で裏付けを取りたいですよね。
そんなときに使うのがF.DIST関数です。この記事ではGoogleスプレッドシートでのF.DIST関数の使い方を、基本構文から実務活用まで解説します。TRUE/FALSEの違いや、F.DIST.RTとの使い分けもあわせて紹介しますよ。
スプレッドシートのF.DIST関数とは
F.DIST関数(読み方: エフ・ディスト関数)は、F分布にもとづいて確率を返す関数です。「F」は統計学者フィッシャー(Fisher)に由来し、「DIST」は「Distribution(分布)」の略です。
F分布はカイ二乗分布と同じく右に裾を引く非対称の形が特徴です。「2つのグループの分散の比」を評価するときに使います。正規分布やt分布とは違い、0以上の値しか取りません。
F.DIST関数にできることをまとめると、次のとおりです。
- ある値がF分布の左側何%に位置するかを求める(累積確率)
- F分布のグラフ上の密度(高さ)を取得する
- 2グループのばらつきに統計的な差があるかを判定する(F検定)
- 3グループ以上の平均に差があるかを調べる(分散分析・ANOVA)
NOTE
F.DIST関数はGoogleスプレッドシートの全バージョンで使えます。Excelにも同名の関数があり、動作は同じです。
基本構文と4つの引数
=F.DIST(x, 自由度1, 自由度2, 累積)
カッコの中に4つの引数を指定します。
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| x | 必須 | F分布で評価する数値(0以上) |
| 自由度1(degrees_freedom1) | 必須 | 分子の自由度。1以上の正の整数 |
| 自由度2(degrees_freedom2) | 必須 | 分母の自由度。1以上の正の整数 |
| 累積(cumulative) | 必須 | TRUEで累積分布、FALSEで確率密度 |
TIP
F分布には自由度が2つあります。分子の自由度(自由度1)は「グループ数 – 1」、分母の自由度(自由度2)は「全データ数 – グループ数」で求めます。F検定では「分子 = サンプル数1 – 1」「分母 = サンプル数2 – 1」です。小数を渡した場合は整数部分だけが使われます。
FDIST(旧関数名)との関係
GoogleスプレッドシートにはFDISTという関数もあります。ただしFDISTは右側累積確率を返す旧関数で、引数は3つ(x, 自由度1, 自由度2)です。TRUE/FALSEの切り替えはできません。
=FDIST(3.49, 3, 20) ← 旧関数名(右側確率を返す)
=1 - F.DIST(3.49, 3, 20, TRUE) ← 新関数で同じ結果
新しく数式を書くときはF.DISTを使っておけば安心ですよ。
TRUE/FALSEで何が変わる?累積か密度かを選ぼう
F.DIST関数の4番目の引数「累積」は、TRUEかFALSEで結果がまったく変わります。この違いを押さえておくことが、F.DIST関数を使いこなすポイントです。
TRUE(累積分布関数)——x以下は全体の何%?
TRUEを指定すると累積分布関数(CDF: ある値以下になる確率の合計)の値を返します。実務で使う場面のほとんどがこちらです。
=F.DIST(3.49, 3, 20, TRUE)
この数式は「自由度(3, 20)のF分布で、3.49以下になる確率」を返します。結果は約0.9500(95.0%) です。
つまりF値が3.49以下に収まる確率が約95%ということです。逆にいえば、3.49を超える確率は約5%ですね。この「3.49」は自由度(3, 20)・有意水準5%の臨界値にあたります。
FALSE(確率密度関数)——その値の密度は?
FALSEを指定すると確率密度関数(PDF: F分布グラフ上のy座標の値)を返します。
=F.DIST(3.49, 3, 20, FALSE)
結果は約0.0226です。これは「確率」ではなくグラフの高さなので、直接「何%」と読むことはできません。F分布のグラフを描くときに使います。
2つを比較してみる(サンプルデータつき)
自由度(5, 20)のF分布で、xを変えたときの結果を比べてみましょう。
| x | TRUE(累積確率) | FALSE(確率密度) |
|---|---|---|
| 0.5 | 0.2289(22.9%) | 0.5990 |
| 1 | 0.4563(45.6%) | 0.5868 |
| 2 | 0.8171(81.7%) | 0.1948 |
| 2.71 | 0.9000(90.0%) | 0.0951 |
| 4.10 | 0.9700(97.0%) | 0.0266 |
TRUEの列はxが大きくなるほど1に近づいていきます。FALSEの列はx=1付近にピークがあり、そこから離れるほど小さくなります。F分布のピークが1付近にあるのは、2つのグループのばらつきが同程度なら分散比が1前後になるためですよ。
実務活用3パターン
F.DIST関数の基本がわかったところで、実際の業務で使えるパターンを3つ紹介します。
等分散性のF検定——2グループのばらつきに差があるか判定する
「拠点Aと拠点Bの売上のばらつきに差があるか」を判定するのがF検定です。t検定の前提確認(等分散かどうか)としてもよく使われます。
たとえば、拠点A(10件)と拠点B(12件)の売上データがあるとします。分散を計算した結果、分散A = 250、分散B = 100 だったとします。
F値は「大きいほうの分散 / 小さいほうの分散」で求めます。
F値 = 250 / 100 = 2.5
自由度1 = 10 – 1 = 9、自由度2 = 12 – 1 = 11 です。
p値(右側確率)を求めるには、F.DIST.RTを使います。
=F.DIST.RT(2.5, 9, 11)
結果は約0.0808です。有意水準5%(0.05)を超えているので、「ばらつきに有意な差があるとはいえない」と判断できます。等分散を仮定したt検定を使ってよいということですね。
TIP
p値を
1 - F.DIST()で求める場合は=1 - F.DIST(2.5, 9, 11, TRUE)と書きます。F.DIST.RTを使うほうがシンプルですよ。
一元配置分散分析(ANOVA)——3グループ以上の平均に差があるか調べる
「3つの拠点の売上平均に差があるか」を調べるのが分散分析(ANOVA)です。F.DIST関数はANOVAのp値を手動で求めるときに活躍します。
拠点A・B・Cの月間売上(各5件ずつ、合計15件)を分析する例です。分散分析表を作成した結果、次の値が得られたとします。
| 変動要因 | 変動 | 自由度 | 分散 |
|---|---|---|---|
| グループ間 | 1200 | 2 | 600 |
| グループ内 | 2400 | 12 | 200 |
F値 = グループ間分散 / グループ内分散 = 600 / 200 = 3.0 です。
=F.DIST.RT(3.0, 2, 12)
結果は約0.0876です。有意水準5%を超えているので、「3拠点の平均に有意な差があるとはいえない」となります。
有意水準10%なら有意になるレベルなので、サンプルを増やして再検証するのも一つの方法ですよ。
TIP
手計算が面倒な場合は、Googleスプレッドシートの「データ」メニューから「統計」を使う方法もあります。ただし仕組みを理解するには、F.DIST関数で一度手動計算してみるのがおすすめです。
回帰分析の有意性検定——モデル全体が意味を持つか確認する
回帰分析の結果で「このモデルは統計的に有意か」を判断するときにもF値を使います。
たとえば、説明変数3つ・サンプル数30の重回帰分析でF値が5.2だったとします。
=F.DIST.RT(5.2, 3, 26)
自由度1 = 説明変数の数 = 3、自由度2 = サンプル数 – 説明変数の数 – 1 = 26 です。
結果は約0.0062です。有意水準5%を大きく下回るので、「この回帰モデルは統計的に有意」と判断できますね。
F分布関数ファミリーの使い分け
Googleスプレッドシートには、F分布に関連する関数がいくつかあります。それぞれの役割を整理しておきましょう。
| 関数 | 用途 | 特徴 |
|---|---|---|
| F.DIST | 左側累積確率または確率密度を返す | 最も基本的。CDF/PDFを切り替え可能 |
| F.DIST.RT | 右側累積確率を返す | 1 – F.DIST(x, df1, df2, TRUE) と同じ。p値の算出に直結 |
| F.INV | 確率からF値を逆算する(左側) | F.DISTの逆関数。臨界値の算出に便利 |
| F.INV.RT | 確率からF値を逆算する(右側) | 有意水準から臨界値を直接求められる |
| F.TEST | 2つのデータ範囲でF検定のp値を返す | 分散比を自分で計算しなくてよい |
使い分けのポイントをまとめます。
- 検定のp値を求めたい → F.DIST.RT(右側確率)が直接的
- 臨界値を求めたい → F.INV.RT(例: 有意水準5%・自由度(3, 20)の臨界値 = 3.10)
- データ範囲から直接F検定したい → F.TEST
- グラフを描きたい → F.DIST(x, df1, df2, FALSE)
迷ったらF.DIST.RTでp値を求めるのが実務では安全ですよ。
正規分布(NORM.DIST)・t分布(T.DIST)・カイ二乗分布(CHISQ.DIST)との違い
F.DIST関数とNORM.DIST関数、T.DIST関数、CHISQ.DIST関数はいずれも確率分布の関数ですが、扱うデータの種類が異なります。
| 比較項目 | F.DIST | NORM.DIST | T.DIST | CHISQ.DIST |
|---|---|---|---|---|
| 分布の形 | 右に裾を引く非対称 | 左右対称の釣鐘型 | 左右対称(裾が厚い) | 右に裾を引く非対称 |
| 値の範囲 | 0以上のみ | 全範囲(-∞ ~ +∞) | 全範囲(-∞ ~ +∞) | 0以上のみ |
| 主な用途 | 分散の比較・分散分析 | 連続データの確率計算 | 少数サンプルの平均差の検定 | カテゴリデータの偏り検定 |
| 引数 | x, 自由度1, 自由度2, 累積 | x, 平均, 標準偏差, 累積 | x, 自由度, 累積 | x, 自由度, 累積 |
使い分けの基準はシンプルです。
- 分散(ばらつき)を比べたい → F.DIST
- 連続データの位置を知りたい → NORM.DIST
- 少数サンプルの平均差を検定したい → T.DIST
- カテゴリデータの偏りを調べたい → CHISQ.DIST
よくあるエラーと注意点
F.DIST関数でつまずきやすいポイントをまとめました。
xに負の値を指定して#NUM!エラー
F分布は0以上の値しか取りません。xに負の値を渡すと#NUM!エラーになります。
=F.DIST(-1, 3, 20, TRUE) ← #NUM! エラー
自由度に1未満を指定して#NUM!エラー
自由度1・自由度2はどちらも1以上の正の整数でなければなりません。0を指定すると#NUM!エラーになります。
=F.DIST(2, 0, 20, TRUE) ← #NUM! エラー
引数に文字列を渡して#VALUE!エラー
数値であるべき引数にテキストが入ると#VALUE!エラーになります。セル参照を使うときは、参照先が数値であることを確認しましょう。
分散比の大小を逆にしてしまう
F検定では「大きい分散 / 小さい分散」が原則です。逆にするとF値が1未満になり、右側確率が大きくなって検定の感度が落ちます。どちらの分散が大きいかを先に確認してから計算してくださいね。
F.DIST.RTとF.DISTの混同
F.DISTのTRUEは「左側」の累積確率を返します。検定のp値は「右側」なので、F.DIST.RTを使うか、1 - F.DIST(x, df1, df2, TRUE) と書く必要があります。p値を求めるつもりでF.DIST(x, df1, df2, TRUE)をそのまま使うと、結果が逆になってしまいますよ。
まとめ
F.DIST関数は、F分布にもとづいて確率を求める関数です。
- 4番目の引数にTRUEを指定すると「x以下の累積確率」が返る
- FALSEを指定するとグラフの密度値が返る(実務ではTRUEが主役)
- 2グループのばらつき比較(F検定)や3グループ以上の平均差検定(分散分析)に使える
- p値を求めるにはF.DIST.RT(右側確率)が便利
- xに負の値を渡すと
#NUM!エラー。分散比は「大きい / 小さい」の順に注意 - 関連関数として、逆算にはF.INV、データから直接検定するにはF.TESTが使える
F検定や分散分析は「ばらつきや平均に意味のある差があるか」を判断する基本の手法です。データ分析の裏付けに、ぜひ活用してみてくださいね。
