Rで栄養統計を学ぼう!第4回:男女でエネルギー摂取量に差はある?対応のない2群間の栄養統計

R言語

「Rで栄養統計を学ぼう!」の連載第4回。

今回は、対応のない2群間での数量データを比較する際の統計手法を解説します。

仮説検定としては、

  • スチューデントのt検定
  • マン・ホイットニー検定

をとりあげます。ではいきましょう。

 

検定の使い分けについて

はじめに、今回紹介する2つの統計手法の使い分けについて紹介します。この2つは、個人の好みで、どちらを使っても良い、というわけではありません。

正規分布しているか否かが使い分けの鍵!

この2つの統計手法のうち、スチューデントのt検定はパラメトリック検定と呼ばれる統計手法です。パラメトリック検定というのは、検定の対象が正規分布に従うデータである場合にのみ使用することができます。正規分布に近しいデータというのは、たとえば以下のようなデータです。

これは身長をヒストグラムにしたものですが、170cm辺りを基準に、左右でほとんど同じ形をしていますよね。こういうデータのことを正規分布といいます。一般的に、データ数が多いと正規分布に近づく傾向があります。

データが正規分布している場合、パラメトリック検定であるスチューデントのt検定を用います。

ちなみに、正規分布しているかどうかを検定することもできます。その検定手法をシャピロ・ウィルク検定といい、Rでは、shapiro.test(ベクトル)で検定できます。以下に、先ほどのヒストグラムのデータで検定した結果を示します。

 

 

この場合、p-value は0.1039です。シャピロ・ウィルク検定の帰無仮説は”データが正規母集団に由来する”というものなので、今回の場合は正規母集団に由来するということを否定できないということになります。かなり回りくどい言い回しですが、正規分布する!とは言い切れないのですね。ただまぁ一応、帰無仮説が棄却されなかったので、パラメトリック検定を行っても問題ないとする考えが一般的です。

一方の検定手法:マン・ホイットニー検定は、ノンパラメトリック検定です。すなわち、正規分布に従わないデータに対して使用します。データが少ない場合などは、データが正規分布に従わない場合が多いので、そういった場合にマン・ホイットニー検定が用いられます。

 

データのインポート

まずはデータをインポートしましょう。今回もExcelファイルをインポートすることとします。以下のURLからExcelファイルをダウンロードし、「Import Data」→「From Excel」を選択し、インポートしてください。データ名はsampleとします。

sample-4.xlsx

 

スチューデントのt検定

はじめに、スチューデントのt検定から紹介していきます。

その前に、今回のデータが、スチューデントのt検定が前提とする、正規分布の形となっているのか確認しましょう。いきなり検定であるシャピロ・ウィルク検定をするのもよいですが、まずはヒストグラムを書いて分布を確かめるのが一般的です。

ただし、その前にまずデータ;sampleを、男性と女性に分けておきましょう。分けなくてもできなくはないのですが、そうしておいた方が何かと便利ですし、わかりやすいです。

データを分けるためには、subset関数を用います。以下のコードは、sampleを男性と女性に分けたものですのでご確認ください。

 

 

subset関数の一つ目の引き数にはデータを、2つ目の引き数には条件式を指定します。今回の場合は、sexがmaleの場合は変数maleに、femaleの場合は変数femaleにそれぞれ代入しています。こうして変数にしておいた方がいいと思います。この状態で、それぞれのヒストグラムを書いていきましょう。

ヒストグラムは、hist関数を用いることで書くことができます。以下のように書いてください。

 

 

hist関数は、1つ目の引き数にベクトルを指定しますが、その他に様々なオプションが用意されています。今回は、colとmain、xlabを指定しています。colはヒストグラムの色を、mainはヒストグラムのタイトルを、xlabはx軸のタイトルを指定しています。これらのオプションは、指定しなくても書くことができるのですが、必要であれば指定しましょう。これで描いたヒストグラムを書くと以下のようになります。

 

見た目では、どちらも正規分布しているようにも見えます。では、次は、シャピロ・ウィルク検定をしてみましょう。

 

 

p-value は、男性・女性それぞれ0.5996、0.3042で正規分布であるとする帰無仮説は棄却できません。そのため、パラメトリック検定を行っても問題ないといえるでしょう。

では、いよいよスチューデントのt検定を行っていきます。これも、コード自体は非常にシンプル。関数としては、t.testを使用します。結果としては、以下のようになります。

 

 

t.test関数の使い方としては、最初の2つの引き数に、比較したいベクトルを指定します。そして、オプションとして、var=equal = TRUE を指定します。これは、等分散性を仮定できるかどうかを指定しているもので、スチューデントのt検定では、等分散性も仮定しなければならないので、今回は確認はしていませんが、指定しておきます。

今回の p-value < 2.2e-16 ですね。これは指数表記ですので、限りなく0に近い値ということになります。そのため、帰無仮説は棄却され、男女でエネルギー摂取量に差があるということになります。

また、p-valueの下に、「95 percent confidence interval」とありますが、これは95%信頼区間のことで、その下に「339.2470 528.9538」とありますが、男性と女性の平均値の真の差は、95%の確率でこの範囲にある、ということを示しています。95%信頼区間は、今後も意外と多用しますので、この機会に考え方を知っておきましょう。

以上がスチューデントのt検定の説明です。

 

マン・ホイットニーの検定

次にマン・ホイットニー検定です。

マン・ホイットニー検定は、別名:ウィルコクソンの順位和検定とも言います。Rではこちらの呼び方が採用されており、wilcox.test(ベクトル1,ベクトル2)で実行できます。今回のsampleデータを用いた場合、以下のようになります。

 

 

こちらでも帰無仮説が棄却できましたね。つまり、男女でエネルギー摂取量に差があるということになります。

マン・ホイットニー検定は以上です。

 

まとめ

今回は、Rにおける対応のない2群間の検定手法について解説しました。今回使用した関数は以下にまとめてありますので、ぜひご活用ください。

 

目的 関数名
ヒストグラムを描く hist(ベクトル,col = '色', main='タイトル', xlab = 'x軸のタイトル')
シャピロ・ウィルク検定を行う shapiro.test(ベクトル)
スチューデントのt検定を行う t.test(ベクトル1,ベクトル2,var.equal = TRUE)
マン・ホイットニー検定を行う wilcox.test(ベクトル1,ベクトル2)

 

連載目次