• 検索結果がありません。

乃木坂スクール公開用

N/A
N/A
Protected

Academic year: 2021

シェア "乃木坂スクール公開用"

Copied!
49
0
0

読み込み中.... (全文を見る)

全文

(1)

「地域医療ビッグデータ入門」2018

無料フリーソフトウェアの

統計ソフト解析環境

Rを

使った分析入門

2018/11/16

東京大学UMINセンター

岡田 昌史

(2)

タイトルのどこが間違っているか

❖

無料ではなく、「フリーソフトウェア」

❖

有料のR、代表的にはMicrosoft R Openなどもあります

❖

統計ソフトではなく、「統計解析環境」

❖

統計解析だけではなく、データの前処理、視覚化、レポート作成まで含む統合

環境です

❖

Rを使った分析入門ではなく、Rの紹介

❖

「分析」まで講義でいくには少なくとも4コマぐらいは必要ですが、オンライ

ン講義や公開されている資料や本などで十分自学自習可能です。

❖

今日は、どんなことができるかを知ってもらって、使うきっかけになってもら

えばと。

(3)

本日の内容

❖

自己紹介

❖

Rとは

❖

データサイエンスのためのプログラミング言語R

❖

Rの限界

❖

Web開発環境としてのR

❖

文芸的プログラミングとReproducible Research

❖

一旦まとめ

❖

実際のRコードの紹介

(4)

自己紹介

❖

現職: 東京大学医学部附属病院, 大学病院医療情報ネット

ワーク研究センター(UMIN)

❖

疫学と医療情報学を専門にしています.医学部出身なので,

数学や統計学は専門的に勉強したことはありません.

❖

疫学は統計学を用いて病気の原因を探っていく学問なの

で,統計が必要になり,Rバージョン0.99を動かしたのが

Rに関わるきっかけとなりました.

(5)
(6)

統計解析

と グラフィックスのための

フリーソフトウェア環境

http://www.r-project.org/

R is a free software environment for

statistical computing and graphics.

(7)

R is a free software environment for statistical computing and

graphics.

❖

R is environment

❖

数値, 行列, 文字列からモデル, 関数まで一体として取

り扱うことができるデータ構造

❖

さまざまなデータを取り扱う関数

❖

S言語に似たプログラミング言語

❖

様々な出力形式を用いることができるプロット機能

生データを読み込み, クリーニングし,




対話的にモデルを開発して仮説を検証し,




レポートを作成する過程を




すべてRの中だけで完結できる

(8)

R is a free software environment for statistical computing and

graphics.

❖

R is free software

❖

GNU General Public Licenseによる


「自由な」ソフトウェア

❖

再配布の自由

❖

ソフトウェアの動作を調べ、それを改変する自由

❖

改良したものを配布する自由

誰からでもコピーしてもらうことができ、

内部動作を完全に検証でき、




気に入らない部分があれば




改良版を公開することもできる

(9)

Rを構成するもの

❖

いわゆる“R”本体 — 初めてインストールして起動した時から使

える機能

❖

基本的な機能のみだが, 体系的に作られ, 


重点的にテストされる

❖

追加パッケージ

❖

主に CRAN(Comprehensive R Archive Network) Webサイトから

ダウンロードして利用する, 分野・領域に特化した追加機能

❖

誰でも投稿できる

(10)

R本体の機能(ベースパッケージ)

❖

確率分布, 古典的検定, 一般化線形モデル,時系列データ構造, クラ

スター分析,....

❖

文字列検索, システムコマンドの実行, WebブラウザへのURL送

信,....

❖

数式の表示, PicTeX形式でのプロット出力, PostScript出力...

❖

104種類のサンプルデータセット

❖

主要開発メンバーが議論しながら作成しており、安定、信頼でき

る

(11)

パッケージ

❖

CRAN(Comprehensive R Archive Network)

❖

R本体とパッケージのダウンロードサイト

❖

現在13345のパッケージが登録

❖

各専門領域のユーザが作成・公開しているものが多

(12)

パッケージでできること

>

library

(NipponMap)

> p <-

JapanPrefMap

(col=

'ivory'

)

> dat <- foreign::read.

dbf

(system.

file

(

"shapes/jpn.dbf"

, package=

"NipponMap"

))

>

symbols

(p, circles=

sqrt

(df / (

2

* pi )), fg=

"olivedrab4"

, bg=

"olivedrab1"

,

add=

TRUE

, inches=

F

)

(13)

CRAN Task View

❖ 専門分野別のパッケージの選択ガイド。各々の専門家が執

筆

❖ Bayesian : Bayesian Inference

❖ ChemPhys : Chemometrics and Computational Physics ❖ ClinicalTrials : Clinical Trial Design, Monitoring, and

Analysis

❖ Cluster : Cluster Analysis & Finite Mixture Models ❖ DifferentialEquations : Differential Equations

❖ Distributions : Probability Distributions ❖ Econometrics : Econometrics

❖ Environmetrics : Analysis of Ecological and Environmental Data

❖ ExperimentalDesign : Design of Experiments (DoE) & Analysis of Experimental Data

❖ ExtremeValue : Extreme Value Analysis ❖ Finance : Empirical Finance

❖ FunctionalData : Functional Data Analysis ❖ Genetics : Statistical Genetics

❖ Graphics : Graphic Displays & Dynamic Graphics & Graphic Devices & Visualization

❖ HighPerformanceComputing : High-Performance and Parallel Computing with R

❖ MachineLearning : Machine Learning & Statistical Learning ❖ MedicalImaging : Medical Image Analysis

❖ MetaAnalysis : Meta-Analysis

❖ Multivariate : Multivariate Statistics

❖ NaturalLanguageProcessing : Natural Language Processing

❖ NumericalMathematics : Numerical Mathematics

❖ OfficialStatistics : Official Statistics & Survey Methodology ❖ Optimization : Optimization and Mathematical

Programming

❖ Pharmacokinetics : Analysis of Pharmacokinetic Data ❖ Phylogenetics : Phylogenetics, Especially Comparative

Methods

❖ Psychometrics : Psychometric Models and Methods ❖ ReproducibleResearch : Reproducible Research ❖ Robust : Robust Statistical Methods

❖ SocialSciences : Statistics for the Social Sciences ❖ Spatial : Analysis of Spatial Data

❖ SpatioTemporal : Handling and Analyzing Spatio-Temporal Data

❖ Survival : Survival Analysis

❖ TimeSeries : Time Series Analysis

❖ WebTechnologies : Web Technologies and Services ❖ gR : gRaphical Models in R

(14)

開発史

❖

1991年ごろ Ross Ihaka と Robert Gentlemanにより開発が始まる

❖

1995年 GPLライセンス

❖

1997年 Core Group発足

❖

2000年 バージョン1.0.0

❖

2002年 バージョン1.5.0

❖

2004年 バージョン2.0.0

❖

2005年 バージョン2.1.0 国際化対応

❖

2013年 バージョン3.0.0

❖

現在 バージョン3.5.1

(15)

GNU General Public License

❖

Linuxなどで有名な、 オープンソースライセンスの1つ.

❖

∼をしてはいけない, ではなく, 


∼をさまたげてはならない, というライセンス

❖

Rのユーザには, 以下のような自由が認められる

❖

Rのコピーを再配布する自由

❖

Rの動作(ソースコード)を調べる自由, 


それを改変する自由

❖

自分が改良したRを広く配布する自由

(16)

自由なライセンスの効果

❖

すべての内部アルゴリズムを追跡可能

❖

バグの発見と修正の過程が透明

❖

機能の追加が容易

❖

良質で有用なバージョンは本体機能の一部




として取り込まれうる(国際化機能など)

(17)

開発体制

❖

GPLなので, 誰でも修正は可能

❖

パッケージは各作者が主に開発・修正

❖

公式的なRリリースをコントロールしているチーム:


R Core Group

❖

Core Groupは公開メーリングリストで議論し, 開発途中の

ソースコードも公開

❖

バグおよび対処の一覧も公開・誰でも登録可能

(18)

R Core Group

•

Douglas Bates

•

John Chambers

•

Peter Dalgaard

•

Robert Gentleman

•

Kurt Hornik

•

Ross Ihaka

•

Tomas Kalibera

•

Michael Lawrence

•

Friedrich Leisch

•

Uwe Ligges

•

Thomas Lumley

•

Martin Maechler

•

Martin Morgan


•

Paul Murrell

•

Martyn Plummer

•

Brian Ripley

•

Deepayan Sarkar

•

Duncan Temple Lang

•

Luke Tierney

(19)

The R Foundation

❖

Rの著作権を持ち, Webサイトやドメイン


(r-project.org)を持つNPO

The R Foundation for Statistical Computing

c/o Institut für Statistik und Wahrscheinlichkeitstheorie

Technische Universität Wien

Wiedner Hauptstraße 8-10/1071

1040 Vienna, Austria

Tel: (+43 1) 58801 10715

Fax: (+43 1) 58801 10798

(20)

The R Consortium

❖

2015年に設立された,主にRを組み込んだり改造したソフトウェア製品を出している

ベンダーによるコンソーシアム

❖

Rに関する開発プロジェクトに競争的資金提供も行う

❖

GPLライセンスは,R本体及びその派生版について,ソースコードを含めた再配布を

要求するが,無改変のRを内部に組み込んだ製品を販売することはできる.

❖

Revolution Analytics社(現Microsoft)など,改変版のRをソースコードを公開しつつ販

売している場合もある.

❖

コンソーシアムのメンバーも積極的に UseR! などの国際ユーザカンファレンスに参加

するなど,フリーソフトウェアコミュニティと良い関係を築いている

(21)

Rはどのくらい普及しているか

❖

2016年の時点で, 学術誌で利用されたソフトウェア

としてはSPSSに次いで2位

❖

データサイエンスの求人のスキルではSQL, Python,

Java, Hadoopについで5位

Robert A. Muenchen, The Popularity of Data Science Software, 6/19/2017.

http://r4stats.com/articles/popularity/ より

(22)

モダンな

R — 


データサイエンスのための

プログラミング環境として

(23)

パイプ演算子の登場

❖

パッケージにより,演算子も定義できる

❖

%>% という,Base Rには存在しない演算子を定義する

magrittr パッケージと,それを活用することでソース

コードの可読性を大幅にあげる dplyrパッケージの登場

(2014年)によって,解析前の「データの加工」処理のプ

ログラムの書き方が大きく変わった

(24)

パイプ

+dplyr

data

(iris)

iris2 <-

subset

(iris, Sepal.Length >

5.0

& Species ==

"setosa"

)

iris2$Petal.Area <- iris2$Petal.Length * iris2$Petal.Width

str

(iris2)

library

(dplyr)

iris %>%

filter

(Sepal.Length >

5.0

& Species ==

"setosa"

) %>%

mutate

(Petal.Area = Petal.Length * Petal.Width) %>%

str

(25)

ggplot2の登場

❖

Rはグラフィックス描画システムが高度に抽象化されており,もともとコー

ドを変更せずに,出力先を画面,画像,PDFに自在に変更できたり,グラフの

座標系をそのまま位置指定に用いて凡例や注釈を加えたりすることができ

る

❖

デフォルトのbase graphicsに加え,従来もgrid, latticeなどのパッケージを

使ったグラフィックスが使われてきたが,ggplot2が登場(2007年)して急速

に普及した.

❖

データ+点+回帰直線+タイトル,というように,演算子”+”を使って重ね書

きしていく記法でわかりやすく,デフォルトでも見た目が美しくなるよう

に調整されている

(26)

ggplot2

plot

(Sepal.Length ~ Petal.Length, data=iris, col=as.

numeric

(iris$Species),

pch=as.

numeric

(iris$Species), main=

"Sepal Length - Petal Length"

)

library

(ggplot2)

ggplot

(data=iris,

aes

(x = Petal.Length, y = Sepal.Width)) +

geom_point

(

aes

(color=Species, shape=Species)) +

(27)

Rstudioの登場

❖

Rは基本的にはコマンドライン操作

❖

パッケージとして,R commander, RzなどのGUIを実装したものもある

が,あくまでも操作をGUIから実行するためのもので,「Rプログラミン

グ」のためのものではなかった.

❖

2011年に,「R言語のプログラムを書くための統合開発環境」として

Rstudioが登場.

❖

このあたりから,Rの中心的な利用方法が「データはあらかじめどこかで

作っておいて,解析を実行する」から,「データの加工,整理,抽出か

ら解析,評価,レポート作成まで」に広がってくる.

(28)

tidyverse

❖

dplyr, ggplot2の作者,Hadley Wickham(現Rstudio)が提唱する,いわば「プログラム処理し

やすいデータの表現方法」と,そのためのパッケージ群

❖

これを積極的に取り入れてワークフローを構築すると,base Rとはかなり違う世界になるが,

(29)
(30)

Rの限界

❖

そもそも,Rはインタプリタ言語

❖

マルチスレッドもない

❖

演算速度はBLAS/LAPACK依存

❖

実行時には,全てのデータはオンメモリに保持される.

❖

baseでは型はdoubleまで

❖

まぁ,速くはないし,巨大なデータを扱えるわけでもい

(31)

メモリの限界突破

❖

64ビットOSが普及し,64ビット環境でコンパイルされたRが配布さ

れるようになったので,あくまでもオンメモリ動作であるという筋

の悪さはそのままだけれども,限界に達することはあまりなくなっ

た

❖

オンメモリがとても無理なデータセットを扱う場合,biglmなど,

外部データベースを用いるパッケージを使う

❖

最近ではApache SparkにもRのインターフェースが備えられており,

処理はSpark側だがデータの操作や基本的なモデリングはRのコード

を大きく改変せずに実行できる

(32)

インタプリタの限界突破

❖

R 2.13ごろから,compiler パッケージが付属するように

なり,バイトコンパイルでの性能向上を図れるようになっ

た

❖

さらに速さが必要な場合には,Rcppパッケージを使っ

てC++コードをRソース中に埋め込んでおき,コンパイ

ルされた関数を実行時に呼び出すことも可能

(33)

並列処理の限界突破

❖

MPIライブラリを使うRmpiパッケージがあり,プロセ

スレベルで並列化させることはかなり容易にできた.

❖

R 2.14.0からparallelパッケージがデフォルトで付属され

るようになり,プロセスレベルでの並列化はさらに容

易になった

❖

Microsoftの改変版であるMicrosoft R Openにはマルチス

レッドのBLAS/LAPACKが含まれている

(34)
(35)

Shinyの登場

❖

2012年にリリース.RでWebアプリを作成する!パッケージ

by Rstudio

❖

server.Rとui.Rの2つのRコードを書くと,パラメータ選択

やデータセット選択のインターフェース画面と,そこから

の入力に反応してグラフや表を出力する画面を持ったシン

グルページWebアプリケーションがRの中で動く

❖

shiny-server ソフトウェアを利用すると,デーモンとして

サービスさせることも可能

(36)

Shinyアプリ

library(shiny)

function(input, output) {

output$distPlot <- renderPlot({

x <- faithful[, 2] # Old Faithful Geyser data

bins <- seq(min(x), max(x), length.out = input$bins + 1) hist(x, breaks = bins, col = 'darkgray', border = 'white') })

}

library(shiny)

fluidPage(

titlePanel("Hello Shiny!"), sidebarLayout(

sidebarPanel(

sliderInput("bins",

"Number of bins:", min = 1, max = 50, value = 30) ), mainPanel( plotOutput("distPlot") ) ) )

server.R

ui.R

(37)
(38)

Rと文芸的プログラミング

❖

Rユーザの国際カンファレンスであるUseR! 2016で,

Donald Knuth による講演 Literate Programming が行わ

れた

❖

Rの原型には,2002年にWEBの実装であるSweaveが組

み込まれており,Sweave()とStangle()関数によって1つ

の文書から実行可能なコードとTeX文書を両方生成でき

る.

(39)

knitr の登場

❖

2012年に,Sweaveの使いづらい点の多くを改良し,入

力フォーマット, 出力フォーマット共に多くのフォーマッ

トを利用できるようにした,knitrパッケージが登場

❖

WEB入力だけではなく,Markdown入力,HTML入力の

中にRスクリプトを埋め込むことができた

❖

出力もHTML, PDFなどに対応し,図表やRからの出力

キャッシュの取り扱いも秀逸

(40)

R Markdown

❖

knitrの中でも,特に簡便に書くことができる

Markdown記法を入力に使い,PDF/HTML/Word文書

やHTMLプレゼンテーションを出力する機能を充実さ

せた rmarkdown パッケージがRstudioと統合されてい

る.

❖

TeXやWeaveからは少し離れてしまっているが,文芸的

プログラミングの考え方が伝わっている

(41)

R Markdown

2015

年

6

月現在、データベース中に存在する症例数は

`r nrow(ns.

症例

)`

例であった。

選択基準・除外基準に合致し、登録可能であった症例は

`r nrow(ns.Subjects)`

例であった。

このうち、同意が得られている症例は

`r sum(!is.na(ns.Subjects$

同意取得日

))`

例であった。

このうち、割り付けが実施された症例は

`r sum(!is.na(ns.Subjects$

割付群

))`

例であった。

そのうち、単独群に割り付けられた症例数は

`r nrow(subset(ns.Subjects,

割付群

== "

単独群

"))`

例であり、併用群に割り付けられた症例数は

`r nrow(subset(ns.Subjects,

割付群

== "

併用群

"))`

例

であった。

文芸的プログラミング

, Reproducible Research

(42)

Reproducible Research

❖

knitrを使うと,解析の前処理でできたファイルをキャッシュに残しておけ

るので,一時ファイルを作成して保存する,という作業が必要なくなる

❖

データベースへの接続→データ抽出→外れ値の排除→変数導出等の加工→

モデル構築→結果表,グラフの提示→最終データ保存 のような流れを1つ

のR markdownファイルで記述し,バージョン管理できる

❖

これにより,R markdownファイルと生データソースがあれば,誰でも解

析結果を再現することができる: Reproducible Research

❖

さらに Microsoft Rではパッケージ自体の特定バージョンをキャッシュし

て同時保存するなど,より厳密な再現性の確保の試みがなされている

(43)
(44)

Rを含むソフトウェア

❖

R自体はフリーソフトウェアだが、ソースコードを公開するとい

うライセンス条件を満たせば、Rを改造したバージョンを自社製

品に含めることができる: Microsoft R Open

❖

Rを別にインストールしてもらうことを前提にして、Rに機能を

付加するソフトウェアを開発することができる: Rstudio, R

AnalyticFlow, exploratory,

❖

R言語と互換性がある言語エンジンを自社開発して含めることは

(45)

R AnalyticFlow

•

ef-prime社による、Rを用いてデータ処理ワークフローを開発するソ

フトウェア。無償で配布されている。

(46)

R AnalyticFlowを使った、


EDC出力データからSDTMへの変換

•

Rの関数・コードを、設定パラメータと合わせてブロックにまとめ、そ

れを接続して処理フローを作る

•

ブロックを作成する人は

Rの知識が必要だが、フローを組み立てる人はR

を知らなくてもよい

(47)

Exploratory

•

tidyverseを用いたデータの前処理、視覚化、マイニング。学生向け

コミュニティ版は無料

(48)
(49)

まとめ

- 自分にとってRとは

❖

統計解析とグラフィックスのためのフリーソフトウェア環境

❖

unix系OSを使っている人が,シェルスクリプトの延長のような感覚でプロ

グラミングするときに一番しっくりくる言語

❖

学生教育や医学研究には十分な性能だが,大規模データを高速に処理する

ようなときには最近はPython+numPyを使う人が多いかもしれない

❖

しかし,それなりにルーズにも書ける文法と柔軟な演算子オーバーライド,

ポリモルフィズムなどを備えているので,コードは書きやすい…と思う.

❖

なんといっても1万を超えるパッケージによる万能性と安心感から,とりあ

えずなんでもRで書こう,という気にさせる

http://www.r-project.org/ http://r4stats.com/articles/popularity/

参照

関連したドキュメント

Morgan, “Acoustic echo cancellation for stereophonic teleconferencing,” pre- sented at the 1991 IEEE ASSP Workshop Appls. Singal Processing Audio Acoustics, News Paltz,

友人同士による会話での CN と JP との「ダロウ」の使用状況を比較した結果、20 名の JP 全員が全部で 202 例の「ダロウ」文を使用しており、20 名の CN

2Tは、、王人公のイメージをより鮮明にするため、視点をそこ C木の棒を杖にして、とぼと

2 つ目の研究目的は、 SGRB の残光のスペクトル解析によってガス – ダスト比を調査し、 LGRB や典型 的な環境との比較検証を行うことで、

「心理学基礎研究の地域貢献を考える」が開かれた。フォー

非自明な和として分解できない結び目を 素な結び目 と いう... 定理 (

【通常のぞうきんの様子】

えて リア 会を設 したのです そして、 リア で 会を開 して、そこに 者を 込 ような仕 けをしました そして 会を必 開 して、オブザーバーにも必 の けをし ます