例として、以下のような場面を考えてみます。
「1学年が3クラスの高校で、同じ先生が教える3年生の数学のテストの返却がありました。1組の平均点は84点、2組は87点、3組は90点でした。数学の苦手な3組のA君は、自分のクラスの平均点が他のクラスより高かったことがうれしくて、統計的にも意味のある差であるとことを計算してみたくなりました。A君は数学の先生に誰の点数か分からなくしたクラスごとの数学の点数表をもらいました。そして、まず1組と2組の平均値の差を検定し95%の厳しさで見ても統計的に意味のある差、いわゆる有意差が認められることを確認しました。次に2組と3組の間にも有意差が認められ、最後に1組と3組を検定して有意差を確認しました。そして『統計的に見ても3クラスの中で、3組が一番数学ができる!』と3組のクラスメートにうれしそうに話していました。」
実は、このような2グループの間での平均値の差の検定を繰り返す方法は、簡単で実施しやすいのですが、妥当な計算方法ではないのです。
それは一体なぜでしょうか?
どのような方法であれば、妥当な結果を得られるのでしょうか?
動画:検定を複数グループ間で繰り返すと、差の有無の判断が甘くなってしまうので、複数グループまとめて検定する方法をとるんですよ、というお話です。
今回は、以下に取り組んでみます。
統計解析環境「R」と、Rを使いやすくするためのツール「R Studio」をインストールする。
Rを使って、検定の「多重比較」という技を使ってみる。
一つ目の「R」は、データ分析には欠かせないツールです。エクセルで分析可能な統計解析はとても限られていますが、Rを使えばほとんどどのような統計解析も可能になります。
二つ目の「多重比較」は、t検定を繰り返さずに、複数の実験条件をまとめて分析する手法です。複雑な統計解析ではありますが、Rを使えば比較するデータを指定していくだけで、多重比較することが可能になります。
まず、統計解析環境のRをインストールします。
具体的なインストール方法は、例えば以下のサイトなどを参照してください。
続いて、R Studioも、以下のサイトなどを参考にしてインストールします。
これまで、リビングの評価結果を扱ってきました。
今回もリビングの評価結果を対象とします。
ただし、エクセルのデータを、「,」で区切られたテキストデータ(メモ帳でつくった、拡張子が「.txt」のデータ)に変換しておく必要があります。
そのデータを作成しておきましたので、以下の手順で入手してください。
圧縮された「NPS」「緊張覚醒」「「リラックスしている」の値」のデータをダウンロードします。
ダウンロードしたデータをデスクトップに展開します。
保存したデータを右クリックしたのち、「プロパティ」をクリックします。
「場所」を確認します。(下図)
多重比較は、以下の手順で進みます。
RはR言語で書かれていますが、今回使うコードはとても簡単ですのでご安心ください。
較するデータを選択します。
データの名称や含まれるデータの個数を登録します。
多重比較を実行します。
コードを書いていくのは、R Studioのコンソールと呼ばれる場所(下図のオレンジ部分)です。
まずは部屋ごとの「NPS」の結果を比較してみます。
Aの部屋のNPSのデータはこれ、Bの部屋のNPSのデータはこれ、というように、一つずつデータを指定していきます。
コンソールに書いていくコードは以下の通りです。
A<-scan("C:/Users/kankyo/Desktop/A_NPS.txt",sep=",")
「A」の部分は、「A」という名称の箱にデータを入れます、という宣言です。
「<-」の部分は、「=」みたいな意味です。
「scan( )」は、( ) の中で指示されたデータを読み取ります、という意味です。
「" "」は、具体的な指示の内容が入ることを示すマークです。
「C:/Users/kankyo/Desktop/A_NPS.txt」は、読み取りたいデータの場所とファイル名(拡張子(.txt)付き)です。
「sep=" , "」は、データが「,」で区切られていることを登録しています。
上記の一文をコンソールに書いてEnterを押してRにscanを実行することを指示すると以下が表示されます。
Read 48 items
Rからの返答です。
48個の数値が含まれていることを教えてくれています。
これを、「A」から「I」まで繰り返していきます。
読み込んだデータを、分析してもらえるように整えます。
ここで使う分析方法では、データは一つにまとまっている必要があります。
そこで、「A」から「I」まで一つずつ読み取ったデータを、一つにまとめます。
DATA<-c(A,B,C,D,E,F,G,H,I)
「DATA」という名前の箱に、データを格納することにします。
「c( )」はベクトルを作るという意味を持っていますが、今回の統計解析においては大きな意味はありません。
「A,…,I」は、「A」という箱に入れたデータと、「B」という箱に入れたデータと、…、「I」という箱に入れたデータを使うという意味です。
次に、分析してもらうためのデータの登録をします。
fx=factor(rep(c("A","B","C","D","E","F","G","H","I"),c(48,48,48,48,48,48,48,48,48)))
「fx」は、「fx」という名前の箱に格納することを示していますが、箱の名前は自由です。
「factor」は、R言語において因子型というデータ形式にするための指示です。今回の統計解析においては大きな意味はありません。
「rep」は、replicate (複製する)という意味で、繰り返していくことを指示しています。これも、今回の統計解析においては大きな意味はありません。
「"A",…,"I"」は、分析結果を表示する際に表示する名称を登録しています。
「48,…,48」は、各名称で登録されるデータの個数を登録しています。
いよいよ多重比較を実行します。
t検定を繰り返すと正しい解釈にはつながりませんが、多重比較を実行すれば一気に全部の組み合わせの間での統計解析ができます。
そのコードは以下です。
TukeyHSD(aov(DATA~fx))
驚くほど短いです。
「TukeyHSD」はチューキー・クレマー検定という多重比較の方法を採用することを指示しています。
「aov」は、aov関数というRで分散分析という計算方法を採用することを指示しています。
「DATA~fx」は、比較するデータとして「DATA」を採用して、その分類として「fx」を参照することを指示しています。
この短いコードを書いてEnterを押すと、以下の長い長い計算結果が表示されます。
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = DATA ~ fx)
$fx
diff lwr upr p adj
B-A 0.66666667 -0.6438404 1.97717370 0.8120972
C-A 0.31250000 -0.9980070 1.62300703 0.9981140
D-A 2.43750000 1.1269930 3.74800703 0.0000005
E-A -1.08333333 -2.3938404 0.22717370 0.1992703
F-A 0.39583333 -0.9146737 1.70634036 0.9903979
G-A 1.14583333 -0.1646737 2.45634036 0.1418132
H-A -0.79166667 -2.1021737 0.51884036 0.6255478
I-A 1.50000000 0.1894930 2.81050703 0.0118491
C-B -0.35416667 -1.6646737 0.95634036 0.9954691
D-B 1.77083333 0.4603263 3.08134036 0.0010211
E-B -1.75000000 -3.0605070 -0.43949297 0.0012519
F-B -0.27083333 -1.5813404 1.03967370 0.9993297
G-B 0.47916667 -0.8313404 1.78967370 0.9677498
H-B -1.45833333 -2.7688404 -0.14782630 0.0166010
I-B 0.83333333 -0.4771737 2.14384036 0.5563821
D-C 2.12500000 0.8144930 3.43550703 0.0000225
E-C -1.39583333 -2.7063404 -0.08532630 0.0269465
F-C 0.08333333 -1.2271737 1.39384036 0.9999999
G-C 0.83333333 -0.4771737 2.14384036 0.5563821
H-C -1.10416667 -2.4146737 0.20634036 0.1785414
I-C 1.18750000 -0.1230070 2.49800703 0.1110889
E-D -3.52083333 -4.8313404 -2.21032630 0.0000000
F-D -2.04166667 -3.3521737 -0.73115964 0.0000585
G-D -1.29166667 -2.6021737 0.01884036 0.0569154
H-D -3.22916667 -4.5396737 -1.91865964 0.0000000
I-D -0.93750000 -2.2480070 0.37300703 0.3877970
F-E 1.47916667 0.1686596 2.78967370 0.0140449
G-E 2.22916667 0.9186596 3.53967370 0.0000065
H-E 0.29166667 -1.0188404 1.60217370 0.9988503
I-E 2.58333333 1.2728263 3.89384036 0.0000001
G-F 0.75000000 -0.5605070 2.06050703 0.6925861
H-F -1.18750000 -2.4980070 0.12300703 0.1110889
I-F 1.10416667 -0.2063404 2.41467370 0.1785414
H-G -1.93750000 -3.2480070 -0.62699297 0.0001838
I-G 0.35416667 -0.9563404 1.66467370 0.9954691
I-H 2.29166667 0.9811596 3.60217370 0.0000030
とてもとても長いのですが、まず見る必要のある場所は、組み合わせの書いてある一番左の列と、比較した結果統計的に同じであると考えられる可能性を示した一番右の列の二列だけです。
間の3列にももちろん意味はありますが、多重比較の結果だけに注目するには一番左の列と一番右の列の二列でまずは足ります。
この結果は以下のように解釈できます。
「NPSに着目すると、太字(最左列)の組み合わせにおいて、太字(最右列)の確立で有意に差があると言える。」
今回は、「NPS」を例に多重比較をやってみましたが、「緊張覚醒」「「リラックスしている」の値」についても多重比較を実施してみてください。