第4章は統計を扱います。今回「シロート統計学」のハルさんとコラボレーションすることとなりました。ハルさん、ありがとうございます!シロート統計学はEZRを使った統計分析をわかりやすく解説されています。第4章はシロート統計学で使われていたEZRをRで行うとどうなるのか?といった視点で進めていきます。今回使うデータもハルさんのサイトと同じものを使わせでいただく事になりました。それぞれ見比べることで参考にしてみてください!今回はt検定を紹介しますまずt検定についてはハルさんのサイトをご参照ください。第4章は毎回ExcelデータをダウンロードしてRを使うのでプロジェクトで管理して行うことを勧めています。ここではR練習というプロジェクトを作り、Excelファイルを入れるためのdataフォルダを作っています。これを前提に次から進めていきます。次にRのコードを書くためのスクリプトファイルを作ります。3.データのダウンロード今回はハルさんのサイトのデータを使わせていただきます。デモデータ(t検定)これをダウンロードしてdataフォルダに入れればいいのですが実はRでできてしまいます。download.file関数を使います。"を忘れないようにしてください。destfile)以下説明します。リンクのアドレスをコピーdestfileは保存場所と保存のファイル名を指定します。保存場所は今回プロジェクトを使っているのでR練習フォルダになります。加えてdata/を付け足すことでR練習フォルダ内にあるdataフォルダという意味になります。ファイル名は自由に決められますが今回は元のファイルと同じにしました。拡張子も忘れないようにしましょう。プロジェクトを使っていなければ保存場所はgetwd関数で出てきたフォルダになります。getwd関数の()には何も入れません。getwd()この方法を使う最大のメリットは、次回使うExcelデータはurlの部分を変えるだけでできてしまうことです。保存したファイルを指定したところに移動させて・・・といった手作業必要ありません。いった作業もRで行っていくことでRにも早く慣れてくると思います。4.データの読み込みデータを読み込みます。今回は【4-0】第4章を進めていく上での準備で行った方法で進めます。Fileでデータを確認します。今回は握力のデータです。A群とB群を比較します。A1にデータが入っていません。実際にはB2からC62までデータが入っていることを確認します。Datasetを選びます。1データの名前(変数名)を付ける何でもいいのですが今回はハルさんのサイトと同じgripにしました。2読み込む範囲を指定する今回A1からのデータではないので先程確認したB2からC62を指定します。B2:C62のように左上と右下を:でつなげます。右下にコードが自動的に作られます。Importを押せば完了なのですが、このコードをコピーしスクリプトに貼り付けておけば1年たった後でも同じことができます。EZRでもスクリプトを保存することができないわけではないのですが、再現性(後でしても、他の人がしても同じ事ができる)を保つためにもこういったコードを残しておく習慣をつけるようにしましょう。コードの一番下にあるView関数を使うことでRStudio内でもデータの確認ができます。このタブを消してもデータに影響はありません。1回View関数を使えばまた表示できます。View関数はEZRで言う表示と同じです(下図はハルさんのサイトより。比べてみてください)これでデータの取り込みは完了です!5.データの要約ハルさんは次にデータの要約をしています。EZRでのデータの要約と全く同じ機能はないですが、第2章で紹介したtidyverseパッケージのgroup_by関数とsummarize関数が使えます。group_by関数とsummarize関数に関してはこちらで紹介しています。%>%やgroup_by関数、summarize関数はtidyverseパッケージに含まれていますのでtidyverseパッケージを呼び出します。tidyverseパッケージを全く使ったことが無い方はパッケージをインストールします。1度でも使ったことがあれば次の1行は必要ありません。install.packages("readxl")実際のコードは以下になります。イメージ図も添付します。n())これでA群とB群のデータのばらつきを確認することができます。ちなみにこのコードをコピーして色がついた箇所を変更すれば他の場面でも使えます!このままでもいいのですが、データ要約は後でグラフ作成に使うのでgrip_summaryという名前をつけます。次に正規性の確認を行います。ハルさんのサイトではヒストグラムを作成しました。ヒストグラムの作り方はこちらで紹介しています。"dodge"を使います。使うので注意してください。5)加えてシャピロ・ウィルク検定も紹介されています。シャピロ・ウィルク検定はshapriro.test関数を使います。A群とB群それぞれで行いますのでgrip$gripの列をA群とB群に分ける必要があります。ハルさんのサイトのEZRで行う場合と見比べてみてください。書いてあるところの意味が見えてきます。ちなみに変数(1つ選択)のgripはgrip$gripの色のついた部分です。結果は以下のとおりです。どちらも0.5を超えているので正規分布であるという仮説は棄却されませんでした。このあたりの解釈はハルさんのサイトをご参照ください。"B"])上記のように1つずつ計算する方法もいいのですが群の数だけ繰り返します。プログラミングであるRは繰り返しに強いという特徴があります。群ごとにデータを分割し、まとめて計算する方法として今回はsplit関数とmap関数を使います。map(~shapiro.test(.$grip))まずgripのデータをsplit関数を使ってA群とB群の2つのデータに分割し、map(~シャピロウィルク検定)でシャピロウィルク検定を繰り返します。EZRだと1つ1つ検定を繰り返す必要があります。Rを活用すると1度に作業が終わるため、繰り返すことでのやり間違えの予防や時間の短縮にも繋がります。8.等分散性を確認する先程は正規性を調べましたが、今回は等分散性を調べます。F検定と言いますがRではvar.test関数を使います。Rで行うとこうなります。使えば$が要らなくなります。0.05だったので等分散性は棄却されませんでした。9.t検定を行ういままで正規分布かどうか、等分散性かどうかを確認しました。これでt検定が使えます。t検定はt.test関数を使います。t検定は2種類の書き方があります。その違いはデータの形にあります。ハルさんのサイトでEZRでは左の形しかできませんでしたがRならどちらも可能です。ちなみに左をlongデータ(縦に長い)、右をwideデータ(横に広い)といいます。今回はlongデータなのでこのようになります。gripを使うとgrip$は外せます。どちらでも好きな方で大丈夫です。grip)EZRと同じ結果になりました!10.グラフの作成EZRでは丁寧にグラフも作ってくれますがRでは自作する必要があります。EZRでは平均と標準偏差の棒グラフを作成していました。先程のgrip_summaryに平均と標準偏差を求めていたのでそれを使います。棒グラフの作り方はここで紹介しています。次は以下を修正します。"grip")だいぶ見た目が良くなりました。3EZRのグラフにできるだけ近づけるEZRのグラフに似せるためにもうひと工夫します。c(0,50))これでEZRにだいぶ似ました。11.まとめかなり長くなりましたが今回はt検定を紹介しました。最初だったので1つ1つ説明しました。ボリュームが多すぎて慣れないところもあると思いますが、これから何度も出てくるものもありますので少しずつ慣れて貰えればと思います。12.コードをまとめました今回のコードを1つにまとめました。パッケージはlibrary()を1度だけ行えばいいので最初に出しています。