相関分析でFISHER関数を使ったあと、変換した値を元の相関係数に戻す方法で困ったことはありませんか。
フィッシャー変換した数値はそのままではレポートに載せにくいですよね。元の相関係数に戻すときに使うのが、スプレッドシートのFISHERINV関数です。FISHER関数とセットで、相関係数の信頼区間計算などに活躍してくれますよ。
この記事では、GoogleスプレッドシートのFISHERINV関数の使い方を、構文から実践例まで丁寧に解説していきます。
スプレッドシートのFISHERINV関数とは
FISHERINV関数の読み方は「フィッシャー・インバース」です。INVは「Inverse(逆)」の略ですね。FISHER関数の逆変換を行うための関数です。
FISHERINV関数は、フィッシャー変換(フィッシャーのZ変換)された値を元の数値に戻します。FISHER関数で変換した値を入力すると、変換前の相関係数が返ってきますよ。
数式で表すと、次の関係になっています。
- z = FISHER(r) のとき、FISHERINV(z) = r
たとえば相関係数 0.5 をFISHER関数で変換すると約 0.5493 になります。この 0.5493 をFISHERINV関数に渡すと、元の 0.5 に戻るというわけですね。
数学的にはFISHERINV関数の計算は「双曲線正接(ハイパボリック・タンジェント)」と同じです。スプレッドシートのTANH関数でも同じ結果が得られますよ。
FISHERINV関数はExcel互換関数として実装されています。Excelブックをスプレッドシートにインポートしてもそのまま動きますし、対応バージョンの違いを気にする必要もありません。
FISHERINV関数の書き方(構文と引数)
基本構文
=FISHERINV(値)
引数は1つだけなので、とてもシンプルです。
引数の説明
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 値 | 必須 | フィッシャー変換された数値を指定します |
引数「値」には、FISHER関数で変換された値を指定します。セル参照でも直接入力でもOKです。
FISHER関数の引数は -1 より大きく 1 未満の範囲しか受け付けません。一方、FISHERINV関数の引数にはどんな実数でも指定できます。ただし、結果は必ず -1 から 1 の間に収まりますよ。
FISHERINV関数の基本的な使い方
実際にスプレッドシートでFISHERINV関数を使ってみましょう。
セル参照で指定する場合
セルA1に「0.549306」が入っているとします。
=FISHERINV(A1)
結果は 0.5 になります。FISHER(0.5) の結果を逆変換して元に戻した形ですね。
数値を直接入力する場合
=FISHERINV(1.098612)
結果は約 0.8 です。FISHER(0.8) が 1.098612 なので、正しく逆変換できていますね。
いくつかの入出力を確認してみましょう
| 入力値 | FISHERINV の結果 | 意味 |
|---|---|---|
| 0 | 0 | 相関なし |
| 0.549306 | 0.5 | 中程度の正の相関 |
| 1.098612 | 0.8 | 強い正の相関 |
| -0.549306 | -0.5 | 中程度の負の相関 |
| 2 | 0.9640 | 非常に強い正の相関 |
入力が0なら結果も0になります。正の値なら正、負の値なら負の相関係数が返ってきますよ。入力値が大きくなるほど結果は ±1 に近づいていきます。
FISHERINV関数の実践的な使い方
複数の相関係数の平均を求める
相関係数はそのまま平均を取っても統計的に正確ではありません。フィッシャー変換してから平均を取り、最後にFISHERINV関数で戻すのが正しい手順です。
たとえば、3つの調査で相関係数 0.6、0.7、0.8 が得られたとしますね。
手順:
- 各相関係数をFISHER関数で変換する
- FISHER(0.6) ≈ 0.6931
- FISHER(0.7) ≈ 0.8673
- FISHER(0.8) ≈ 1.0986
- 変換後の値の平均を計算する
- (0.6931 + 0.8673 + 1.0986) / 3 ≈ 0.8864
- FISHERINV関数で元のスケールに戻す
- FISHERINV(0.8864) ≈ 0.7097
単純平均だと 0.7 ですが、フィッシャー変換を経由した正確な平均は約 0.71 です。わずかな差ですが、統計的にはこちらが正しい値になりますよ。
スプレッドシートでは、次のようにまとめて書けます。
=FISHERINV(AVERAGE(FISHER(B2),FISHER(B3),FISHER(B4)))
B2〜B4 に相関係数が入っている前提です。配列関数の ARRAYFORMULA で書きたい場合は、次のようにできますよ。
=FISHERINV(AVERAGE(ARRAYFORMULA(FISHER(B2:B4))))
CORREL関数と組み合わせて信頼区間を求める
相関係数の信頼区間を求めるときにも、FISHERINV関数が活躍します。手順は次のとおりです。
- CORREL関数で相関係数 r を求める
- FISHER関数で z 値に変換する
- z の信頼区間を計算する(標準誤差 = 1 / SQRT(n-3))
- FISHERINV関数で上限・下限を元の相関係数に戻す
たとえば、30組のデータで相関係数が 0.7 だったとします。95%信頼区間の下限はこの式で求められますよ。
=FISHERINV(FISHER(0.7)-1.96/SQRT(30-3))
結果は約 0.4542 です。上限は符号を反転させるだけですね。
=FISHERINV(FISHER(0.7)+1.96/SQRT(30-3))
結果は約 0.8469 になります。95%信頼区間は [0.45, 0.85] とわかりますね。
99%信頼区間を求めたい場合は、1.96 を 2.576 に置き換えてください。スプレッドシートには NORM.S.INV 関数(標準正規分布の逆関数)もあります。NORM.S.INV(0.975) と書けば、自動的に 1.96 が得られますよ。
汎用的なコピペ数式にしておくと便利です。
=FISHERINV(FISHER(相関係数)-NORM.S.INV(0.975)/SQRT(サンプル数-3))
メタ分析で複数研究の相関をまとめる
複数の研究結果を統合するメタ分析でも、FISHER→平均→FISHERINV の手順は定番です。標本サイズで重み付けしたいときは、SUMPRODUCT関数と組み合わせると計算できますよ。
=FISHERINV(SUMPRODUCT(FISHER(B2:B6),C2:C6)/SUM(C2:C6))
B列に相関係数、C列にサンプルサイズが入っている想定です。
よくあるエラーと対処法
FISHERINV関数はシンプルなので、エラーが出る場面は限られています。
#VALUE! エラー
引数に数値以外(文字列や空白セル)を指定すると #VALUE! エラーが返ります。
対処法: 引数が数値であることを確認しましょう。セル参照を使う場合は、ISNUMBER関数(数値かどうかを判定する関数)でチェックできますよ。
=IF(ISNUMBER(A1), FISHERINV(A1), "数値を入力してください")
#NAME? エラー
関数名のスペルミスで発生します。「FISHERINV」を「FISHERINVERSE」と書いていないか確認してみてください。スプレッドシートでは関数名を小文字で入力しても自動補正されますが、途中で綴りを間違えるとエラーになりますよ。
#NUM! エラー
極端に大きい値を指定したときに、まれに発生します。通常の相関分析で使う範囲(±10程度まで)なら問題ありませんので、入力値が現実的な範囲か確認してみてください。
FISHER関数・TANH関数との使い分け
FISHER関数との関係
FISHERINV関数とFISHER関数は、変換の方向が逆になるペア関数です。
| 項目 | FISHER関数 | FISHERINV関数 |
|---|---|---|
| 役割 | 相関係数をZ変換する | Z変換した値を元に戻す |
| 入力範囲 | -1 より大きく 1 未満 | 制限なし(任意の実数) |
| 出力範囲 | 制限なし(任意の実数) | -1 から 1 の間 |
| 使うタイミング | 統計処理の前 | 統計処理の後 |
セットで覚えておくと便利ですよ。
FISHER関数の詳しい使い方は、こちらの記事で解説しています。
TANH関数との関係
スプレッドシートのTANH関数(双曲線正接)は、数学的にFISHERINV関数と全く同じ結果を返します。たとえば次の2つの数式は同じ値(約 0.5)を返しますよ。
=FISHERINV(0.5493)
=TANH(0.5493)
それなら TANH 関数を使えばいい、と思うかもしれませんね。使い分けの目安は次のとおりです。
- フィッシャー変換の逆変換という統計的文脈で使う場合: FISHERINV関数
- 数学的な双曲線正接として使う場合: TANH関数
数式を読む人に意図が伝わりやすいよう、統計処理では FISHERINV関数を使うのがおすすめですよ。
関連関数との組み合わせ
相関係数の信頼区間や検定で、次の関数も一緒によく使います。
- CORREL関数: 2系列のデータから相関係数を求める
- NORM.S.INV関数: 信頼区間の臨界値 z(α/2) を求める
- スプレッドシートのCONFIDENCE.T関数: t 分布ベースの信頼区間を求める
- スプレッドシートのCONFIDENCE.NORM関数: 正規分布ベースの信頼区間を求める
まとめ
GoogleスプレッドシートのFISHERINV関数のポイントをおさらいしましょう。
- FISHERINV関数は、フィッシャー変換した値を元の相関係数に戻す関数
- 構文は
=FISHERINV(値)で、引数は1つだけ - FISHER関数とペアで使うのが基本
- 複数の相関係数を平均するときは、FISHER→平均→FISHERINV の手順が統計的に正確
- 信頼区間の算出にも活用でき、
FISHERINV(FISHER(r)±1.96/SQRT(n-3))で 95%CI が求まる - よくあるエラーは #VALUE!(数値以外の入力)と #NAME?(スペルミス)の2つ
- TANH関数と数学的に同じ結果だが、統計文脈ではFISHERINVを使うと意図が伝わりやすい
相関分析のレポート作成では、FISHER関数とセットで覚えておくと分析の幅が広がりますよ。
