Open Box with STAT

基本的な統計学と疫学的手法,それらの文献等,R等の統計ソフトの使い方をブログ記事やYoutubeを用いて解説します.

よく使うR パッケージ(package)集

f:id:shuntaro-web:20210520194523p:plain Rを使うときパッケージ(以下、package)を利用すると思います。 packageとは、Rの機能を拡張する関数、データ、資料の集まりです。

例えば、きれいな図を描きたいときは、ベースのR機能であるplotでは物足りないため、ggplot2 packageを使います。

一般化推定方程式を使いたいときは、ベースのR機能だけでは、数式を読み解き、関数を自作する必要がありますが、gee packageを使えば関数の自作は不要です。

このようにRを使う上でpackageは重要ですし、いろいろなpackageを知っていると楽ができます。ただし、packageの有無を自分の解析能力の限界にする必要はありません。自ら関数が組めると解析の幅が広がります。

packageは山ほどあります。しかし解析によく使うpackageはある程度限られます。この記事では、ぼくが使っている(使いたい)R packageを紹介します。

それでもかなりの分量になりました*1

データハンドリング

tidyverse

今はこのpackageは手放せませんね。

www.tidyverse.org

tidylog

tidyverse関数群でデータセットの形を変形したり、くっつけたりするときに行数を確認することは重要です。dim()やstr()で小まめに確認する癖もつけたいですが、自動で行数等の出力するこのpackageはtidyverseと一緒に使いたいです。

github.com

lubridate

時間データを楽に扱うための関数群です。公式チートシートも出ています。

lubridate.tidyverse.org

haven

SASやSTATAのデータを読み込むためには、このpackageが必要です。

haven.tidyverse.org

要約

gtsummary

変数の要約は重要です。臨床研究では要約した結果は必ずTable 1にまとめます。やることは単純なのですが、非常に手間のかかる作業です。しかし安心してください。今、ぼくらにはgtsummary packageがついています!

最近では、glm等でのモデリングの結果も要領よくまとめてくれますし、進化がすごいです。今後も要チェックですね。

www.danieldsjoberg.com

可視化

ggplot2

いわずもながですね。きれいな図を作るためにはこのpackageがないと始まりません。library(tidyverse); library(tidylog); library(ggplot2); はセットで覚えましょう。

ggplot2.tidyverse.org

ggplot2のヘルパー

ggplot2をさらに拡張するpackageもたくさんあります。いくつかあげておきます。

GGally

複数の変数を組み合わせた分布を描写するggpairs()関数もこのpackageに含まれます。 f:id:shuntaro-web:20210520180157p:plain ggobi.github.io

ggpubr

GGallyはどちらかといえば研究者側がデータの性質を把握しやすくするためのpackageです。ggpubrは論文化を意識した図を作成できるpackageです。

(ぼくは好みませんが)群間比較した後にそのP値を図の上の方に出力することもこのpackageでできます。 f:id:shuntaro-web:20210520180123p:plain rpkgs.datanovia.com

ggbeeswarm

(ぼくが好きな)ドットプロットをさらに良い感じにするpackageです。 f:id:shuntaro-web:20210520180049p:plain github.com

gghighlight

複数個体の系列データをプロットするときに、ある個体や特徴をもったグループのみ目立たせたいときがあります。そんなときに使うpackageです。 f:id:shuntaro-web:20210520180035p:plain cran.r-project.org

ggrepel

散布図を描いたときに、各点に対してラベルを貼りたいときがあります。しかし工夫をしないと点とラベルが重なってしまいます。それを解決するpackageです。

f:id:shuntaro-web:20210520175503p:plain

cran.r-project.org

ggridges

変数の分布を山脈のように示すことができるpackageです。

f:id:shuntaro-web:20210520175310p:plain

cran.r-project.org

ggfority

時系列データを描写するときに使います。

github.com

patchwork

ggplotでは、facet関数を使うことで複数の図を1つにまとめることができます。しかし同じ種類の図しかまとめられません。別に描いた図を1つの図としてまとめたい場面はあると思います。それを可能にするのがpatchwork packageです。

patchwork.data-imaginist.com

ggsci

雑誌は投稿規定に色の使い方を指定する場合があります。リジェクトが続く中、気持ち折れないように、無になりながら、色を細々設定し直すのは苦痛です。

ggsci packageはその苦痛をやわらげます。各種雑誌が指定する色を簡単に設定できます。中にはジョークみたいな色テーマもあります。 f:id:shuntaro-web:20210520181308p:plain f:id:shuntaro-web:20210520181343p:plain

nanx.me

統計解析

検定

coin

正確検定を包括的に取り扱うpackageです。

https://cran.r-project.org/web/packages/coin/vignettes/coin.pdf

回帰

broom

Rの組み込み関数(lm, glm, t.test, etc...)の出力をtibble形式に変換します。これにより報告がしやすくなります。

cran.r-project.org

lme4

混合効果モデルを使うのに必要です。

github.com

lmerTest

lme4では推定値の検定をしてくれません。このpackageを追加することで検定できるようになります。

github.com

gee

一般化推定方程式を使うのに必要です。

https://cran.r-project.org/web/packages/gee/gee.pdf

geepack

geeを拡張します。よりglmっぽく使えるようになります。

https://cran.r-project.org/web/packages/geepack/geepack.pdf

emmeans

このpackageを使えば、モデルを使って推定した後、任意の条件付き推定値を算出することができます。使い方に癖はありますが、手放せないpackageの一つです。

情報量がとにかく多いです。

cran.r-project.org

interactions

交互作用項をモデルに含めたときに、推定した数値を示したり、簡単に図示できるpackageです。emmeansでも同じことができますが、簡単な推定なら、このpackage使うのも手です。

f:id:shuntaro-web:20210520183952p:plain interactions.jacob-long.com

forestplot

複数の変数の点推定値と区間推定値を図示できます。最近はgtsummaryでも同じようなことができます。

f:id:shuntaro-web:20210520184234p:plain cran.r-project.org

boot

ブートストラップをおこなうpackageです。最近は因果推論でもブートストラップで、えいやっ!と信頼区間求めている論文多いです。

https://cran.r-project.org/web/packages/boot/boot.pdf

logistf

個人的な趣味です。ロジスティック回帰モデルやCox比例ハザードモデルを使うときに、推定が不安定になることがあります*2。このとき、ある正則化項を加えると推定が安定します。この推定をおこなうpackageです。サンプルサイズが小さいときに使う場面が多いです。

https://cran.r-project.org/web/packages/logistf/logistf.pdf

生存時間解析

survival

生存時間解析するならば、このpackageは必須です。

https://cran.r-project.org/web/packages/survival/vignettes/survival.pdf

survminer

survival packageよりも良い感じの図を簡単に描けます。

f:id:shuntaro-web:20210520184523p:plain rpkgs.datanovia.com

cmprsk

競合リスクの解析にはこのpackageを使います。

https://cran.r-project.org/web/packages/cmprsk/cmprsk.pdf

疫学

Epi

標準的な疫学手法を扱います。

bendixcarstensen.com

epiR

Epi packageと似ています。こちらの方が現代的かな、という印象です。

cran.r-project.org

因果推論

Matching

マッチングをおこなうpackageです。

http://sekhon.berkeley.edu/papers/MatchingJSS.pdf

MatchIt

傾向スコアを利用して、マッチングから推定まで統一的におこなうpackageです。サイトの情報も充実しており、非常に勉強になります。

kosukeimai.github.io

WeightIt

傾向スコアを利用して、逆確率重み付けから推定まで統一的におこなうpackageです。

ngreifer.github.io

cobalt

因果推論するときは、共変量バランスの確認が必要です。cobalt packageはここを担います。

f:id:shuntaro-web:20210520190424p:plain ngreifer.github.io

mediation

オーソドックスな媒介分析をおこなうpackageです。

https://cran.r-project.org/web/packages/mediation/vignettes/mediation.pdf

CMAverse

mediation packageより、さらに効果を分けた媒介分析が可能になります。アイコンがかわいらしい。

bs1125.github.io

機械学習

glmnet

Lasso, Ridge, Elastic netをおこなうpackageです。

cran.r-project.org

glmnetUtils

glmnet packageは使い方に癖があります。それをglmライクに矯正します。

cran.r-project.org

rpart

オーソドックスな決定木分析をおこないます。

https://cran.r-project.org/web/packages/rpart/vignettes/longintro.pdf

partykit

決定木分析が少しおしゃれになります。

https://cran.r-project.org/web/packages/partykit/vignettes/partykit.pdf

pROC

ROC関連のさまざまな解析ができるようになります。

github.com

caret

あらゆる機械学習手法をRで使えるようになります。

topepo.github.io

欠測データ

mice

オーソドックスな多重代入法が可能になります。

github.com

Amelia

階層データの多重代入法が可能になります。

gking.harvard.edu

時系列解析

tibbletime

tidyverseのフレームワークで時系列データを扱えるようになります。

business-science.github.io

xts

時系列データの型を提供します。

github.com

forecast

時系列モデルの作成と予測をおこないます。

pkg.robjhyndman.com

urcs

時系列モデルで単位根の検定をおこなえるようになります。

cran.r-project.org

ベイズ推定

rstan

ベイズを利用することで、さらに柔軟なモデリング可能になります*3

mc-stan.org

シミュレーション

MASS

なんとも説明しづらいですが、よく出てくるpackageです。乱数発生させたりします。

www.stats.ox.ac.uk

rsample

さまざまなサンプリングができるpackageです。

rsample.tidymodels.org

purrr

for構文を現代的に処理することができるpackageです。覚えることは多いですが、使いこなせるようになれば解析やシミュレーションは捗るはずです。

purrr.tidyverse.org

その他

here

RStudioのプロジェクト機能を使えば、フォルダやファイルの参照は楽ですが、here packageを使えばさらに楽になります。

here.r-lib.org

rmarkdown

rmarkdownを使えば、コードとその結果、解析のメモやコメントを文章として出力することができます。これを使って共同研究者等とコミュニケーションしましょう!

rmarkdown.rstudio.com

sessioninfo

解析に使ったRのバージョンやpackageを記録に残すのも重要です。sessioninfo packageはそれを可能にします。

github.com

styler

コードのスタイルをきれいにします。

styler.r-lib.org

palmerpenguins

irisデータに替わるデモデータセットです。

allisonhorst.github.io

sqldf

RでSQL構文が使えるようになります。

github.com

zipangu

和暦を簡単に扱えるようになります。

uribo.github.io

ICD関連

ここ細かすぎるので、刺さる人にしか刺さりません。

icd

ICDを利用した解析が可能になります。

jackwasey.github.io

comorbidity

ICDのコーディングができます。

github.com

ここまで読んでくださりありがとうございました! 素敵なRライフを!!

*1:疲れた・・・。どんどん息切れしています。

*2:モデルによりアウトカムを完全(ほぼ完全)に分離できる状態です

*3:詳しい人に怒られそうな表現ですね