R Introduction

Rのインストール

Rは統計解析用のフリープラットフォームで、統計解析に必要なさまざまな関数が用意されており、世界中で大勢の人がパッケージを開発し、巨大なライブラリーが公開されている。

Rのプログラムは下記のCRANのウェブサイトからダウンロードできる。Windows, Mac, Linuxの3つのOSに対してプログラムが用意されている。

Rの使用にあたっては、起動した際にコンソールに表示されるメッセージはよく読むべきである。Rはアメリカ食品医薬品局(FDA)もその使用を承認しており、臨床試験の統計解析、医学研究の統計解析などに用いることができる。

Rのインストールは他のWindowsのソフトウェアと同じである。ビデオではWindows版のRのインストールの手順について解説している。



R起動時のメッセージ

R version 4.0.2 (2020-06-22) -- "Taking Off Again"
Copyright (C) 2020 The R Foundation for Statistical Computing
Platform: x86_64-w64-mingw32/x64 (64-bit)

R は、自由なソフトウェアであり、「完全に無保証」です。
一定の条件に従えば、自由にこれを再配布することができます。
配布条件の詳細に関しては、'license()' あるいは 'licence()' と入力してください。

R は多くの貢献者による共同プロジェクトです。
詳しくは 'contributors()' と入力してください。
また、R や R のパッケージを出版物で引用する際の形式については
'citation()' と入力してください。

'demo()' と入力すればデモをみることができます。
'help()' とすればオンラインヘルプが出ます。
'help.start()' で HTML ブラウザによるヘルプがみられます。
'q()' と入力すれば R を終了します。

外部リンク
  1. CRAN (The Comprehensive R Archive Network)
  2. The R Project for Statistical Computing

Packageのインストール

Rはインタープリタ型のプログラミング言語である。JavaScriptやPHPなどに似ている。必要な解析のためにすべてのスクリプト(プログラム)を自分で書くこともできるが、すでに同じ解析が可能なスクリプトを開発した人がいることが多い。それらは、Packageとして、公開されており、CRANのウェブサイトからダウンロードして、使用することができる。

ビデオでは、起動したRからインストール済みのパッケージを確認する方法、CRANのサイトからパッケージを一つずつインストールする方法、スクリプトを実行して、複数のパッケージを一度にインストールする方法を紹介している。このスクリプトはpackneed変数にインストールしたいパッケージの名称を入力するので、この部分を書き換えて用いることができる。



複数のパッケージを一度にインストールするためのスクリプト

packneed=c("nmathresh","pcnetmeta","gemtc","mada","forestplot","BRugs","ahp","bnlearn","gemtc","metafor","netmeta","ggplot2","tcltk2","XML","tm","pander","wordcloud","RColorBrewer","rjags","TrialSize")
current=installed.packages()
addpack=setdiff(packneed,rownames(current))
url="https://cran.ism.ac.jp/"
if(length(addpack)>0){install.packages(addpack,repos=url)}
if(length(addpack)==0){print("Already installed.")}

外部リンク
  1. CRAN (The Comprehensive R Archive Network)
  2. CRAN: Software: Packages
  3. Availabe CRAN Packages By Name

Rでスクリプトを書いて実行する

Rはプログラミング言語なので、プログラミングの知識・スキルが無い人には敷居が高いと思っている人が多いかもしれない。

変数とは何か?変数間の演算では何が行われるのか?書いたスクリプトを実行するにはどうするのか?スクリプトを実行したら何が起きるのか?などを最初に理解しよう。

解説ビデオでは触れていないが、作成したスクリプトはファイルメニューから保存できるのはWordやExcelなどと同じであり、拡張子.Rが付くが、中身はテキストファイルで、メモ帳などで開ける。

すでに、テキストとして書かれているスクリプトはエディタ画面にコピー・ペーストして、実行させることができる。useRsのウェブサイトからスクリプトをコピーし、変数の値を書き換えて、サンプルサイズを計算する例を取り上げた。TrialSizeというパッケージを使って、ある関数を実行させて計算する。

今回の内容が理解できれば、もう少しで、自分の収集したデータを適切な解析法で自分で解析することができるようになるはず。



コンソールとエディタ

Rでは起動した時点では、コンソールが開かれる。ファイルメニューから新しいスクリプトを選択すると新規のエディタが表示され、スクリプトを開く...から保存済みのRのスクリプトファイルを開くとエディタにそのスクリプトが表示される。

エディタはメモ帳のような編集機能があるがコンソールではBack spaceキーまたはDeleteキーで一文字ずつの削除、ドラグで範囲の選択・書き換えはできるが、カーソルの移動は矢印キーでしかできない。また、コンソールではスクリプトを入力後、カーソルがどの位置にあっても、Enterキーを押すとその行がプログラムとして実行され、次の行に移動する。上向き↑キーではすでに実行されたスクリプトが順次表示され、再度実行することができる。下向き↓キーでは逆行した行を元の位置に向けて下に向かって一行ずつ表示される。左右の矢印キーはカーソルが左右に一文字ずつ移動する。また、コンソールキーがアクティブな状態では、エディタがアクティブな状態とはメニューやボタンが異なり、例えば実行ボタンは表示されていない。Enterキーで実行されるようになっている。

通常は、エディタにスクリプトを入力してから、実行させることになる。エディタに書いたスクリプトはファイルメニューから保存あるいは別名で保存...でテキストファイルとして保存することができる。ファイルの拡張子は.Rであるが、メモ帳やNotePad++などで開ける、テキストファイルである。

エディタに書いたスクリプトを実行させるには、実行させたい行にカーソルを置き、実行ボタンをクリックするか、Ctrl+Rを押す。(MacではCommand+Enter)。カーソルの位置はその行のどこでも構わない。その行がプログラムとして実行されると、次の行にカーソルが移動する。さらに、実行ボタンをクリックすると続けて次の行のスクリプトが実行されるので、これを繰り返して、複数の行に渡るスクリプトを実行させることができる。

一度に複数の行に渡り、スクリプトを実行させたい場合は、その範囲をドラグして範囲を選択・反転させた状態で、実行ボタンをクリックする。

また、変数名だけが記述されている行を実行させると、変数の内容がコンソールに出力される。明示的にprint( )関数を用いても同じことができる。

R scripts(コピーして貼り付けて使用可)

pc=0.4 #pc<-0.4
pt=0.2
pc
pt
pc+pt #print(pc+pt)
pc-pt
pt/pc
pc*pt

x=c(1,2,3,4,5,6,7,8,9,10)
x[3]
x[3:6]
str(x)

sum(x)
mean(x)

x*x
x+x
x-x
x/x

###################
#TrialSizeパッケージを用いる:
###using TrialSize

library(TrialSize) #ダブルコーテーションマークは不要。

#独立した 2 群で率を比較する場合のサンプルサイズの算出
#Proportion equality 等性試験の場合
alpha=0.05;power=0.8
pc=0.2;pt=0.3;ratio=1
nt=TwoSampleProportion.Equality(alpha=alpha, beta=1-power, p1=pt, p2=pc, k=ratio, delta=pt-pc)
nc=nt/ratio
nt;nc

外部リンク
  1. useRs
    Rを使った統計解析に関する情報サイト。拙著「入門医療統計学」、「入門医療統計解析」中のスクリプトが得られる。
  2. InfoZ@net IZ
    診療ガイドライン作成、システマティックレビュー、決断分析、医学統計学などに関する情報を提供する著者のブログ。
  3. TrialSize package
    サンプルサイズ計算のためのパッケージ。Author:
    Ed Zhang ; Vicky Qian Wu ; Shein-Chung Chow ; Harry G.Zhang (Quality check)

Rで生存分析

統計解析の対象となるデータはデータベースあるいはスプレッドシートで用意されることが多い。Microsoft Excelのようなスプレッドシートでは1行目がラベル名、以下各行に一症例ずつのデータが入力される。Excelでデータの入力された範囲を選択してコピー操作を行うと、各セルの間は、Tab区切りで、行の最後が改行の形式のテキストファイルの形式のデータがクリップボードに格納される。これをRの側で読み込んで変数に格納することができる。そのためのスクリプトはWindowsとMacでスクリプトが異なる。今回は、以下の外部リンクのuseRsから入門医療統計学のページを開き、第8章 254ページのスクリプトに書かれているものを利用する。用いる関数はread.delim( )である。

この関数の引数の内、header=TRUEに設定すると、コピーしたExcelの最初の行をそれぞれのカラムのデータの変数名として用いることになる。header=FALSEに設定すると最初の行もデータをみなして変数に格納することになる。なお、Excelでデータを用意する際には、各カラムの1行目に入力するラベル名をRの側で変数名として使えるものにしておくことが望ましい。

生存分析にはイベント生起あるいは打ち切りまでの時間のデータとイベント生起あるいは打ち切りを示すデータが必要になる。サンプルの例では、timeとstatusがそれらのデータを含む。

今回は、変数exdatにデータを格納する。exdatのデータの確認には、head( )関数とstr( )関数を用いている。head( )関数は最初の6行のデータをコンソールに出力する。str( )関数はデータ構造、各変数のデータ型を出力してくれる。

Kaplan-Meier生存分析にはsurvivalパッケージを用いるので、library(survival)を実行して、パッケージを読み込んでおく。その上で、survfit( )関数を用いて解析を実行し、その結果からplot( )関数を用いて生存曲線をプロットする。survivalパッケージはベースパッケージに含まれているので、インストール作業は必要ない。



Kaplan-Meier生存分析のためのスクリプト

exdat=read.delim("clipboard",sep="\t",header=TRUE) #Windows

exdat=read.delim(pipe("pbpaste"),sep="\t",header=TRUE) #Mac

library(survival)

###Kaplan-Meier生存曲線。
kp=survfit(Surv(time,status==2)~1,data=exdat)
plot(kp, lty=1,conf.int=TRUE,main="Cumulative Survival of Patients with PBC",xlab="Days",ylab="Cumulative survival rate")

###Cox比例ハザード分析。
res=coxph(Surv(time,status==2)~albumin+bili+age+sex+stage,data=pbc)
summary(res)

外部リンク
  1. InfoZ@net IZ
    診療ガイドライン作成、システマティックレビュー、決断分析、医学統計学などに関する情報を提供する著者のブログ。
  2. useRs
    Rを使った統計解析に関する情報サイト。拙著「入門医療統計学」、「入門医療統計解析」中のスクリプトが得られる。

MacのRでKaplan-Meier、Cox比例ハザード解析

Mac版のRではWindows版のRのスクリプトがそのまま動作するが、クリップボード経由でMicrosoft Excelからデータを読み込む場合、スクリプトが若干異なる。以下で用いるスクリプトは4. Rで生存分析で紹介しているスクリプトと同じである。read.delim()関数でクリップボード経由でExcelのデータを読み込む際のスクリプトはWindows用とMac用の2つを記述してあるのでそれぞれのOSに対応する方を用いる。

このビデオではMac版のRがすでにインストールされていることを前提に、ベースパッケージのひとつであるsurvivalを読み込んで、survfit()関数でKaplan-Meier生存分析を行い、さらにcoxph()関数でコックス比例ハザード分析を行う。



用いるスクリプト

exdat=read.delim("clipboard",sep="\t",header=TRUE) #Windows

exdat=read.delim(pipe("pbpaste"),sep="\t",header=TRUE) #Mac

library(survival)

###Kaplan-Meier生存曲線。
kp=survfit(Surv(time,status==2)~1,data=exdat)
plot(kp, lty=1,conf.int=TRUE,main="Cumulative Survival of Patients with PBC",xlab="Days",ylab="Cumulative survival rate")

###Cox比例ハザード分析。
res=coxph(Surv(time,status==2)~albumin+bili+age+sex+stage,data=pbc)
summary(res)

外部リンク
  1. InfoZ@net IZ
    診療ガイドライン作成、システマティックレビュー、決断分析、医学統計学などに関する情報を提供する著者のブログ。
  2. useRs
    Rを使った統計解析に関する情報サイト。拙著「入門医療統計学」、「入門医療統計解析」中のスクリプトが得られる。