SlideShare una empresa de Scribd logo
1 de 19
Descargar para leer sin conexión
RとCDISC 
筑波大学 
岡田 昌史
CONTENTS 
• CDISC Introduction and History 
• R packages (ODMConverter, compareODM, 
R4CDISC) 
• Other Softwares(OpenCDISC, OpenClinica)
CDISCとは 
• CDISC(Clinical Data Interchange Standards) Consortium による医学領域での臨 
床試験データの標準規格 
• データの収集、クリーニング、蓄積、解析、レポートまでを包括している 
• 語彙(Terminology)の統一、メタデータ(測定日など)の厳密な記述に重点が 
おかれており、実用性が高い 
• 日米(日本は2016年度より)の医薬品承認機関に新しい薬の有効性、安全性 
の根拠となる研究データを提出する際のフォーマットとなっている
CDISCとは 
• データマネジメント, 統計解析の過程では、規格群のうちSDTM(Study 
Data Tabulation Model), AdAM(Analysis Data Model) が使われる 
• 規格書ドラフトにアクセスするためには会員になる必要があるけれども、 
正式にリリースされた規格書は無料でダウンロードでき、使用できる。 
• 臨床試験のデータを念頭に置いているが、CDASHなど観察研究にも適し 
た規格もあり、臨床試験のみで使うのはもったいない。メタデータへの 
アクセス手法が標準化されるのは研究者にとってもメリットが大きい。
CDISCの歴史 
• 1997年にVolunteer Groupとして設立 
• 2000年にNPOに 
• 2001年ごろからOperational Data Model(ODM): XMLによるデータ転送 
• 2002年にAdAM 
• 2003年にSDTM 
• 2005年にDefine.xml(ODMによるメタデータ表現) 
• 2008年にCDASH(症例報告書の標準化) 
• 2014年 Dataset-XML(ODMによるデータ表現), SHARE(Resource Description Frameworkによる規格表現な 
ど)
CDISCとRとのかかわり 
• CDISCでは、データはSAS xportフォーマットを用いることになっていた 
• Rでは、foreignパッケージではxport形式のファイルを書き出せない 
(write.foreign(package=“SAS”)はカンマ区切りを読むSASコード自体を出力) 
• 2007年にSASxportパッケージが登場してxport形式ファイルの書き出しができるように 
なった 
• とはいえ、xport形式では日本語の扱いがどうなるのかはっきりしない、変数名の制限 
などがある… 
• CDISCもODMベースのXMLによるデータ表現に移行(今年リリースされたDataset-XML) 
するので、今後Rとの親和性が上がるかも?
関連するパッケージ 
• CRANに登録されているCDISC関連パッケー 
ジ 
• ODMConverter, compareODM by Martin 
Dugas 
• R4CDISC by Ippei Akiya
ODMConverter 
> ODM2R(ODMfile=“Desktop/ODM-Test.xml”) 
作業ディレクトリ直下に ODM-Test.xml.RというRソースがで 
きる。中身はodmdata変数を作るコード。 
> source(“ODM-Test.xml.R”) により、変数 odmdataがで 
きる。
ODMConverter 
<ItemDef OID="I.1004" Name="Gender" DataType="integer"> 
<Question> 
<TranslatedText xml:lang="en">Gender</TranslatedText> 
<TranslatedText xml:lang="de">Geschlecht</TranslatedText> 
</Question> 
<CodeListRef CodeListOID="CL.1"/> 
<CodeList OID="CL.1" Name="Gender" DataType="string"> 
<CodeListItem CodedValue="1"> 
<Decode> 
<TranslatedText xml:lang="en">male</TranslatedText> 
<TranslatedText xml:lang="de">maennlich</TranslatedText> 
</Decode> 
みたいなのから 
> str(odmdata) 
'data.frame': 0 obs. of 8 variables: 
$ I.1004: Factor w/ 2 levels "1","2": 
..- attr(*, "labels")= chr "male" "female" 
..- attr(*, "labels2")= chr "maennlich" "weiblich" 
みたいなデータフレームができる
ODMConverter 
•メタデータ部分(ODMのStudy要素, AdminData要素)をデータフレームの各列のattributeとし 
て変換できている。 
•Define-xmlの読み込みには使える? → Define-xml 2.0のサンプルは読み込めなかった… 
•ClinicalData要素は無視されているようだ 
•sink()でRコードを出しているようで、処理に失敗すると出力が持って行かれたままになるので、 
sink(NULL)を何回か呼ぶ必要がある 
•今年論文が出ていた: Dugas M, Dugas-Breit S. Integrated data management for 
clinical studies: automatic transformation of data models with semantic 
annotations for principal investigators, data managers and statisticians. 
PLoS One. 2014 Feb 28;9(2):e90492
compareODM 
• 2つのODMファイルを入力すると、 list of identical, 
matching, similar and differing data items を出力する、と 
いうものらしいけれども… 
• ほぼ同じ2つのODMを渡しても1項目しかidenticalと 
出さないなど、若干挙動が不明瞭 
• やはりClinicalData要素は見ない
R4CDISC 
• Define-XML 2.0を読み込ませて、Dataset Level Metadataを抽出 
> str(getDLMD("define2-0-0-example-sdtm.xml")) 
$ IGD_OID : chr "IG.TA" "IG.TE" "IG.TI" "IG.TS" ... 
$ IGD_Domain : chr "TA" "TE" "TI" "TS" ... 
$ IGD_Name : chr "TA" "TE" "TI" "TS" ... 
$ IGD_Repeating : chr "No" "No" "No" "No" ... 
$ IGD_IsReferenceData : chr "Yes" "Yes" "Yes" "Yes" ... 
$ IGD_SASDatasetName : chr "TA" "TE" "TI" "TS" ... 
$ IGD_Purpose : chr "Tabulation" "Tabulation" "Tabulation" "Tabulation" ... 
p$l aInGnDe_d SEtlreucmetnurt"e " O n e r e:c ocrdh r p e"r OIn/e E rcecriortde ripeonr " p"lOannen edr eEcloerdm enpet r petrr iAalr m"s u"mOmaner y repacorardm epteerr value" ... 
D$E SIIGGDN"_ C.l.a.ss : chr "TRIAL DESIGN" "TRIAL DESIGN" "TRIAL DESIGN" "TRIAL 
$ IGD_ArchiveLocationID: chr "LF.TA" "LF.TE" "LF.TI" "LF.TS" ... 
C$r iItGeDr_iDa"e s"cTriripatil oSn u m m a r y": .c.h.r "Trial Arms" "Trial Elements" "Trial Inclusion/Exclusion 
C$r iItGeDr_iat"i t"lTe r i a l S u m m a r y": .c.h.r "Trial Arms" "Trial Elements" "Trial Inclusion/Exclusion
R4CDISC 
• Define-XML 2.0を読み込ませて、Variable Level Metadataを抽出 
> str(getVarMD("define2-0-0-example-sdtm.xml")) 
'data.frame': 414 obs. of 10 variables: 
"$I T.IARE_.IAtEeSmEOIQ"D . . . : chr "IT.STUDYID" "IT.AE.DOMAIN" "IT.USUBJID" 
$ IGD_Name : chr "AE" "AE" "AE" "AE" ... 
$ IR_OrderNumber : int 1 2 3 4 5 6 7 8 9 10 ... 
$ IR_Mandatory : chr "Yes" "Yes" "Yes" "Yes" ... 
$ IR_KeySequence : int 1 NA 2 NA NA NA NA 3 NA NA ... 
$ ID_Name : chr "STUDYID" "DOMAIN" "USUBJID" "AESEQ" ... 
$ ID_Length : chr "7" "2" "14" "1" ... 
$ ID_DataType : chr "text" "text" "text" "integer" ... 
S$u bIjDe_cLt aIbdeel n t i f i e r": "cSher q u"eSncteu dNy uImbdeenr"t i.f.i.er" "Domain Abbreviation" "Unique 
$ ID_SASFieldName: chr "STUDYID" "DOMAIN" "USUBJID" "AESEQ" ...
R4CDISC 
• Define-XML 2.0を読み込ませて、Value Level Metadata(ある列のデータの値によって、別の列のメタデー 
タが決まるような場合)を抽出 
> str(getValMD("define2-0-0-example-sdtm.xml")) 
'data.frame': 121 obs. of 9 variables: 
"$I T.IERG_.IEtGeOmORIRDE S . I N T:P " c"hIr T ."EGI.T.EDGAO.RDRAEOS.RPRERMS.EADIN"S P.A.M.T" "IT.DA.DAORRES.RETAMT" 
"$V L.VEaGl.uEeGLOiRsRtEOIS"D . ..: chr "VL.DA.DAORRES" "VL.DA.DAORRES" "VL.EG.EGORRES" 
$ IR_OrderNumber : int 1 2 1 2 3 4 5 1 2 1 ... 
$ IR_Mandatory : chr "Yes" "No" "No" "No" ... 
.$. .ID_Name : chr "DA.DISPAMT" "DA.RETAMT" "EG.INTP.ORRES" "EG.PRMEAN.ORRES" 
$ ID_Length : chr "2" "2" "8" "3" ... 
$ ID_DataType : chr "integer" "integer" "text" "integer" ... 
O$r iIgDi_nLaal bReel s u l t s " ": Scuhmmr a r"y D(iMsepaenn)s ePd R ADmouruantt"i o"n R(eOtruirgn eUd )"A m.o.u.nt" "Interpretation: 
$ ID_SASFieldName: chr "DISPAMT" "RETAMT" "INTPOR" "PRMEANOR" ...
R4CDISC 
• Dataset-XMLを読み込ませて、データフレームにする 
> read.dataset.xml(dataset_xml=”da.xml", define_xml=”define2-0-0- 
example-sdtm(2013-11-09).xml") 
STUDYID DOMAIN USUBJID DASEQ DATESTCD DATEST DAORRES 
1 CDISC01 DA CDISC01.100008 1 DISPAMT Dispensed Amount 40 
2 CDISC01 DA CDISC01.100008 2 DISPAMT Dispensed Amount 80 
3 CDISC01 DA CDISC01.100008 3 RETAMT Returned Amount 22 
4 CDISC01 DA CDISC01.100008 4 RETAMT Returned Amount 35 
5 CDISC01 DA CDISC01.100014 1 DISPAMT Dispensed Amount 80 
6 CDISC01 DA CDISC01.100014 2 DISPAMT Dispensed Amount 80 
7 CDISC01 DA CDISC01.100014 3 RETAMT Returned Amount 44 
8 CDISC01 DA CDISC01.100014 4 RETAMT Returned Amount 44 
9 CDISC01 DA CDISC01.200001 1 DISPAMT Dispensed Amount 40
R4CDISC 
• Define-XMLからDataset Level Metadata, Variable 
Level Metadata, Value Level Metadataをデータフ 
レームの形で抽出できる 
• Dataset-XMLをそのままデータフレームに変 
換できる
R4CDISC 
• たとえば、データセットをみていて、その項目の説明を知りたい 
> head(ds) 
STUDYID DOMAIN USUBJID DASEQ DATESTCD DATEST DAORRES 
1 CDISC01 DA CDISC01.100008 1 DISPAMT Dispensed Amount 40 
2 CDISC01 DA CDISC01.100008 2 DISPAMT Dispensed Amount 80 
> subset(varMD, ID_SASFieldName=="DAORRES")$ID_Label 
[1] "Assessment Result in Original Units" 
• DATESTCD==“DISPAMT” の場合、それがMandatoryかどうかを知りたい 
> subset(valMD, ID_SASFieldName==“DISPAMT”)$"IR_Mandatory" 
[1] "Yes"
CDISCに関係する 
オープンソースソフトウェア 
• OpenCDISC http://www.opencdisc.org/ 
• SDTM, AdAMなどのデータセットが標準に適合しているかどうか 
をチェックするバリデーションツール。AGPLのオープンソース 
ツールであるが、商用版は業界のデファクトスタンダードになっ 
ている。 
• OpenClinica http://www.openclinica.com/ 
• データ入力用の電子症例報告書の開発・運用ツール。LGPLで 
GitHub上で開発が行われている。ODMでのデータ出力に対応。
まとめ 
• 臨床試験のデータ表現においては、CDISCが標準の地位を確立する一方 
で、SASを利用することが最も敷居が低かった 
• しかし、CDISCがODMをベースにしたXML表現を標準に位置付けつつあ 
ることで、SASデータセットの形式に慣れずとも、Rプログラマが容易に 
かつ直接CDISCデータセットを取り扱うことが可能になってきている 
• PhUSEなど、「クリニカルプログラマ」のコミュニティがあり、GitHub 
上でオープンソースツールの開発が行われるなど、いままであったかも 
しれない生物統計の世界の閉鎖的なイメージは変わりつつある

Más contenido relacionado

La actualidad más candente

EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクトEWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクトKiyoshi Sawada
 
AndroidでActiveRecordライクにDBを使う
AndroidでActiveRecordライクにDBを使うAndroidでActiveRecordライクにDBを使う
AndroidでActiveRecordライクにDBを使うFujimura Munehiko
 
プライベート問合せにおける問合せ頻度を用いた制約緩和手法
プライベート問合せにおける問合せ頻度を用いた制約緩和手法プライベート問合せにおける問合せ頻度を用いた制約緩和手法
プライベート問合せにおける問合せ頻度を用いた制約緩和手法Junpei Kawamoto
 
㉞cocos2d-xの開発環境をインストールしてみよう
㉞cocos2d-xの開発環境をインストールしてみよう㉞cocos2d-xの開発環境をインストールしてみよう
㉞cocos2d-xの開発環境をインストールしてみようNishida Kansuke
 
事例で学ぶトレジャーデータ 20140612
事例で学ぶトレジャーデータ 20140612事例で学ぶトレジャーデータ 20140612
事例で学ぶトレジャーデータ 20140612Takahiro Inoue
 
Reladomo入門 JJUGナイトセミナー #jjug
Reladomo入門 JJUGナイトセミナー #jjugReladomo入門 JJUGナイトセミナー #jjug
Reladomo入門 JJUGナイトセミナー #jjugHiroshi Ito
 

La actualidad más candente (8)

EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクトEWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
 
AndroidでActiveRecordライクにDBを使う
AndroidでActiveRecordライクにDBを使うAndroidでActiveRecordライクにDBを使う
AndroidでActiveRecordライクにDBを使う
 
プライベート問合せにおける問合せ頻度を用いた制約緩和手法
プライベート問合せにおける問合せ頻度を用いた制約緩和手法プライベート問合せにおける問合せ頻度を用いた制約緩和手法
プライベート問合せにおける問合せ頻度を用いた制約緩和手法
 
d3sparql.js
d3sparql.js d3sparql.js
d3sparql.js
 
BioProject, BioSample, DRA へのデータ登録
BioProject, BioSample, DRA へのデータ登録BioProject, BioSample, DRA へのデータ登録
BioProject, BioSample, DRA へのデータ登録
 
㉞cocos2d-xの開発環境をインストールしてみよう
㉞cocos2d-xの開発環境をインストールしてみよう㉞cocos2d-xの開発環境をインストールしてみよう
㉞cocos2d-xの開発環境をインストールしてみよう
 
事例で学ぶトレジャーデータ 20140612
事例で学ぶトレジャーデータ 20140612事例で学ぶトレジャーデータ 20140612
事例で学ぶトレジャーデータ 20140612
 
Reladomo入門 JJUGナイトセミナー #jjug
Reladomo入門 JJUGナイトセミナー #jjugReladomo入門 JJUGナイトセミナー #jjug
Reladomo入門 JJUGナイトセミナー #jjug
 

Destacado

Therapeutic Area Standards: Reflections on Oncology Standards and What is Nee...
Therapeutic Area Standards: Reflections on Oncology Standards and What is Nee...Therapeutic Area Standards: Reflections on Oncology Standards and What is Nee...
Therapeutic Area Standards: Reflections on Oncology Standards and What is Nee...Cytel
 
The Best Practices of CDISC ADaM Validation Checks: Past, Present, and Future
The Best Practices of CDISC ADaM Validation Checks: Past, Present, and FutureThe Best Practices of CDISC ADaM Validation Checks: Past, Present, and Future
The Best Practices of CDISC ADaM Validation Checks: Past, Present, and Futured-Wise Technologies
 
Node red hands on - public
Node red hands on - publicNode red hands on - public
Node red hands on - publicTakehiko Amano
 
CDISC Related Services
CDISC Related ServicesCDISC Related Services
CDISC Related ServicesIstvan Janosi
 
Node redでソーシャルデータ分析
Node redでソーシャルデータ分析Node redでソーシャルデータ分析
Node redでソーシャルデータ分析Atsushi Kojo
 
Motivating Clinical Sas Programmers
Motivating Clinical Sas ProgrammersMotivating Clinical Sas Programmers
Motivating Clinical Sas ProgrammersDaniel Boisvert
 
Numerical reasoning test samples
Numerical reasoning test samplesNumerical reasoning test samples
Numerical reasoning test samplesfianzeen
 
Bluemixを使ったTwitter分析
Bluemixを使ったTwitter分析Bluemixを使ったTwitter分析
Bluemixを使ったTwitter分析Tanaka Yuichi
 
話題のNode-REDでIoTアプリを作ってみよう
話題のNode-REDでIoTアプリを作ってみよう話題のNode-REDでIoTアプリを作ってみよう
話題のNode-REDでIoTアプリを作ってみようKimihiko Kitase
 
とりあえずTwitterで日本語を集めてみよう
とりあえずTwitterで日本語を集めてみようとりあえずTwitterで日本語を集めてみよう
とりあえずTwitterで日本語を集めてみようs_wool
 
IBM Bluemix Node-REDを使って簡単アプリ作成を体験する
IBM Bluemix Node-REDを使って簡単アプリ作成を体験するIBM Bluemix Node-REDを使って簡単アプリ作成を体験する
IBM Bluemix Node-REDを使って簡単アプリ作成を体験するMasaya Fujita
 
02 Numerical Reasoning Sample Tests - EU EPSO - AST Level - Vol 1
02 Numerical Reasoning Sample Tests - EU EPSO - AST Level - Vol 102 Numerical Reasoning Sample Tests - EU EPSO - AST Level - Vol 1
02 Numerical Reasoning Sample Tests - EU EPSO - AST Level - Vol 1Training4EU
 
SDTM (Study Data Tabulation Model)
SDTM (Study Data Tabulation Model)SDTM (Study Data Tabulation Model)
SDTM (Study Data Tabulation Model)SWAROOP KUMAR K
 
第3回Twitter API勉強会 - ストリーミングAPI #twtr_hack
第3回Twitter API勉強会 - ストリーミングAPI #twtr_hack第3回Twitter API勉強会 - ストリーミングAPI #twtr_hack
第3回Twitter API勉強会 - ストリーミングAPI #twtr_hackYusuke Yamamoto
 

Destacado (18)

RとIoT
RとIoTRとIoT
RとIoT
 
Therapeutic Area Standards: Reflections on Oncology Standards and What is Nee...
Therapeutic Area Standards: Reflections on Oncology Standards and What is Nee...Therapeutic Area Standards: Reflections on Oncology Standards and What is Nee...
Therapeutic Area Standards: Reflections on Oncology Standards and What is Nee...
 
SHL® Online
SHL® OnlineSHL® Online
SHL® Online
 
Assessment Options
Assessment OptionsAssessment Options
Assessment Options
 
The Best Practices of CDISC ADaM Validation Checks: Past, Present, and Future
The Best Practices of CDISC ADaM Validation Checks: Past, Present, and FutureThe Best Practices of CDISC ADaM Validation Checks: Past, Present, and Future
The Best Practices of CDISC ADaM Validation Checks: Past, Present, and Future
 
Node red hands on - public
Node red hands on - publicNode red hands on - public
Node red hands on - public
 
CDISC Related Services
CDISC Related ServicesCDISC Related Services
CDISC Related Services
 
Node redでソーシャルデータ分析
Node redでソーシャルデータ分析Node redでソーシャルデータ分析
Node redでソーシャルデータ分析
 
Motivating Clinical Sas Programmers
Motivating Clinical Sas ProgrammersMotivating Clinical Sas Programmers
Motivating Clinical Sas Programmers
 
Numerical reasoning test samples
Numerical reasoning test samplesNumerical reasoning test samples
Numerical reasoning test samples
 
部屋と◯◯と私
部屋と◯◯と私部屋と◯◯と私
部屋と◯◯と私
 
Bluemixを使ったTwitter分析
Bluemixを使ったTwitter分析Bluemixを使ったTwitter分析
Bluemixを使ったTwitter分析
 
話題のNode-REDでIoTアプリを作ってみよう
話題のNode-REDでIoTアプリを作ってみよう話題のNode-REDでIoTアプリを作ってみよう
話題のNode-REDでIoTアプリを作ってみよう
 
とりあえずTwitterで日本語を集めてみよう
とりあえずTwitterで日本語を集めてみようとりあえずTwitterで日本語を集めてみよう
とりあえずTwitterで日本語を集めてみよう
 
IBM Bluemix Node-REDを使って簡単アプリ作成を体験する
IBM Bluemix Node-REDを使って簡単アプリ作成を体験するIBM Bluemix Node-REDを使って簡単アプリ作成を体験する
IBM Bluemix Node-REDを使って簡単アプリ作成を体験する
 
02 Numerical Reasoning Sample Tests - EU EPSO - AST Level - Vol 1
02 Numerical Reasoning Sample Tests - EU EPSO - AST Level - Vol 102 Numerical Reasoning Sample Tests - EU EPSO - AST Level - Vol 1
02 Numerical Reasoning Sample Tests - EU EPSO - AST Level - Vol 1
 
SDTM (Study Data Tabulation Model)
SDTM (Study Data Tabulation Model)SDTM (Study Data Tabulation Model)
SDTM (Study Data Tabulation Model)
 
第3回Twitter API勉強会 - ストリーミングAPI #twtr_hack
第3回Twitter API勉強会 - ストリーミングAPI #twtr_hack第3回Twitter API勉強会 - ストリーミングAPI #twtr_hack
第3回Twitter API勉強会 - ストリーミングAPI #twtr_hack
 

Similar a RとCDISC

トレジャーデータ株式会社について(for all Data_Enthusiast!!)
トレジャーデータ株式会社について(for all Data_Enthusiast!!)トレジャーデータ株式会社について(for all Data_Enthusiast!!)
トレジャーデータ株式会社について(for all Data_Enthusiast!!)Takahiro Inoue
 
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成弘毅 露崎
 
2017年3月版データマエショリスト入門
2017年3月版データマエショリスト入門2017年3月版データマエショリスト入門
2017年3月版データマエショリスト入門Yuya Matsumura
 
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるデータサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるShintaro Fukushima
 
Tokyo r25 hiro_macchan
Tokyo r25 hiro_macchanTokyo r25 hiro_macchan
Tokyo r25 hiro_macchanHiroki Matsui
 
Spring Data in a Nutshell
Spring Data in a NutshellSpring Data in a Nutshell
Spring Data in a NutshellTsuyoshi Miyake
 
2017年3月版データマエショリスト入門(誤植修正版)
2017年3月版データマエショリスト入門(誤植修正版)2017年3月版データマエショリスト入門(誤植修正版)
2017年3月版データマエショリスト入門(誤植修正版)Yuya Matsumura
 
Dat009 クラウドでビック
Dat009 クラウドでビックDat009 クラウドでビック
Dat009 クラウドでビックTech Summit 2016
 
Intoroduction of Pandas with Python
Intoroduction of Pandas with PythonIntoroduction of Pandas with Python
Intoroduction of Pandas with PythonAtsushi Hayakawa
 
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11MapR Technologies Japan
 
RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会Nao Minami
 
DB TechShowcase Tokyo - Intelligent Data Platform
DB TechShowcase Tokyo - Intelligent Data PlatformDB TechShowcase Tokyo - Intelligent Data Platform
DB TechShowcase Tokyo - Intelligent Data PlatformDaiyu Hatakeyama
 
[機械学習]文章のクラス分類
[機械学習]文章のクラス分類[機械学習]文章のクラス分類
[機械学習]文章のクラス分類Tetsuya Hasegawa
 
Dat009 クラウドでビック
Dat009 クラウドでビックDat009 クラウドでビック
Dat009 クラウドでビックTech Summit 2016
 
20170923 excelユーザーのためのr入門
20170923 excelユーザーのためのr入門20170923 excelユーザーのためのr入門
20170923 excelユーザーのためのr入門Takashi Kitano
 
[db tech showcase Tokyo 2017] D15: ビッグデータ x 機械学習の高速分析をVerticaで実現!by ヒューレット・パッ...
[db tech showcase Tokyo 2017] D15: ビッグデータ x 機械学習の高速分析をVerticaで実現!by ヒューレット・パッ...[db tech showcase Tokyo 2017] D15: ビッグデータ x 機械学習の高速分析をVerticaで実現!by ヒューレット・パッ...
[db tech showcase Tokyo 2017] D15: ビッグデータ x 機械学習の高速分析をVerticaで実現!by ヒューレット・パッ...Insight Technology, Inc.
 

Similar a RとCDISC (20)

トレジャーデータ株式会社について(for all Data_Enthusiast!!)
トレジャーデータ株式会社について(for all Data_Enthusiast!!)トレジャーデータ株式会社について(for all Data_Enthusiast!!)
トレジャーデータ株式会社について(for all Data_Enthusiast!!)
 
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成
 
2017年3月版データマエショリスト入門
2017年3月版データマエショリスト入門2017年3月版データマエショリスト入門
2017年3月版データマエショリスト入門
 
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるデータサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみる
 
Tokyo r25 hiro_macchan
Tokyo r25 hiro_macchanTokyo r25 hiro_macchan
Tokyo r25 hiro_macchan
 
Rでreproducible research
Rでreproducible researchRでreproducible research
Rでreproducible research
 
Spring Data in a Nutshell
Spring Data in a NutshellSpring Data in a Nutshell
Spring Data in a Nutshell
 
Azure DataLake 大全
Azure DataLake 大全Azure DataLake 大全
Azure DataLake 大全
 
2017年3月版データマエショリスト入門(誤植修正版)
2017年3月版データマエショリスト入門(誤植修正版)2017年3月版データマエショリスト入門(誤植修正版)
2017年3月版データマエショリスト入門(誤植修正版)
 
MongoDB2.2の新機能
MongoDB2.2の新機能MongoDB2.2の新機能
MongoDB2.2の新機能
 
Dat009 クラウドでビック
Dat009 クラウドでビックDat009 クラウドでビック
Dat009 クラウドでビック
 
Intoroduction of Pandas with Python
Intoroduction of Pandas with PythonIntoroduction of Pandas with Python
Intoroduction of Pandas with Python
 
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
 
RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会
 
DB TechShowcase Tokyo - Intelligent Data Platform
DB TechShowcase Tokyo - Intelligent Data PlatformDB TechShowcase Tokyo - Intelligent Data Platform
DB TechShowcase Tokyo - Intelligent Data Platform
 
RでGIS
RでGISRでGIS
RでGIS
 
[機械学習]文章のクラス分類
[機械学習]文章のクラス分類[機械学習]文章のクラス分類
[機械学習]文章のクラス分類
 
Dat009 クラウドでビック
Dat009 クラウドでビックDat009 クラウドでビック
Dat009 クラウドでビック
 
20170923 excelユーザーのためのr入門
20170923 excelユーザーのためのr入門20170923 excelユーザーのためのr入門
20170923 excelユーザーのためのr入門
 
[db tech showcase Tokyo 2017] D15: ビッグデータ x 機械学習の高速分析をVerticaで実現!by ヒューレット・パッ...
[db tech showcase Tokyo 2017] D15: ビッグデータ x 機械学習の高速分析をVerticaで実現!by ヒューレット・パッ...[db tech showcase Tokyo 2017] D15: ビッグデータ x 機械学習の高速分析をVerticaで実現!by ヒューレット・パッ...
[db tech showcase Tokyo 2017] D15: ビッグデータ x 機械学習の高速分析をVerticaで実現!by ヒューレット・パッ...
 

RとCDISC

  • 2. CONTENTS • CDISC Introduction and History • R packages (ODMConverter, compareODM, R4CDISC) • Other Softwares(OpenCDISC, OpenClinica)
  • 3. CDISCとは • CDISC(Clinical Data Interchange Standards) Consortium による医学領域での臨 床試験データの標準規格 • データの収集、クリーニング、蓄積、解析、レポートまでを包括している • 語彙(Terminology)の統一、メタデータ(測定日など)の厳密な記述に重点が おかれており、実用性が高い • 日米(日本は2016年度より)の医薬品承認機関に新しい薬の有効性、安全性 の根拠となる研究データを提出する際のフォーマットとなっている
  • 4. CDISCとは • データマネジメント, 統計解析の過程では、規格群のうちSDTM(Study Data Tabulation Model), AdAM(Analysis Data Model) が使われる • 規格書ドラフトにアクセスするためには会員になる必要があるけれども、 正式にリリースされた規格書は無料でダウンロードでき、使用できる。 • 臨床試験のデータを念頭に置いているが、CDASHなど観察研究にも適し た規格もあり、臨床試験のみで使うのはもったいない。メタデータへの アクセス手法が標準化されるのは研究者にとってもメリットが大きい。
  • 5. CDISCの歴史 • 1997年にVolunteer Groupとして設立 • 2000年にNPOに • 2001年ごろからOperational Data Model(ODM): XMLによるデータ転送 • 2002年にAdAM • 2003年にSDTM • 2005年にDefine.xml(ODMによるメタデータ表現) • 2008年にCDASH(症例報告書の標準化) • 2014年 Dataset-XML(ODMによるデータ表現), SHARE(Resource Description Frameworkによる規格表現な ど)
  • 6. CDISCとRとのかかわり • CDISCでは、データはSAS xportフォーマットを用いることになっていた • Rでは、foreignパッケージではxport形式のファイルを書き出せない (write.foreign(package=“SAS”)はカンマ区切りを読むSASコード自体を出力) • 2007年にSASxportパッケージが登場してxport形式ファイルの書き出しができるように なった • とはいえ、xport形式では日本語の扱いがどうなるのかはっきりしない、変数名の制限 などがある… • CDISCもODMベースのXMLによるデータ表現に移行(今年リリースされたDataset-XML) するので、今後Rとの親和性が上がるかも?
  • 7. 関連するパッケージ • CRANに登録されているCDISC関連パッケー ジ • ODMConverter, compareODM by Martin Dugas • R4CDISC by Ippei Akiya
  • 8. ODMConverter > ODM2R(ODMfile=“Desktop/ODM-Test.xml”) 作業ディレクトリ直下に ODM-Test.xml.RというRソースがで きる。中身はodmdata変数を作るコード。 > source(“ODM-Test.xml.R”) により、変数 odmdataがで きる。
  • 9. ODMConverter <ItemDef OID="I.1004" Name="Gender" DataType="integer"> <Question> <TranslatedText xml:lang="en">Gender</TranslatedText> <TranslatedText xml:lang="de">Geschlecht</TranslatedText> </Question> <CodeListRef CodeListOID="CL.1"/> <CodeList OID="CL.1" Name="Gender" DataType="string"> <CodeListItem CodedValue="1"> <Decode> <TranslatedText xml:lang="en">male</TranslatedText> <TranslatedText xml:lang="de">maennlich</TranslatedText> </Decode> みたいなのから > str(odmdata) 'data.frame': 0 obs. of 8 variables: $ I.1004: Factor w/ 2 levels "1","2": ..- attr(*, "labels")= chr "male" "female" ..- attr(*, "labels2")= chr "maennlich" "weiblich" みたいなデータフレームができる
  • 10. ODMConverter •メタデータ部分(ODMのStudy要素, AdminData要素)をデータフレームの各列のattributeとし て変換できている。 •Define-xmlの読み込みには使える? → Define-xml 2.0のサンプルは読み込めなかった… •ClinicalData要素は無視されているようだ •sink()でRコードを出しているようで、処理に失敗すると出力が持って行かれたままになるので、 sink(NULL)を何回か呼ぶ必要がある •今年論文が出ていた: Dugas M, Dugas-Breit S. Integrated data management for clinical studies: automatic transformation of data models with semantic annotations for principal investigators, data managers and statisticians. PLoS One. 2014 Feb 28;9(2):e90492
  • 11. compareODM • 2つのODMファイルを入力すると、 list of identical, matching, similar and differing data items を出力する、と いうものらしいけれども… • ほぼ同じ2つのODMを渡しても1項目しかidenticalと 出さないなど、若干挙動が不明瞭 • やはりClinicalData要素は見ない
  • 12. R4CDISC • Define-XML 2.0を読み込ませて、Dataset Level Metadataを抽出 > str(getDLMD("define2-0-0-example-sdtm.xml")) $ IGD_OID : chr "IG.TA" "IG.TE" "IG.TI" "IG.TS" ... $ IGD_Domain : chr "TA" "TE" "TI" "TS" ... $ IGD_Name : chr "TA" "TE" "TI" "TS" ... $ IGD_Repeating : chr "No" "No" "No" "No" ... $ IGD_IsReferenceData : chr "Yes" "Yes" "Yes" "Yes" ... $ IGD_SASDatasetName : chr "TA" "TE" "TI" "TS" ... $ IGD_Purpose : chr "Tabulation" "Tabulation" "Tabulation" "Tabulation" ... p$l aInGnDe_d SEtlreucmetnurt"e " O n e r e:c ocrdh r p e"r OIn/e E rcecriortde ripeonr " p"lOannen edr eEcloerdm enpet r petrr iAalr m"s u"mOmaner y repacorardm epteerr value" ... D$E SIIGGDN"_ C.l.a.ss : chr "TRIAL DESIGN" "TRIAL DESIGN" "TRIAL DESIGN" "TRIAL $ IGD_ArchiveLocationID: chr "LF.TA" "LF.TE" "LF.TI" "LF.TS" ... C$r iItGeDr_iDa"e s"cTriripatil oSn u m m a r y": .c.h.r "Trial Arms" "Trial Elements" "Trial Inclusion/Exclusion C$r iItGeDr_iat"i t"lTe r i a l S u m m a r y": .c.h.r "Trial Arms" "Trial Elements" "Trial Inclusion/Exclusion
  • 13. R4CDISC • Define-XML 2.0を読み込ませて、Variable Level Metadataを抽出 > str(getVarMD("define2-0-0-example-sdtm.xml")) 'data.frame': 414 obs. of 10 variables: "$I T.IARE_.IAtEeSmEOIQ"D . . . : chr "IT.STUDYID" "IT.AE.DOMAIN" "IT.USUBJID" $ IGD_Name : chr "AE" "AE" "AE" "AE" ... $ IR_OrderNumber : int 1 2 3 4 5 6 7 8 9 10 ... $ IR_Mandatory : chr "Yes" "Yes" "Yes" "Yes" ... $ IR_KeySequence : int 1 NA 2 NA NA NA NA 3 NA NA ... $ ID_Name : chr "STUDYID" "DOMAIN" "USUBJID" "AESEQ" ... $ ID_Length : chr "7" "2" "14" "1" ... $ ID_DataType : chr "text" "text" "text" "integer" ... S$u bIjDe_cLt aIbdeel n t i f i e r": "cSher q u"eSncteu dNy uImbdeenr"t i.f.i.er" "Domain Abbreviation" "Unique $ ID_SASFieldName: chr "STUDYID" "DOMAIN" "USUBJID" "AESEQ" ...
  • 14. R4CDISC • Define-XML 2.0を読み込ませて、Value Level Metadata(ある列のデータの値によって、別の列のメタデー タが決まるような場合)を抽出 > str(getValMD("define2-0-0-example-sdtm.xml")) 'data.frame': 121 obs. of 9 variables: "$I T.IERG_.IEtGeOmORIRDE S . I N T:P " c"hIr T ."EGI.T.EDGAO.RDRAEOS.RPRERMS.EADIN"S P.A.M.T" "IT.DA.DAORRES.RETAMT" "$V L.VEaGl.uEeGLOiRsRtEOIS"D . ..: chr "VL.DA.DAORRES" "VL.DA.DAORRES" "VL.EG.EGORRES" $ IR_OrderNumber : int 1 2 1 2 3 4 5 1 2 1 ... $ IR_Mandatory : chr "Yes" "No" "No" "No" ... .$. .ID_Name : chr "DA.DISPAMT" "DA.RETAMT" "EG.INTP.ORRES" "EG.PRMEAN.ORRES" $ ID_Length : chr "2" "2" "8" "3" ... $ ID_DataType : chr "integer" "integer" "text" "integer" ... O$r iIgDi_nLaal bReel s u l t s " ": Scuhmmr a r"y D(iMsepaenn)s ePd R ADmouruantt"i o"n R(eOtruirgn eUd )"A m.o.u.nt" "Interpretation: $ ID_SASFieldName: chr "DISPAMT" "RETAMT" "INTPOR" "PRMEANOR" ...
  • 15. R4CDISC • Dataset-XMLを読み込ませて、データフレームにする > read.dataset.xml(dataset_xml=”da.xml", define_xml=”define2-0-0- example-sdtm(2013-11-09).xml") STUDYID DOMAIN USUBJID DASEQ DATESTCD DATEST DAORRES 1 CDISC01 DA CDISC01.100008 1 DISPAMT Dispensed Amount 40 2 CDISC01 DA CDISC01.100008 2 DISPAMT Dispensed Amount 80 3 CDISC01 DA CDISC01.100008 3 RETAMT Returned Amount 22 4 CDISC01 DA CDISC01.100008 4 RETAMT Returned Amount 35 5 CDISC01 DA CDISC01.100014 1 DISPAMT Dispensed Amount 80 6 CDISC01 DA CDISC01.100014 2 DISPAMT Dispensed Amount 80 7 CDISC01 DA CDISC01.100014 3 RETAMT Returned Amount 44 8 CDISC01 DA CDISC01.100014 4 RETAMT Returned Amount 44 9 CDISC01 DA CDISC01.200001 1 DISPAMT Dispensed Amount 40
  • 16. R4CDISC • Define-XMLからDataset Level Metadata, Variable Level Metadata, Value Level Metadataをデータフ レームの形で抽出できる • Dataset-XMLをそのままデータフレームに変 換できる
  • 17. R4CDISC • たとえば、データセットをみていて、その項目の説明を知りたい > head(ds) STUDYID DOMAIN USUBJID DASEQ DATESTCD DATEST DAORRES 1 CDISC01 DA CDISC01.100008 1 DISPAMT Dispensed Amount 40 2 CDISC01 DA CDISC01.100008 2 DISPAMT Dispensed Amount 80 > subset(varMD, ID_SASFieldName=="DAORRES")$ID_Label [1] "Assessment Result in Original Units" • DATESTCD==“DISPAMT” の場合、それがMandatoryかどうかを知りたい > subset(valMD, ID_SASFieldName==“DISPAMT”)$"IR_Mandatory" [1] "Yes"
  • 18. CDISCに関係する オープンソースソフトウェア • OpenCDISC http://www.opencdisc.org/ • SDTM, AdAMなどのデータセットが標準に適合しているかどうか をチェックするバリデーションツール。AGPLのオープンソース ツールであるが、商用版は業界のデファクトスタンダードになっ ている。 • OpenClinica http://www.openclinica.com/ • データ入力用の電子症例報告書の開発・運用ツール。LGPLで GitHub上で開発が行われている。ODMでのデータ出力に対応。
  • 19. まとめ • 臨床試験のデータ表現においては、CDISCが標準の地位を確立する一方 で、SASを利用することが最も敷居が低かった • しかし、CDISCがODMをベースにしたXML表現を標準に位置付けつつあ ることで、SASデータセットの形式に慣れずとも、Rプログラマが容易に かつ直接CDISCデータセットを取り扱うことが可能になってきている • PhUSEなど、「クリニカルプログラマ」のコミュニティがあり、GitHub 上でオープンソースツールの開発が行われるなど、いままであったかも しれない生物統計の世界の閉鎖的なイメージは変わりつつある