タグ:EZR

医療統計でよく出てくるtable1について質問がありました。





ということで今回は医療統計で使われるtable1を作る時に便利なtableoneパッケージについて紹介します。


以下に今回使う仮のデータを作りました。set.seed(1)とかfloor()とかsampleとか訳のわからないものがいっぱい出てきますが、とりあえずRに全部コピーして1行ずつ実行するとdataという名前の表が完成します。(もしくはスクリプトウィンドウにコピペして全部選択した状態でRunを押してください)

set.seed(1)
年齢 <- floor(rnorm(100,60,10))
性別 <- sample(c("男性","女性"),100,replace = TRUE)
体重 <- floor(rnorm(100,60,7))
MMT <- sample(c(1:5), 100, prob = c(0.1,0.1,0.2,0.3,0.3), replace = TRUE)
術側 <- sample(c("右","左"),100,replace = TRUE)
治療 <- sample(c(0,1),100,replace = TRUE)
data <- data.frame(年齢,性別,体重,MMT,術側,治療)
data


tableoneの使い方

0.tableoneパッケージを使えるようにする

1.事前に理解しておくこと

2.CreateTableOne関数でtable1の下地を作る

3.print関数でExcelに貼り付けるための形式に直す

4.Excelでインポート

5.できるだけプログラムを書きたくない人向けの方法



0.tableoneパッケージを使えるようにする

まずはtableoneパッケージを使えるように準備をしてください。

なおパッケージの導入方法については以下の記事で解説しています。
Rで使うパッケージのインストールについて紹介します。 : 独学で始める統計×データサイエンス



1.事前に理解しておくこと


table1はそもそも各群のベースラインを比較します。

スクリーンショット 2019-01-29 13.41.06
そのためには各変数(評価)がどんなデータか理解している必要があります


数値かカテゴリーか?

集計を行うにはその変数が数値なのか?カテゴリー変数なのか?の理解が必要です。

数値:年齢・体重

カテゴリー:性別、MMT、術側

MMTは「1が7人、2が5人・・・」と集計を行いたいとすると、値は数値ですがカテゴリー変数として集計を行う必要があります。


数値の場合は正規分布なのか?そうでないのか?

同じ数値でも正規分布かそうでないのか?を決めておくことが必要です。

正規分布であれば平均±標準偏差ですが、正規分布でない場合は中央値(四分位範囲 or 最大値〜最小値)で表現したりします。

正規分布かどうかを確認するにはヒストグラムやQ-Qplotを作成したり、シャピロ-ウィルクの正規性の検定を使ったりします。


カテゴリー変数の検定はカイ二乗検定なのかFisherの正確確率検定なのか?

カテゴリー変数の場合カイ二乗検定かFisherの正確確率検定なのかを決めておくことが必要です。

データ数が少なく各期待数が5未満だとFisherの正確確率検定を使うなどありますが、詳細は今後説明していくかもしれません。


以上を踏まえた上でtableoneパッケージを使っていきます。


2.CreateTableOne関数でtable1の下地を作る

table1の下地を作るにはCreateTableOne関数を使います。

コード(1行で書く場合)
スクリーンショット 2019-01-29 17.43.23

コード(複数行に渡って書く場合。要素の間の , を忘れずに)
スクリーンショット 2019-01-29 17.30.54

t1を表示して結果を見ます
スクリーンショット 2019-01-29 17.49.04


結果
スクリーンショット 2019-01-29 17.31.09

コード(コピペ用)
t1 <- CreateTableOne(data = data, 
                     vars = c("年齢", "性別", "体重", "MMT", "術側"), 
                     factorVars = "MMT", 
                     strata = "治療")
t1


コードはスクリプトウィンドウを使うと数行にまたがって書くことができます。


(スクリプトウィンドウについてはRコマンダーの基本的な画面の説明を行いますをご参照ください。)


CreateTableOne関数には主に4つの要素があります。


data = ○○

○○には今回使用する表の変数名が入ります。

今回は「data」という名前の表を作ったのでdataになっていますが、別の名前を使った時はその名前になります。大文字と小文字は区別しますので注意。



vars = "○○"

○○には表に乗せたい変数名を並べます。

複数の変数がある場合はc("変数名1", "変数名2")とc関数を使います。

変数名が1つなら vars = "変数名"

変数を" "ではさみ、を使って区切ってください。


factorVars = "○○"

vars = "○○"の中で「数値なんだけどカテゴリー変数」というものがあればfactorVarsに加えます。

今回でいうとMMTの1〜5の値です。

性別や術側のように数値でないカテゴリー変数は自動的にカテゴリー変数とみなしてくれるので、ここに入れるのはあくまでも「数値なんだけどカテゴリー変数」だけです。

ちなみにそういう変数がなければfactorVars = "○○"自体を消してしまってOKです。


strata = "○○"

今回の治療のように分けたいグループがここに入ります

またグループ間ごとの検定を行うこともできます。

2グループならt検定とマンホイットニーのU検定、3グループ以上なら一元配置分散分析とクラスカル=ウォリス検定を行います。

もしstrata = "○○"自体を消すとグループ分けせずに全体の要約が表示されます。

コード
スクリーンショット 2019-01-29 17.55.31
結果
スクリーンショット 2019-01-29 17.55.44



3.print関数でExcelに貼り付けるための形式に直す

これでもある程度表になっているのですが、もう一つ作業が残っています。

まだ「正規分布かそうでないか?」「見た目をもう少し修正」といったところです。

ここではprint関数を使います。

今度はtable1という変数を使います。違う名前でも構いません。


コード
スクリーンショット 2019-01-29 20.09.46


コード(コピペ用)
table1 <- print(x = t1, 
                cramVars = c("性別", "術側"),
                exact = "MMT",
                nonnormal = "体重")

write.csv(table1,"table1.csv")        

print関数にもいくつかの要素があります。

x = ○○

xには先程のcreateTableOne関数の結果を入れます。

先ほどで言う「t1」です。違う名前にした方はその名前にしてください。

" "はいりません。


cramVars = "○○"

改めてt1の性別や術側の項目を見てください。

スクリーンショット 2019-01-29 20.15.45

基本設定では2つのカテゴリーの場合、1つの要素しか出してくれません。
もちろん全体数から引けばいいといえばいいのですが、女性の数も欲しいところです。

そんな時cramVars = c("性別", "術側")を入れると以下のようになります。

スクリーンショット 2019-01-29 20.22.43


exact = "○○"

カテゴリー変数の検定は何も指定しないとカイ二乗検定を行います。

もしFisherの正確確率検定を使いたい場合(ここではMMTとする)、exact = "MMT"とします。

ちゃんとなっているかどうかは一番右のtestを見ます。exactとなっています。

nonnormal = "○○"

同じ数字でも正規分布に従わないデータがある場合は中央値(四分位範囲)で示します。

たとえば今回のデータで体重が正規分布でなかったとします。

その場合はnonnormal="体重"とすることで平均(標準偏差)ではなく中央値(四分位範囲)に変えることができます。

ちなみに四分位範囲でなく(最小値〜最大値)で表現したい場合はminMax= TRUEを付け加えます。

スクリーンショット 2019-01-29 20.35.02


write.csv(○○, "保存したい名前.csv")

table1で表示したい表を作成したあとはcsv形式で保存します。

csv形式で保存するにはwrite.csv関数を使います。

○○はprint関数で使った変数名(ここではtable1)です。

" "の中はファイル名.csvとします。


プロジェクトを作っているとfileビューでファイルを確認できます。

スクリーンショット 2019-01-29 20.59.49

もしプロジェクトを作っていなくて保存場所がわからない場合はgetwt()とコードを書き実行してください。

getwt()     

()の中は何も入れなくて大丈夫です。保存先がわかります。


4.Excelでインポート

csvファイルを作成したので、今度はExcelで読み込みます。

読み込む時はインポートを使います。

スクリーンショット 2019-01-29 13.34.04


csvファイルを選択します。

スクリーンショット 2019-01-29 13.34.54


先程作成したファイルを選択します。
スクリーンショット 2019-01-29 13.35.23


macだと文字化けします。UFT-8を選択します。

スクリーンショット 2019-01-29 13.38.09



フィールドの区切りはカンマを選択します。

スクリーンショット 2019-01-29 13.38.35


ここは特に何もせず完了します。

スクリーンショット 2019-01-29 13.38.51


貼り付ける場所を選択します。

スクリーンショット 2019-01-29 13.39.09


無事完成!
スクリーンショット 2019-01-29 21.13.01



5.できるだけプログラムを書きたくない人向けの方法


慣れると早くなるのですが、どうしてもまだ慣れないということもあると思います。

2つの方法を紹介します。


①createTableOne関数の後、printを行わずデータを直接見ながらExcelに手打ちする

print関数を使わずにsumarry関数を使います。

スクリーンショット 2019-01-29 21.16.49
スクリーンショット 2019-01-29 21.17.02
スクリーンショット 2019-01-29 21.17.21

ここにグループ毎の結果が入っています。

<数値の場合>
平均(mean)
標準偏差(sd)
中央値(median)
最小値(min)
最大値(max)

t検定か一元配置分散分析(pNormal)
マンホイットニーのU検定かクラスカル=ウォリス検定(pNonNormal)

標準化平均差(Standardize mean differences)


<カテゴリーの場合>
カテゴリー名(level)
各変数の数(freq)
各変数の%(percent)
累積%(cum.percent)

カイ二乗検定(pApprox)
Fisherの正確確率検定(pExact)


これらを見て直接Excelに打ち込んでもいいかもしれません。


②EZRを使う

EZRの「サンプルの背景データのサマリー表の出力」は実はtableone関数を使っています。

スクリーンショット 2019-01-29 21.36.32

今回の記事を見た上でこの画面を見て、どの項目がどの関数を使っているかイメージできるでしょうか。


まとめ

今回はRやプログラミングに慣れていない方でもイメージできるよう、tableone関数についてできるだけ細かく解説しました。

学会や論文の作成のサポートになれば幸いです。


次回は性別から男性だけを抜き出すなど条件に合うデータを抜き出す方法を紹介します。



全ての記事一覧はこちらです。
 







今までExcelだけで、プログラミングをしたこと無い方はRの画面は非常にとっつきにくいです。そのためRコマンダー(EZRや改変Rコマンダー)は初めて統計を行う方におすすめのソフトです。しかし使いやすいと言っても初めて見るとよくわからないのが正直なところだと思います(自分がそうでした)。

今回はRの基本的な画面の説明を行います!


Rコマンダーの基本的な画面
スクリーンショット 2018-12-16 13.46.04


メニューバー
ここでエクセルデータの読み込み、統計、グラフや表の作成などほとんどの操作を行います。

そしてRコマンダーと改変Rコマンダー、EZRはメニューの位置が微妙に違います。


スクリプトウィンドウ

メニューバーで行った操作を行うとここに自動的にプログラムが書き込まれ、下の出力に結果が出てきます。

このスクリプトウィンドウを保存しておくと、再度同じ統計を実行することができます。

またスクリプトウィンドウに自分でプログラムを書くことができますが、正直RStudioの方が使いやすいです。


RStudioとの比較


スクリーンショット 2018-12-16 13.46.17

細かい事を言うと機能は違うのですが、画面としては上段のスクリプトウインドウと下に結果が出てくるという似た構図になります。

違いとしてはRStudioでプログラムを書くのに対し、Rコマンダーではメニューで統計を選択するのでスクリプトウインドウをあまり使わないところでしょうか。

加えてRStudioの右側にあるEnvironmentビューやFilesビュー、Plotsビュー、パッケージビューがRコマンダーにはありませんが、操作ができないというわけではありません。


スクリプトウインドウの別の使い方

メニューで統計をしてしまうのでスクリプトウインドウを使う場面は少ないのですが、別の使い方もできます。

それはRコマンダーで出てきたプログラムを読んで勉強するです。

決して見やすくないのと、ある程度慣れないと英語ばかりで何のことかわからないのですが、EZRとRStudioを両方使いしている時はEZRで行って出たプログラムを見て勉強することもできなくはありません。


まとめ


今回はRコマンダーの画面の説明を行いました。前回のRStudioの説明と併せて自分にあうソフトを選んでください。


次回はRStudioの便利な機能の1つであるプロジェクトについて紹介します。



全ての記事一覧は以下になります。


前回の記事ではRコマンダー(EZR、改変R)とRStudioについて解説しました。

しかしRコマンダーやRStudioといっても、どれを使えばいいのか?という疑問も出てくると思います。

今回はチャートを作成しましたので目的別にソフトを紹介します!


Rのソフト、何を選ぶか


先に全体像を貼っておきます。時間がない方はこの図だけでもご参照ください。
以下それぞれの解説を書いています。

スクリーンショット 2018-12-16 6.00.42





①結果がわかればいい。グラフも標準で十分。


スクリーンショット 2018-12-16 6.01.14


統計はあくまでもツールなので統計に時間をかけるよりも研究に時間を割いたほうが効率的です。

そのような意味でプログラムを書かなくても統計ができるRコマンダーが適しています。

Rコマンダーは改変RコマンダーやEZRがありますが改変RコマンダーはWindows専用ソフトなので、Macの場合は自動的にEZRになります。

ただ2つ確認したいことがあります。


  • どの本(セミナー)で統計を勉強しているのか?
統計を勉強するのに何かしらの書籍やセミナーに参加すると思いますが、その本が何の統計ソフトを使っているかを確認することをおすすめします。

弘前大学の対馬栄輝先生の書籍やセミナーを受講されている場合は改変Rコマンダーを使う方がスムーズに進められると思います。EZRに関する書籍も多くあり、その場合はEZRを選ぶとおすすめします。

ソフトでメニューの位置や特徴が微妙に違うので、本と同じソフトを使ったほうが効率的です。


  • Macで日本語が使えない場面がある問題
MacでEZRを使う場合はExcelデータに日本語が入っている場合注意が必要です。EZRに日本語が直接入力できなかったり、作ったグラフに日本語があると□□□みたいに文字化けします。

変数名を全て英語にするなら問題ありませんが(年齢→age)、日本語を使いたいなら次の②を検討する必要があります。




②Rコマンダーからステップアップをしてみたい
スクリーンショット 2018-12-16 6.01.22


もちろんですが、Rコマンダーにない統計手法やグラフはそのままでは使えません。

例えば下図の左のグラフはRの標準的なものを使っています。それでもエクセルよりは十分多くのグラフが作れますが、右のように自分でグラフが作れるようになるとできることが大きく増えます。

またEZRは慣れてきたけど、実際にRも使ってみたいという声も聞きます。
スクリーンショット 2018-12-16 5.40.17


このような場合はRStudio+EZRを使う事をおすすめします。実はRコマンダーでも「パッケージ」をインストールして機能を追加することはもちろんできます。しかしR Studioはプログラムの書きやすさや、パッケージの管理がR コマンダーより勝っています。

加えて言うとEZRは「パッケージ」として登録されています。そのためRStudioからクリックするだけでEZRを呼び出すことができます。改変R はできませんのであしからず。

なので基本EZRを使いながら少しずつR も勉強していくという使い方ができます。私は「EZRで出したのをRStudioでもやってみる。逆にRStudioで挑戦してできなかったらEZRで補完する」といった勉強をしています。



③統計も必要なんだけど、実は研究よりも機械学習、AIに興味がある

スクリーンショット 2018-12-16 6.01.33



Rもパッケージを使うことで機械学習は可能です。しかし近年、機械学習の分野ではPythonというプログラム言語の方が多く使われています。私はRとPythonどちらも勉強していくつもりですが、統計はRコマンダーに任せて、Pythonで機械学習を勉強するのはありだと思います。

現在統計の分野ではR の方が得意とされてますが、今年に入りPythonで統計をするための本も出版されてきました。もし研究や統計以上に機械学習・プログラミングに興味があればPythonに挑戦するのもいいかもしれません。学会の統計でPythonを使っていたらレアキャラかも!


まとめ

今回は目的別にRのソフトを選ぶ方法を紹介しました。

今からRを勉強してみたい方も、すでにEZRなど使っていて「次はどうすればいいか?」と思われている方の参考になれば幸いです。

それぞれのソフトの簡単な解説は「RコマンダーやRStudioなどRのソフトにも色々あるので解説してみる」でも紹介していますので、興味のある方はあわせてご覧ください。


次回はRStudioの紹介を行います。



全ての記事一覧はこちらになります。

統計に強いプログラミング言語であるRですが、使うためのソフトが色々あります。今回はどんなソフトがあるのか目的別に紹介します。
  

  前提:Rで必ずする3つのステップ

  
Rを使うためには次の3つのステップを行います
  1.   データ(Excelなど)をRに取り込む
  2.   統計する、またはグラフを書く
  3.   結果を保存する
言われてみるとそうなのですが、プログラミングをしたことがないと意外とイメージしにくいものです。エクセルやワードで「新規作成」するかすでに保存されているデータを開くことはあっても、他の形式のファイルを別ファイルで読み込む経験が圧倒的に少ないので。保存するときもエクセルのグラフをパワーポイントに貼り付けることはあっても、エクセルのグラフだけを図として保存することはまずありません。

  
「R」プラスαがあった方がいい理由

  
まずRを使うためには本体である「R」が必ず必要になります。なければiOSが入ってないiPhoneみたいなもので何も動きません。
  
そしてプログラミングの猛者ならRだけでもできるかもしれませんが、初心者だと困ることがあります。
  
  スクリーンショット 2018-12-13 20.27.25
  
何をすればいいかわからない…そもそも何書いてるか意味わからない...
  
とりあえずExcelしか使ったことなかった自分はそっとソフトを閉じてしまった経験があります。
  

なぜわかりにくいのか?

  
Rはプログラミング言語なので、R本体だけだと①データ(Excel)の読み込み②統計③保存の全てでプログラムを書く必要があります。
  
初心者にとってExcelを読み込むだけでプログラムを書くのはめんどくさいし心が折れます。
  
そのためRを使いやすくするソフトや機能を追加する「パッケージ」を入れることをおすすめします。
  

RコマンダーかR Studioを使う
  

Rを使いやすくするソフトは数種類あります。
  
R コマンダー
  
プログラミングせずに統計が行えるソフトまたはパッケージです。プログラムを書かずにクリックだけでRが使えてしまいます。R コマンダーを使うと①データの読み込み②プログラムを書く③データを保存する全てでプログラムを書く必要がありません。
  
  R コマンダーには3つの種類があります。
 
  • R コマンダー
  • 改変R コマンダー
  • EZR
  
rコマンダー
基本形。改変R コマンダーもEZRとRこれを改造して機能を追加している。なので改変RかEZRをおすすめします。
  
弘前大学の対馬栄輝先生が作ったRコマンダーの改変版です。Windows専用。

"それなら,ということで独自の『改変Rコマンダー』を作成しました.改変Rコマンダーとは,当HP管理者が,Rコマンダーだけでは不十分な統計手法に,医学研究で頻繁に利用される手法を付け加えて改変したものです.いままで多くの方にご利用いただいて,バグなどを修正し,かなり使いやすくなっています."
対馬栄輝先生:RとRコマンダーより引用


対馬先生は理学療法士でもあり書籍や講習会を開くこともあるため名前を聞かれたことがある方も多いかと思います。

(実は)ダウンロードしたときについてくるパワーポイントのスライドは資料としても参考になります。


自治医科大学附属さいたま医療センターで開発されたWindows、Macの単体のソフトとしても使えますが。

そこで、Rコマンダーのカスタマイズ機能を利用して、多彩な統計解析機能を組み込んだ統計ソフトEZR (Easy R)を作成し、公開しています。特に生存解析、ROC曲線解析、メタアナリシス、サンプルサイズの計算など、医療統計で役立つ解析が充実しています。


実はEZRは改変Rコマンダーと違い「パッケージ」としても登録されている所に大きなポイントがあります(RStudioのところで説明します)。
 

  
  
RStudioは統合開発環境(IDE)といい、Rの機能を最大限活用できるソフトです。
  
スクリーンショット 2018-12-13 23.44.38
(個人の好みで外観を変更しています。初期設定だと背景白いです)

RStudioの特徴はなんといってもプログラムが書きやすいこととパッケージの使いやすさ、データの保存、管理がしやすいことです。加えてパッケージをインストールすることでRコマンダーやEZRを呼び出してRStudioと同時に使うことが可能です

Rコマンダー単体でもプログラムを書いたりデータを保存できるのですが、使い勝手が全く違います。Rコマンダーからステップアップを目指すつもりがあればRStudioをおすすめします。
  

まとめ

今回はRのソフトについて紹介しました。

しかしRコマンダーやRStudioといっても「じゃあ、どれを使えばいいのか?」という疑問も出てくると思います。

なので次回は「どのソフトを選ぶと良いのか?」を目的別に選べるチャートを作ります!


↑このページのトップヘ