SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
RとCDISC
岡田 昌史
CONTENTS
• Self Introduction
• CDISC Introduction and History
• R packages (R4CDISC)
• Other Softwares(OpenCDISC, OpenClinica)
本日の発表
• いかに楽をして、ミスのないデータ解析をするか?の方法論を研究
• 複数のツールを併用して、いままでになかった処理過程を生み出す
には….製品にまで落とし込まれたソフトウェアは適していない
• API等を備えた柔軟な商用ソフトウェアもあるが、高価
• 方法論そのものを開発する研究にはオープンソースソフトウェアが
適している
• やっぱりたくさんの人に使ってもらいたいしね
RとCDISC
• オープンソースツールを組み合わせて、いかに楽をして、ミスのないデー
タ解析をするか?
• 楽をできる ミスが起こりにくい シンプル
• 解析で一番大変な部分: データのもつ「値」に対応する「意味」すなわち
メタデータを解析者が理解すること
• では、データに対応するメタデータを解析ソフトウェア自身が自動的に理
解すればよい(セマンティックWeb, RDF/OWL,Archetypesと同様の発想)
• 解析ソフトウェア (R) にメタデータ標準(CDISC)を組み合わせてみる
CDISCとは
• CDISC(Clinical Data Interchange Standards) Consortium による医学領域での臨
床試験データの標準規格
• データの収集、クリーニング、蓄積、解析、レポートまでを包括している
• 語彙(Terminology)の統一、メタデータ(測定日など)の厳密な記述に重点が
おかれており、実用性が高い
• 日米(日本は2016年度より)の医薬品承認機関に新しい薬の有効性、安全性
の根拠となる研究データを提出する際のフォーマットとなっている
CDISCとは
• データマネジメント, 統計解析の過程では、規格群のうちSDTM(Study
DataTabulation Model), AdAM(Analysis Data Model) が使われる
• 規格書ドラフトにアクセスするためには会員になる必要があるけれども、
正式にリリースされた規格書は無料でダウンロードでき、使用できる。
• 臨床試験のデータを念頭に置いているが、CDASHなど観察研究にも適し
た規格もあり、臨床試験のみで使うのはもったいない。メタデータへの
アクセス手法が標準化されるのは研究者にとってもメリットが大きい。
CDISC Annual Report 2013 p.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による規格表現)
CDISCとRとのかかわり
• CDISCでは、データはSAS xportフォーマットを用いることになっていた
• Rでは、foreignパッケージではxport形式のファイルを書き出せない
(write.foreign(package=“SAS”)はカンマ区切りを読むSASコード自体を出力)
• 2007年にSASxportパッケージが登場してxport形式ファイルの書き出しができるように
なった
• とはいえ、xport形式では日本語の扱いがどうなるのかはっきりしない、変数名の制限
などがある…
• CDISCもODMベースのXMLによるデータ表現に移行(昨年リリースされたDataset-XML)
するので、今後Rとの親和性が上がるかも?
Rについて
• GNU R
• 統計解析ソフトウェアのデファクトスタンダー
ド
• 6789種の「パッケージ」による機能拡張
解析とメタデータ
STUDYID DOMAIN USUBJID DASEQ DATESTCD DATEST DAORRES DAORRESU
"CDISC01
"
"DA"
"CDISC01
.100008"
1 "DISPAMT"
"Dispense
d Amount"
"40" "TABLET"
"CDISC01
"
"DA"
"CDISC01
.100008"
2 "DISPAMT"
"Dispense
d Amount"
"80" "TABLET"
"CDISC01
"
"DA"
"CDISC01
.100008"
3 "RETAMT"
"Returned
Amount"
"22" "TABLET"
"CDISC01
"
"DA"
"CDISC01
.100008"
4 "RETAMT"
"Returned
Amount"
"35" "TABLET"
"CDISC01
"
"DA"
"CDISC01
.100014"
1 "DISPAMT"
"Dispense
d Amount"
"80" "TABLET"
"CDISC01
"
"DA"
"CDISC01
.100014"
2 "DISPAMT"
"Dispense
d Amount"
"80" "TABLET"
USUBJIDは重複
は許されない
名前は標準用語
に従っている
(CDISC
Terminology)
別々の項目が同じ
列に入っている
(CDISC Normalized
Data)
項目によって数
値と判断すべき
か、文字列とす
べきかが異なる
メタデータを知らなければ解析できない
CDISCのメタデータ定義
• Define-XMLの導入

単なる表から、メタデータ(XMLで表現)付きのデータに。
• Dataset-level Metadata ― データセット全体に、どんな表が含まれていなれれ
ばならないか
• Variable-level Metadata ― それぞれの表に、どんな列が含まれているのか
• Value-level Metadata ― それぞれの列に、どんな値が含まれているのか
• Dataset-XMLの導入

Defineと対になり、データベースそのものをXMLで表現(シリアライズ)
関連するパッケージ
• CRANに登録されているCDISC関連パッケー
ジ
• ODMConverter, compareODM by Martin Dugas
• R4CDISC by Ippei Akiya LGPL-3, GitHubにあ
り
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" ...
$ IGD_Structure : chr "One record per planned Element per Arm" "One record per
planned Element" "One record per I/E criterion" "One record per trial summary parameter
value" ...
$ IGD_Class : chr "TRIAL DESIGN" "TRIAL DESIGN" "TRIAL DESIGN" "TRIAL
DESIGN" ...
$ IGD_ArchiveLocationID: chr "LF.TA" "LF.TE" "LF.TI" "LF.TS" ...
$ IGD_Description : chr "Trial Arms" "Trial Elements" "Trial Inclusion/Exclusion
Criteria" "Trial Summary" ...
$ IGD_title : chr "Trial Arms" "Trial Elements" "Trial Inclusion/Exclusion
Criteria" "Trial Summary" ...
R4CDISC
• Define-XML 2.0を読み込ませて、Variable Level Metadataを抽出
> str(getVarMD("define2-0-0-example-sdtm.xml"))
'data.frame': 414 obs. of 10 variables:
$ IR_ItemOID : chr "IT.STUDYID" "IT.AE.DOMAIN" "IT.USUBJID"
"IT.AE.AESEQ" ...
$ 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" ...
$ ID_Label : chr "Study Identifier" "Domain Abbreviation" "Unique
Subject Identifier" "Sequence Number" ...
$ 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:
$ IR_ItemOID : chr "IT.DA.DAORRES.DISPAMT" "IT.DA.DAORRES.RETAMT"
"IT.EG.EGORRES.INTP" "IT.EG.EGORRES.PRMEAN" ...
$ ValueListOID : chr "VL.DA.DAORRES" "VL.DA.DAORRES" "VL.EG.EGORRES"
"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" ...
$ ID_Label : chr "Dispensed Amount" "Returned Amount" "Interpretation:
Original Results" "Summary (Mean) PR Duration (Orig U)" ...
$ 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を利用
することが最も簡単だったが、SASの外側の世界のツールを併用することは難しかった
• しかし、CDISCがODMをベースにしたXML表現を標準に位置付けつつあることで、SAS
データセットの形式に慣れずとも、Rプログラマが容易にかつ直接CDISCデータセット
を取り扱うことが可能になってきている
• PhUSEなど、「クリニカルプログラマ」のコミュニティがあり、GitHub上でオープンソー
スツールの開発が行われるなど、いままであったかもしれない生物統計の世界の閉鎖的
なイメージは変わりつつある
• オープンソースツールのみで、国際標準形式でのメタデータを伴った臨床試験データ
セットの作成、解析、検査が実施できるようになっている

Más contenido relacionado

La actualidad más candente

はじめてのCouch db
はじめてのCouch dbはじめてのCouch db
はじめてのCouch db
Eiji Kuroda
 
プライベート問合せにおける問合せ頻度を用いた制約緩和手法
プライベート問合せにおける問合せ頻度を用いた制約緩和手法プライベート問合せにおける問合せ頻度を用いた制約緩和手法
プライベート問合せにおける問合せ頻度を用いた制約緩和手法
Junpei Kawamoto
 
㉞cocos2d-xの開発環境をインストールしてみよう
㉞cocos2d-xの開発環境をインストールしてみよう㉞cocos2d-xの開発環境をインストールしてみよう
㉞cocos2d-xの開発環境をインストールしてみよう
Nishida Kansuke
 
事例で学ぶトレジャーデータ 20140612
事例で学ぶトレジャーデータ 20140612事例で学ぶトレジャーデータ 20140612
事例で学ぶトレジャーデータ 20140612
Takahiro Inoue
 
オンラインゲームソリューション@トレジャーデータ
オンラインゲームソリューション@トレジャーデータオンラインゲームソリューション@トレジャーデータ
オンラインゲームソリューション@トレジャーデータ
Takahiro Inoue
 

La actualidad más candente (12)

はじめてのCouch db
はじめてのCouch dbはじめてのCouch db
はじめてのCouch db
 
カジュアルにソースコードリーディング
カジュアルにソースコードリーディングカジュアルにソースコードリーディング
カジュアルにソースコードリーディング
 
PHP Object Injection入門
PHP Object Injection入門PHP Object Injection入門
PHP Object Injection入門
 
AndroidでActiveRecordライクにDBを使う
AndroidでActiveRecordライクにDBを使うAndroidでActiveRecordライクにDBを使う
AndroidでActiveRecordライクにDBを使う
 
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オブジェクト
 
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の開発環境をインストールしてみよう
 
Reladomo入門 JJUGナイトセミナー #jjug
Reladomo入門 JJUGナイトセミナー #jjugReladomo入門 JJUGナイトセミナー #jjug
Reladomo入門 JJUGナイトセミナー #jjug
 
事例で学ぶトレジャーデータ 20140612
事例で学ぶトレジャーデータ 20140612事例で学ぶトレジャーデータ 20140612
事例で学ぶトレジャーデータ 20140612
 
オンラインゲームソリューション@トレジャーデータ
オンラインゲームソリューション@トレジャーデータオンラインゲームソリューション@トレジャーデータ
オンラインゲームソリューション@トレジャーデータ
 

Similar a Rとcdisc@moss10 公開用

トレジャーデータ株式会社について(for all Data_Enthusiast!!)
トレジャーデータ株式会社について(for all Data_Enthusiast!!)トレジャーデータ株式会社について(for all Data_Enthusiast!!)
トレジャーデータ株式会社について(for all Data_Enthusiast!!)
Takahiro Inoue
 
Css2014 ruo ando_2014-10-23-01
Css2014 ruo ando_2014-10-23-01Css2014 ruo ando_2014-10-23-01
Css2014 ruo ando_2014-10-23-01
Ruo Ando
 
ログ解析入門withR InnovationEggNo3
ログ解析入門withR InnovationEggNo3ログ解析入門withR InnovationEggNo3
ログ解析入門withR InnovationEggNo3
hiroki84
 
Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)
Shintaro Fukushima
 
Rユーザのためのspark入門
Rユーザのためのspark入門Rユーザのためのspark入門
Rユーザのためのspark入門
Shintaro Fukushima
 
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるデータサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみる
Shintaro Fukushima
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
Naoyuki Yamada
 

Similar a Rとcdisc@moss10 公開用 (20)

トレジャーデータ株式会社について(for all Data_Enthusiast!!)
トレジャーデータ株式会社について(for all Data_Enthusiast!!)トレジャーデータ株式会社について(for all Data_Enthusiast!!)
トレジャーデータ株式会社について(for all Data_Enthusiast!!)
 
Tokyo r25 hiro_macchan
Tokyo r25 hiro_macchanTokyo r25 hiro_macchan
Tokyo r25 hiro_macchan
 
2014 11-20 Machine Learning with Apache Spark 勉強会資料
2014 11-20 Machine Learning with Apache Spark 勉強会資料2014 11-20 Machine Learning with Apache Spark 勉強会資料
2014 11-20 Machine Learning with Apache Spark 勉強会資料
 
Azure DataLake 大全
Azure DataLake 大全Azure DataLake 大全
Azure DataLake 大全
 
Learning spaerk chapter03
Learning spaerk chapter03Learning spaerk chapter03
Learning spaerk chapter03
 
Elastic circle ci-co-webinar-20210127
Elastic circle ci-co-webinar-20210127Elastic circle ci-co-webinar-20210127
Elastic circle ci-co-webinar-20210127
 
Azure Datalake 大全
Azure Datalake 大全Azure Datalake 大全
Azure Datalake 大全
 
Rでreproducible research
Rでreproducible researchRでreproducible research
Rでreproducible research
 
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
 
Renewed using elasticsearchonaspnet-core5
Renewed using elasticsearchonaspnet-core5Renewed using elasticsearchonaspnet-core5
Renewed using elasticsearchonaspnet-core5
 
Css2014 ruo ando_2014-10-23-01
Css2014 ruo ando_2014-10-23-01Css2014 ruo ando_2014-10-23-01
Css2014 ruo ando_2014-10-23-01
 
ログ解析入門withR InnovationEggNo3
ログ解析入門withR InnovationEggNo3ログ解析入門withR InnovationEggNo3
ログ解析入門withR InnovationEggNo3
 
グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化
グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化
グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化
 
Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)
 
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoPrestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
 
Rユーザのためのspark入門
Rユーザのためのspark入門Rユーザのためのspark入門
Rユーザのためのspark入門
 
The rethinkingofrepair
The rethinkingofrepairThe rethinkingofrepair
The rethinkingofrepair
 
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるデータサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみる
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
 
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
 

Más de Masafumi Okada (6)

Rとkerasを使った臨床試験登録情報のテキスト分類
Rとkerasを使った臨床試験登録情報のテキスト分類Rとkerasを使った臨床試験登録情報のテキスト分類
Rとkerasを使った臨床試験登録情報のテキスト分類
 
RとIoT
RとIoTRとIoT
RとIoT
 
第19回疫学セミナー 統計解析ソフトRの活用「Rで線形モデル」
第19回疫学セミナー 統計解析ソフトRの活用「Rで線形モデル」第19回疫学セミナー 統計解析ソフトRの活用「Rで線形モデル」
第19回疫学セミナー 統計解析ソフトRの活用「Rで線形モデル」
 
R新機能抄出
R新機能抄出R新機能抄出
R新機能抄出
 
Rmpiとsnowで 並列処理
Rmpiとsnowで 並列処理Rmpiとsnowで 並列処理
Rmpiとsnowで 並列処理
 
FOSS4G 2009 Tokyo (R and Geo) in Japanese
FOSS4G 2009 Tokyo (R and Geo) in JapaneseFOSS4G 2009 Tokyo (R and Geo) in Japanese
FOSS4G 2009 Tokyo (R and Geo) in Japanese
 

Rとcdisc@moss10 公開用