スプレッドシートでアンケート結果と売上の相関を調べたら「r=0.7 だったけど、この数字って統計的に意味があるの?」と気になったことはありませんか。相関係数のままだと信頼区間を出したり、2つの相関を比較したりが難しいんですよね。
そんなときに役立つのが、スプレッドシートのFISHER関数です。相関係数をz値に変換する「フィッシャー変換」を、引数ひとつで一瞬で計算してくれますよ。CORREL関数やFISHERINV関数と組み合わせれば、信頼区間や比較検定まで実務で使える形に落とし込めます。
この記事では、スプレッドシートのFISHER関数の書式と使い方をまとめて紹介します。CORREL→FISHER→FISHERINVの連携フローや2つの相関係数の比較、エラー対処まで実務目線で解説していきますね。
スプレッドシートのFISHER関数とは?
スプレッドシートのFISHER関数は、数値xをフィッシャー変換してz値を返す統計関数です。読み方は「フィッシャー」。イギリスの統計学者ロナルド・フィッシャーに由来する名前ですよ。
Googleスプレッドシートでは、特別なアドオンを入れなくてもそのまま使えます。Excelから引き継いだブックでも同じ動作をするので、互換性の心配はいりません。
なぜ相関係数をz値に変換するのか
相関係数rは、-1から1の範囲に閉じ込められた値です。rが0.9のように端に近づくと、分布が大きく偏ってしまいます。
この偏りがあると、次のような計算がそのままではできません。
- 相関係数に信頼区間をつけて示したい
- 2つの相関係数に統計的な差があるかを調べたい
- 複数の相関係数の平均を取りたい
そこで使うのがフィッシャー変換(相関係数を正規分布に近い形に直す変換)です。z値は理論上 -∞ から +∞ の範囲を取り、近似的に正規分布に従います。そうすれば信頼区間や検定の公式をそのまま適用できるようになりますよ。
FISHER関数の書式と引数
FISHER関数の構文はとてもシンプルです。
=FISHER(値)
引数は1つだけ。スプレッドシート内のヘルプには =FISHER(値) と表示されますが、Excelの解説では =FISHER(x) と呼ぶことが多いですね。呼び方が違うだけで意味は同じですよ。
引数の仕様
| 引数 | 必須/省略 | 説明 |
|---|---|---|
| 値(x) | 必須 | フィッシャー変換する数値。-1 < x < 1 の範囲で指定する |
指定できるのは「-1より大きく、1より小さい」数値だけです。-1や1ちょうどを渡すと#NUM!エラーになるので気をつけてください。
内部の計算式
FISHER関数は、内部的に次の数式を計算しています。
z = 0.5 × ln((1 + x) / (1 - x))
数学的には逆双曲線正接 arctanh(x) と呼ばれる関数です。スプレッドシートのATANH関数と同じ計算結果になるので、興味のある方は見比べてみるのも面白いですよ。
FISHER関数の入力値と戻り値の対応表
実際にFISHER関数に相関係数を入れたとき、どんなz値が返ってくるのかを一覧にしました。
!_images/spreadsheet-fisher-function/01_sample_fisher-table.png
| 相関係数 r | 数式 | z値(返り値) |
|---|---|---|
| 0 | =FISHER(0) | 0.0000 |
| 0.3 | =FISHER(0.3) | 0.3095 |
| 0.5 | =FISHER(0.5) | 0.5493 |
| 0.7 | =FISHER(0.7) | 0.8673 |
| 0.75 | =FISHER(0.75) | 0.9730 |
| 0.9 | =FISHER(0.9) | 1.4722 |
rが0付近ではrとz値の差はほとんどありません。一方、rが1に近づくほどz値はぐんと大きくなります。
rが負の値の場合は、z値も符号が反転して返ります。たとえば=FISHER(-0.5)は-0.5493になりますよ。
この対応関係を頭に入れておくと、計算結果がおかしいときに「直感で気づける」のが便利です。
実務フロー:CORREL → FISHER → FISHERINV で信頼区間を求める
FISHER関数は単体で使うより、他の関数と組み合わせてこそ威力を発揮します。ここでは「相関係数0.7の95%信頼区間」を求める流れを、n=30件のデータを想定して紹介します。
手順1:CORRELで相関係数を算出
まずはCORREL関数で2つのデータ列の相関係数を求めます。
=CORREL(A2:A31, B2:B31)
30件のサンプルから、たとえば r = 0.7 が得られたとしましょう。
手順2:FISHERでz値に変換
続いてFISHER関数でz値に変換します。
=FISHER(C2)
C2にCORRELの結果(0.7)が入っていれば、z値は0.8673になります。
手順3:標準誤差と信頼区間を計算
z値に変換した状態なら、標準誤差は次の式でサッと出せます。
=1/SQRT(n-3)
n=30の場合、標準誤差は 1/√27 ≒ 0.1925 です。95%信頼区間(z値上での上下限)は次のように計算します。
下限: =D2 - 1.96 * E2
上限: =D2 + 1.96 * E2
D2がz値、E2が標準誤差ですね。1.96は95%信頼水準に対応する標準正規分布の臨界値ですよ。今回の例だと、z値上の信頼区間は約 [0.4900, 1.2446] になります。
手順4:FISHERINVで元のスケールに逆変換
最後にFISHERINV関数で、z値を相関係数のスケールに戻します。
=FISHERINV(F2)
FISHERINV関数はFISHER関数の逆関数です。z値を渡すと-1から1の範囲の相関係数に戻してくれますよ。上の例では 0.4900→約0.4542、1.2446→約0.8469 になります。
連携フローのまとめ
ここまでの流れを表で整理すると、次のようになります。
| 手順 | 関数 | 内容 | 結果の例 |
|---|---|---|---|
| 1 | CORREL | 相関係数を算出 | r = 0.7 |
| 2 | FISHER | z値に変換 | z = 0.8673 |
| 3 | 計算 | 信頼区間(z値スケール) | 0.4900〜1.2446 |
| 4 | FISHERINV | 元の相関係数スケールに逆変換 | 0.4542〜0.8469 |
「相関係数0.7の95%信頼区間は、おおよそ0.45〜0.85」と表現できます。この4ステップが実務では一番使う流れですよ。
なお、平均値の信頼区間を求めたいときはCONFIDENCE.T関数やCONFIDENCE.NORM関数の方が向いています。相関係数用はFISHER、平均値用はCONFIDENCE系と覚えておくと迷いませんよ。
応用:2つの相関係数を比較して統計的な差を検定する
FISHER関数のもう一つの活用どころが、2つの相関係数に統計的な差があるかを調べる比較検定です。
たとえば「営業部のデータだとr=0.8、マーケ部のデータだとr=0.5。この差は偶然じゃないの?」という場面ですね。
比較の手順
まず、2つの相関係数それぞれをFISHER関数でz値に変換します。
=FISHER(0.8) → 1.0986
=FISHER(0.5) → 0.5493
次に、2つのz値の差を検定統計量として計算します。
=(z1 - z2) / SQRT(1/(n1-3) + 1/(n2-3))
n1・n2はそれぞれのサンプルサイズです。両方とも30件なら、次のようになりますね。
=(1.0986 - 0.5493) / SQRT(1/27 + 1/27)
この計算結果は約2.018です。絶対値が1.96以上なら、5%有意水準で「2つの相関係数に差がある」と判断できます。
今回は2.018 > 1.96なので、営業部とマーケ部の相関係数の差は統計的に有意、と結論づけられますよ。
同じ発想でカイ二乗検定やz検定を使いたいときは、CHITEST関数やZ.TEST関数の記事もあわせて読んでみてくださいね。
よくあるエラーと対処法
FISHER関数で遭遇しやすいエラーは、次の2種類です。
#NUM! エラー
引数に-1以下または1以上の値を指定すると発生します。
=FISHER(1) → #NUM!エラー
=FISHER(-1) → #NUM!エラー
=FISHER(1.5) → #NUM!エラー
FISHER関数の定義域は「-1より大きく1より小さい」です。境界値の-1と1ちょうどは含まれないので注意してください。
CORREL関数の結果が±1ちょうどになるのは、完全な直線関係のときだけです。通常のデータでは発生しにくいですが、サンプル数が2〜3件と極端に少ないと起こりえますよ。
事前にIF関数でガードしておくと安心です。
=IF(ABS(C2)>=1, "範囲外", FISHER(C2))
#VALUE! エラー
引数に数値以外(文字列など)を指定すると発生します。
=FISHER("abc") → #VALUE!エラー
=FISHER(A1) → A1に文字列が入っていれば #VALUE!エラー
セル参照で渡す場合は、参照先に数値が入っているかを事前に確認しましょう。空白セルや文字列が混じっていると、計算がそこで止まってしまいますよ。
まとめ
この記事では、スプレッドシートのFISHER関数の使い方を解説しました。
- FISHER関数は相関係数をz値にフィッシャー変換する統計関数
- 引数は -1 < x < 1 の範囲で指定する(境界値は不可)
- 変換後のz値は近似的に正規分布に従うため、信頼区間や比較検定に使える
- 実務では CORREL → FISHER → FISHERINV の4ステップで信頼区間を求めるのが王道
- 2つの相関係数の差を検定したいときにも活用できる
関連する統計関数として、CONFIDENCE.T関数・CONFIDENCE.NORM関数・Z.TEST関数・CHITEST関数・F.TEST関数もあわせて確認してみてくださいね。Excelでの使い方はExcelのFISHER関数にもまとめてありますよ。
そのほかのスプレッドシート関数も、目的に合った一本を見つけて業務効率化に役立ててみてください。
