#------------------------------------------------------------------ # 昭和大学 第2回実践臨床統計学セミナー Rハンズオン # 分割表の解析と仮説検定 # 2021年6月21日 #------------------------------------------------------------------ # ※ Rのプログラム作成には、高機能なテキストエディタを使用することをお勧めします。 #   初心者の方向けのソフトとしては、Notepad++をお勧めします(フリーソフトです)。以下のURLからダウンロードすることができます。 #   https://github.com/notepad-plus-plus/notepad-plus-plus/releases/download/v7.9.5/npp.7.9.5.Installer.exe #   拡張子を「.r」として保存したプログラムのファイルを開くと、基本関数やコメント箇所などが色分けされて表示され、効率的なプログラミングを行うことができます。 #------------------------------------------------------------------ # 1. データセットの読み込みと基本操作 #------------------------------------------------------------------ setwd("C:\\R2021") # setwdで、カレントのディレクトリを指定します。 # 他のソフトウェアと違う点は、フォルダのパスの指定において、「\」を二重にしなくてはいけないという点です。 # 通常は、「C:\」で済みますが、「C:\\」という風に「\」を「\\」と表記しなくてはいけません。 # メニューバーの中から、「ファイル」→「ディレクトリの変更」としても、同様の操作を行うことができます。 actg175 <- read.csv(file="actg175.csv") # CSV形式のデータセットを読み込むためには、read.csvという関数を使います。 # fileという引数で、ファイル名を指定します。カレントのディレクトリにファイル名が一致するCSVファイルがあれば、読み込まれます。 # 読み込まれたCSVのデータセットは、nhanesという名前のオブジェクトとして、R上に定義されます。 actg175 # オブジェクト名のみを入力して、エンターキーを押せば、オブジェクトの中身が出力されます。 head(actg175) # データセットが大きすぎる場合には、画面に収まりきらず、変数名なども参照できません。 # head関数を使うと、データセットのはじめの数行程度のみを出力することができます。 attach(actg175) # attach関数を使うことで、データセットの変数名から、直接、それぞれの変数のデータにアクセスすることができます。 # detach関数で、解除することができます。 treat d96 # nhanesの変数名によって、それぞれの変数の中身に、直接アクセスすることができるようになっています。 # このような数値データが、一列に並んだオブジェクトを、Rでは、「ベクトル(vector)」と言います。 # nhanesのような行列状のデータセットは、属性によって、「matrix」「array」「data.frame」などと言われます。 # 今回のnhanesは、複数のベクトルを結合したオブジェクト(list形式で結合されています)として、data.frame形式のオブジェクトとなっています。 #------------------------------------------------------------------ # 2. 分割表の作成 #------------------------------------------------------------------ table(treat) # カテゴリカル変数の集計(1変数) table(treat,d96) # カテゴリカル変数の集計(2変数),分割表の作成 n0 <- 247 + 74 # ZID単剤群のサンプルサイズ n1 <- 297 + 40 # ZID-ZAL併用群のサンプルサイズ #------------------------------------------------------------------ # 3. 分割表の効果の指標の計算 #------------------------------------------------------------------ install.packages("fmsb") # install.packages関数を使うことで、デフォルト設定でインストールされていないパッケージを、インターネット経由でインストールすることができます。 # ここでは、"fmsb" というパッケージをインストールするコマンドとなっています。 # CRANのどのミラーサイトからインストールを行うかを選択するウィンドウが出てきます。 # 基本的には、地理的に近いサイトを指定すると、通信速度が速く、ダウンロードを短時間で行うことができます(Japan (Tokyo) がお勧め)。 library("fmsb") # library関数で、ダウンロードしたパッケージを、R上に読み込むことができます。 riskdifference(40,74,n1,n0) # リスク差を計算する関数です。引数は、(1) 群1のイベント数、(2) 群2のイベント数、(3) 群1のサンプルサイズ、(4) 群2のサンプルサイズ、となります。 riskratio(40,74,n1,n0) # リスク比を計算する関数です。引数は、(1) 群1のイベント数、(2) 群2のイベント数、(3) 群1のサンプルサイズ、(4) 群2のサンプルサイズ、となります。 oddsratio(40,74,297,247) # オッズ比を計算する関数です。引数は、(1) 群1のイベント数、(2) 群2のイベント数、(3) 群1のイベントを起こさなかった人の人数、(4) 群2のイベントを起こさなかった人の人数、となります。 #------------------------------------------------------------------ # 4. 分割表の検定 #------------------------------------------------------------------ table1 <- table(treat,d96) # 分割表の検定の関数は、引数が、table関数で作成される分割表のオブジェクトとなります。 chisq.test(table1,correct=FALSE) # Pearsonのカイ二乗検定 fisher.test(table1) # Fisherの正確検定(両側検定) chisq.test(table1) # Pearsonのカイ二乗検定:Yatesの連続補正あり # 検定統計量の分布は実際には離散分布ですが、参照するカイ二乗分布は連続分布となります。 # Yatesの補正では、このギャップを埋めるための補正を行います。P値は、Fisherの正確検定のP値に近くなります。 fisher.test(table1,alternative="less") # Fisherの正確検定(片側検定;下側) fisher.test(table1,alternative="greater") # Fisherの正確検定(片側検定;上側)