ファイ係数を計算する。

Rでファイ係数を計算してみます。

ファイ係数とは、前回やった相関係数の一種で「1と0の2値からなる変数に対して計算される相関係数」です。
ここで、2値と言っているのは、例えば「好き・嫌い」「良い・悪い」「◯・☓」のようなアンケートの結果を数値化したもののことです。

例えば、「りんごは好きですか?」という問に対して「はい・いいえ」で答えるようなアンケートを20人に取り、その結果が以下のようだったとします。

apple <- c("はい","はい","いいえ","いいえ","はい","はい","はい","はい","はい", "いいえ","いいえ","はい","いいえ","はい","はい","いいえ","はい","はい","はい","はい")
apple
# 'はい' 'はい' 'いいえ' 'いいえ' 'はい' 'はい' 'はい' 'はい' 'はい' 'いいえ' 'いいえ' 'はい' 'いいえ' 'はい' 'はい' 'いいえ' 'はい' 'はい' 'はい' 'はい'

次に、同様のアンケートを今度はバナナについて取ってみたところ、こんな結果になりました。

banana <- c("はい","はい","はい","はい","いいえ","いいえ","いいえ","いいえ","いいえ", "いいえ","はい","はい","はい","いいえ","はい","いいえ","いいえ","いいえ","いいえ","いいえ")
banana
# 'はい' 'はい' 'はい' 'はい' 'いいえ' 'いいえ' 'いいえ' 'いいえ' 'いいえ' 'いいえ' 'はい' 'はい' 'はい' 'いいえ' 'はい' 'いいえ' 'いいえ' 'いいえ' 'いいえ' 'いいえ'

さて、これらのアンケートの結果の関係について確認するために、クロス集計表を作ります。

table(apple, banana)
いいえ はい
いいえ 2 4
はい 10 4

(行がapple, 列がbanana)

この評価から「りんごは好きだけれども、バナナは好きではない人の割合が比較的大きなる傾向がある」というのが見えます。

それでは具体的にファイ係数を計算して、アンケート結果の関係性を数値で表してみましょう。
「はい・いいえ」のままでは扱えないので、ifelseという関数を使って1, 0の2値に変換します。

apple_1_0 <- ifelse(apple == "はい", 1, 0)
apple_1_0
# 1 1 0 0 1 1 1 1 1 0 0 1 0 1 1 0 1 1 1 1

banana_1_0 <- ifelse(banana == "はい", 1, 0)
banana_1_0
# 1 1 1 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0

ifelse関数について、まず第1引数に「対象となる変数と条件」を指定します。
そして、対象となった変数の各値に対して条件を検証し、条件に一致していればifelseの第2引数の値、一致しなければ第3引数の値をそれぞれ代入した形に変換します。
今回の場合、それぞれのアンケート結果の変数に対して「値は"はい"であるか?」をそれぞれの値について調べて、"はい"であれば1を、そうでなければ("いいえ"であれば)0を代入した形にして返してくれます。

これでアンケート結果を2値にすることが出来たので、これを使ってファイ係数を計算します。
これは、前回も出てきたようにcor関数を使って簡単に計算できます。

cor(apple_1_0, banana_1_0)
# -0.3563...

この結果については相関係数と同じような解釈ができるため、今回のアンケートの結果は「弱い負の相関」が見られる、という事になります。


Rによるやさしい統計学
山田 剛史 杉澤 武俊 村井 潤一郎
オーム社
売り上げランキング: 7,330