R研究集会2014 (29 Nov 2014)@統数研 1. 樋口さん 今年4月から東京医科歯科大に移った オミックス研究 遺伝統計学 SNP(single nucleotide polymorphism)をよくジェノタイプとして使う。ジェノタイプが説明変数。 形質情報(身長,血圧等)を目的変数とする 因果関係がセントラルドグマで担保されている causal alleleという表現がある SNPという多型があることが重要。 30億×4×2×nの情報量をSNP数に縮減 コード領域で変異があると翻訳阻害 非コード領域は適応に関係ないと思われてきたが,最近はmRNAなどの機能障害が起こりうることがわかった。 ゲノムワイド関連解析の手順 各SNPごとにジェノタイプとフェノタイプのp値を算出 得られたp値をマンハッタンプロットで可視化 機械学習すると物凄いビッグデータになる 課題 *レアバリアント解析(これまではありふれた遺伝子しか見いだせていない) *機械学習による疾患原因SNP候補選抜(1000万くらいになる)→ビッグデータ解析 **データ分割できれば並列処理 **分割できなければ何らかの方法で次元縮約(MARSだと10万くらい。fairly largeといえない) PLNIK他を使うのがデファクトスタンダード 後で機械学習を使うなど考えるとRでやるのが便利なので,樋口さんはそうしている GAW (Genetic Analysis Workshop) データ提供元 全世界の各研究機関が結果を競い合う→今回(GAW19),東京医科歯科大も参加した 家族データ:T2D 1389人20家系の血圧,性別,年齢,遺伝子発現プロファイル,奇数番染色体のVCF 集団データ:遺伝子,VCF 家系図作成 ped.csvとして PEDNUM, ID, FA, MO, SEX, MZTWIN というデータを与え library(kinship2) のpedigree()で解析した結果を plot.pedigree()でプロット VCFからのジェノタイプ取得 library(SNPRelate) # 元々cranに入っていたが最近BioConductorに を使う library(qqman) # cran のmanhattan()でプロットする closefn.gds() 連鎖不平衡の解析 HWEからの逸脱 library(HardyWeinberg) # cran のHW...関数を樋口さんたちが改変して使用 選ばれたSNPについての考察 library(gwascat) # Bioconductorのパッケージ に可視化ツールがたくさん入っている library(rfPad) 質疑 カテゴリ変数と量的な変数を混在させた回帰のようなものはやっていいのか? 数が多すぎるので普通にカテゴリ変数をダミー変数化するのがいいとも言い切れない ゲノム解析の中でRの普及率は? データサイエンスの方でも流行っているし,学会のチュートリアルでも使われるので随分ポピュラーになったのでは? 大橋先生が退官されたので,SASからRへの移行が一気に進むのでは? 2. 岡田さん RとCDISC 臨床試験データの電子化標準フォーマット SASがメインだったが,最近CDISCの中でもSASをやめてXMLに変える動き Rでも扱いやすくなった 3つのパッケージ ODMConverter,compareODM, R4CDISC Clinical Data Interchange Standards データ収集,クリーニング,蓄積,解析,レポートまで包括 語彙(例えば男性/女性をM/Fとするか1/2とするかなど)の統一,メタデータ(測定日など)の厳密な記述に重点。実用的 日米の医薬品承認機関に新しい薬の有効性,安全性の根拠となる研究データを提出する際のフォーマットとなっている データマネジメント,統計解析の課程では,規格群のうちSDTM (Study Data Tabulation Model),AdAM (Analysis Data Model)が使われる 規格書ドラフトにアクセスするためには会員になる必要があるが,正式にリリースされた規格書は無料でダウンロードでき使用できる 臨床試験のデータを念頭においているが,CDASHなど観察研究に適した規格もある 臨床試験だけで使うのはもったいない。メタデータへのアクセス手法が標準化されるのは,研究者にとってもメリットが大きい 元々はSAS xportフォーマットだった Rではforeignで読めたが書き出せなかった 2007年にSASxportパッケージで書き出せるようになった けれど古いフォーマットなのでいろいろ制約あり XMLベースのODMへ 今のところR4CDISCが素晴らしい ODMConverter ODM2R()はCDISCのODMをデータフレームに変換するRコード生成 それを実行するとデータフレームができる R4CDISC で読み出せるデータフレームの中身の説明 SASを引きずっているための問題点があるとのこと OpenCDISC がオープンソースでAGPLだが業界のデファクトスタンダード 3. 自分 (省略) データのライセンス関係が気になる パッケージ化で手作業アップデートを続けるのか? demographyのHMDのように,将来はe-StatのAPIを叩いて取り込める関数にする予定 4. 谷村さん: 数理疫学 理論疫学ともいう *今年からの 感染症の数理モデル 古典的な話が中心 SIRモデル マッケンドリックのスペルはMcKendrick *確率性を入れてない計算式なので,人口が小さいと偶然終息してしまう可能性を無視している *あと,学級閉鎖を早くやるほど患者数を減らすことができるという結果はLonginiか誰かの研究で示されて,日本でも新型インフルエンザ対策ガイドラインに取り入れられて,各都道府県で1人でも患者が出たら全学校閉鎖という指針が出たけれども,実際のPandemic Flu 2009では大阪と兵庫しかしなかった。何を(総患者数,ピーク時期,ピークの高さなど)介入の効果指標とするのかが公衆衛生学的には難しいところ→net benefitが大事と思う R0の話 昨日駒場で西浦さんがエボラのR0推定の話をしていたはず *Rtも重要だが。 媒介生物がいる場合は難しい 関連パッケージは R0 フランスのBoelleら data(Germany.1918), generation.time()で世代時間分布を計算 何日目までのデータでR0を求めるか 当ては目はEG法(指数成長)かML法(最尤法)[どちらを使うかによってR0の信頼区間さえ重ならない],estimate.R()で当てはめ,plotfit()で当てはめ結果図示 surveillance simecol outbreaker など R0は提案されているR0計算法を網羅していて素晴らしい→ベイジアンの方が最近は普通 けれども疫学全体をみるといろいろなRパッケージが乱立していて混乱中。整理が期待される 連続時間を扱えるパッケージがあって,離散化しなくてもできるかも yuima(http://r-forge.r-project.org/projects/yuima/) *これ,開発グループに日本人がたくさん入っているなあ。 5. 中間さん RdRand on R 第三世代Intel Core プロセッサー(IvyBridge)以降に搭載されている。 Rrdrandパッケージにより,Rからこれを使えるように。 cranに載せるためにGNUスタイルのインラインアセンブラで記述。CPUがRdRandをサポートしているかCPUID命令で判別 Rで提供されている外部乱数用インタフェースを利用 RdRandは主として暗号プロトコル用の高品質な鍵生成を主目的にしている NISTの基準を満たしている 乱数には,TRNG(物理乱数)とPRNG(擬似乱数),CSPRNG(暗号論的擬似乱数生成器) {Linuxの/dev/random等,デバイスの割り込みによって発生するエントロピーを元に統計的な無作為性をもつ乱数},DRNG(デジタル乱数生成器:プロセッサ内のエントロピーソースを用いて乱数生成する,特殊なCSPRNG)がある RdRandはDRNG Rrdrandはinstall.packages("Rrdrand", repos="http://cran.ism.ac.jp/")でインストール可 RdRandがないCPUでは使えないというメッセージがでる クロックはCPUのクロックとは独立。マルチコアでも1個しかついてない! 実行速度は元々Rに入っているRNGkind("Mersenne-Twister")が激速 今回のはそれより遅いが実用可能な速度。特殊なデバイスなしに物理乱数に近い環境を得られた 質疑1:seedがないということは再現できないということ 同じseedでも結果が変わることはありうる? 普通はありえない。再現性が難しいバグ? *中間さんの話題その2:統数研のクラウドでやっているUbuntuのパッケージの話 「共用クラウド計算システムにおけるRの利用手順」 Disri:Ubuntu 14.04 LTS ISMクラウド用リポジトリ for Ubuntu 14.04 LTS 作ったパッケージは mkllibblas-base mkllibblapack-base r-cran-rmpi(OpenMPIを使ったリンクを行った) r-cran-snow など。torque-4.2.9を使用 OpenMPIの設定は予めされている この続きは中野先生の発表で 6. 関西学院大の中野さん Reproducble Social Research Environment with DDIR and dlcm 社会調査=質問紙を使う 岡田さんの話の社会調査版といえる カテゴリカルデータが多い 質問紙を作るツール:個人研究ではTeXなど,共同研究ではWordを使うのが苦痛 回答をデータにするのにコーディングする際にコードブックを使う 共同研究ではWordやExcelを使わねばならない データは原則として数値 コーディングは手間がかかり誤入力が多い ツールとしてはexcelで手入力してcsvとか,web調査ではphpなどのスクリプト中にコードを埋め込むとか これをread.csvなどでRに読みこむ factorにしたりlevelsに値ラベルを指定する 煩雑。間違いやすい Rの出力を報告書や論文にするためには加工が必要 個人研究ではxtableとかknitrとかsweaveを使えば楽になる 共同研究ではSPSSがよく使われている。変数ビューがあり,コードブックの情報が随時確認できる→ここからlibrary(foreign); read.spss()で読めば値ラベルもそのままデータ化できる このプロセスを楽にできないか? http://www.ddialliance.org/ Data Documentation Initiative は社会調査,行動科学,経済学のデータをデザインからとってきて解析して報告するところまで含めたXMLの標準規格を定めている Rでの利用 2014年春の時点ではRでDDIを利用する有効なツールは見つからなかった DDIRというパッケージを作り始めた library(DDIR) read.codebook("","") # XMLで書かれたコードブックとデータを読んでRのデータフレームにする そもそもDDIを使っているエンドユーザがいるのか? データアーカイヴ(http://ssjda.iss.u-tokyo.ac.jp/みたいなの)からデータを取得した場合を除いてニーズが無いかも UseR!2014で発表したときは無かった DDIwRというパッケージが30/Jul/2014にバージョン0.1がcranで公開され,既に0.2になっている 先を越された! 落胆 どうするか? DDIをData Life Cycleのあらゆる場面で使えるツールを作ろう 日本語対応でフリーな と考えた(臨床試験でいえばOpenClinicaに対応する発想) 数ヶ月前から作成冲 data life cycle manager (dlcm)を作っている →東大が作っているEasy DDI Organizer http://ssjda.iss.u-tokyo.ac.jp/international/ddi/edo/ のR版,マルチプラットホーム版という感じ。 疫学の質問紙調査にも使えそう 7. 北海道大学の合崎英男さん、中谷朋昭さん、酪農学園大学の佐藤和夫さん 「Rによる表明選好法」 CVMの続きか パッケージと本の紹介 Stated Preference Methods Using R CRC Press (ISBN 978-1-4398-9047-9)→Amazonで買おうと思ったら,ハードカバーで9000円弱だった 著者はこの3人 顕示選好データ(小売店での葡萄の購買結果など。POSのデータとか) 表明選好データ(仮想的に設定した葡萄の購買結果など。質問紙調査による→データ解析→特徴の整理→質問設計に戻る) 質問設計のデザインに統計処理が必要。 表明選好法にはCVM,Discrete Choice Experiments,Best-Worst Scalingの3つの方法があり,後のものほど適用範囲が広い。 用途は,環境経済評価,交通経済学(通勤手段選択行動とか),農業経済学(経営者による作物栽培方法選択など),医療経済学(患者による治療方法の評価など),等々広い *カタログショッピングの場合のカタログは顕示? 表明? それとも購買行動が実際に起こるかどうかか鍵か? →実際の日常生活で購買行動が起こるかどうかが鍵 環境の価値の計測にはよく使われる カーソンの本"Contingent Valuation"はリファレンス集なのに3cmくらいの厚さ CVMは去年中谷さんが発表したDCchoice(Bioconductorに一部依存),Ecdatというデータパッケージもある バルディーズのやつがCarsonSB,CarsonDBという名前で入っている 詳しくは昨年のR研究集会の発表参照 Discrete Choice Experiments コンジョイント分析のうち,選択型にしたもの 複数の選択肢から望ましいものを選択 ポイントは,選択肢をラベルで無く,特徴の集合体として提示すること support.CEs,survival, mdedパッケージを使っている 医療経済学の事例を入れている Best-Worst Scaling 複数の項目の相対評価を測定 従来の質問形式では,各項目について5段階のLicket尺度とか BWS形式だと項目の中でいくつかを提示し,BestとWorstを選んでもらうことを繰り返す(選ぶ組合せを変えて) DoE.base, crossdess,support.BWS,survivalを利用 詳しくは昨年のR研究集会の発表参照 本のウェブサイト http://www,agr.hokudai.ac.jp/spmur/ 今後,パッケージの改良・追加に加え,日本語資料の提供も 8. 藤野さんの「vdmR:ggplot2グラフによるMultiple Linked Viewの実現」 去年まで発表したものをインタラクティブなRパッケージ化したのでその紹介 2年前はRApacheとして,計算の一部にRをサーバ上で利用。RubyやJavaScriptを使っていた Rベースにしたい 対話的コロプレス図は *Shapefile読み込み *グラフィックオブジェクト記述 *RのプロットをSVGとして出力 *JavaScriptを追加(webでのインターフェースとして) どうせならMultiple Linked Viewにしたい。 =いくつものグラフが同時に(GGobiのように)描画されて欲しい(パラメータを変えたら全部更新されるように) ggplot2を使えばgrid2svgでSVG化できる→(地図←→グラフ)をどちらからでも選択強調表示可能 ここまで昨年やった 今年はパッケージ化。vdmR (visual data mining) メインウィンドウにハイライト機能付きデータテーブル サンプルデータ Windows以外のOSの動作確認(サーバ利用のため) launcher実行後にブラウザ起動 vscat()で散布図のhtmlとSVGファイルを出力するなど。 その組合せ Rookパッケージで,ローカルのwebサーバを経由して ブラウズさせている。→127.0.0.1ということか サンプルデータは2012年福岡県の市区町村別人口動態データ シェープファイルも添付されている パッケージにはvignetteが付いていて,それを参照すれば使い方も簡単にわかる rApacheとbrewパッケージでサーバ上で動くものを開発中 gridGraphicsというパッケージが26 Nov. 2014に公開された。 これを使うと普通のRのグラフをgridに変換できるので,いろいろなグラフを実装したい 日本語処理は未確認(パッケージ化のため英語で開発したため) 将来の野望は3D plotの実装など Rから統計APIを利用する http://nonki1974.hateblo.jp/entry/2013/06/14/221243 関数を作ってあるそうだ。 *当時の統計APIのサイトは移転してhttp://www.e-stat.go.jp/api/になっているけれども,使えそうなので試してみよう →これをパッケージ化してくださるかもしれない。朗報。 fukuoka.Rを始めた。facebookにページあり(第3回を近々) ブラウザとしてIEはSVGの扱いがうまくないので使えない。他のブラウザはOK 9. 鈴木了太(ef-prime) R AnalyticFlow3: A Real GUI for R これまでも開発されてきたR Analytic Flowの新バージョンの紹介(現在の正式リリースは2.1) ef-primeの業務としてデータ分析コンサルがあるので, チームで仕事を進めたりクライアントへの説明をしやすくするために開発したGUI スクリプトは全てを語る……けれども,細かすぎるし,知識のないクライアントにはわからない 分析フローを示せば「流れ」をつかんでもらうことができる 本流と支流を区別して見やすい 2.1段階でも,データ分析とコーディングのサポートとか,自動バックアップとかあった 今日の目玉はバージョン3のLive Preview プロジェクト管理が可能に! RStudioのようなやつだな。(隠しフォルダを使う。RStudioやgitHubと共存可能) 4ペイン 「フロー実行」「ノード実行」 既にできたコードがあればこれでいける 新しいコードを作るときは手作業だった 今回は,探索的データ解析できるGUIを作った プレビュー付きのGUIで実行しつつ,「フローに追加」するとフローもできる *これはメニューを増やせばRcmdrの上位互換になるかも? レポーティングも充実させないとダメか 変数の選択削除が簡単! ggplotも選べる 回帰分析も簡単 stepwiseもできる さらに,自分でUIを作れ,それを保存できて,アドオンというところから呼び出せる ドラッグ&ドロップも可能 *自分で作るUIにスライダーを付けられたら役に立つのでは? と藤野さんコメント →データのサイズ依存。サイズ制限したデータ内での操作についてはできるように検討する トライアル版の入手 RAF3 trialでGoogle検索すれば見つけられる http://download.ef-prime.com/raf3_trial/ おまけ 「Rのパッケージおよびツールの作成と応用」共立出版(12月10日発売予定) の第4部で,いろいろ解説あり 10. 中野純司(統数研)・中間栄治(Com-One) Rと統計数理研究所のスーパーコンピュータ *cranではhttp://cran.r-project.org/web/views/HighPerformanceComputing.html関連の話 統計関係のスーパーコンピュータとしては世界一のものが統数研にある HPCを主目的とする大規模コンピュータ 50 TFLOPS以上の理論的最高性能を有する(H26.4までは1.5 TFLOPS以上となっていたが,最新のMacBook Proはこのレベルになってしまった) 1 TFLOPS=1秒間に1兆回の浮動小数点演算 3台のスパコン A(データ同化スーパーコンピュータ), I(統計科学スーパーコンピュータ), C(共用クラウド計算システム)と名前が付いている。 Cは28.7 TFLOPS,AとBは50 TFLOPS以上 2012年のMacBook Airはデュアルコアで45 GFLOPSくらい。 Aは5120コア。Xeon。 スパコンの標準的なOSはLinux スパコンの利点は超並列計算をするという1点のみ 並列システムには,共有メモリ型と分散メモリ型がある。いまのスパコンの主流は後者。 プログラムに並列化不可能な部分があると,スパコンを使っても計算は速くならない(アムダールの法則) ただし,グスタフソンの法則によって,シミュレーションを1万回もやるとしたら1000台のCPUに10回ずつさせれば速くなる Rはマルチスレッドにはほとんど対応していない 本当に速くしようとするとMPIを意識してコーディングしないと速くならない コードは長くなるが速くなる 1999年のスパコンは160 GFLOPSくらいしかなかったので,2012年のMacBook Airの4倍弱の能力しかなかった Aは共有メモリ型サーバとして世界最大。SGI UV 2000 2台で構築 1パーティション2560コア,メモリ64 TB 1パーティションをHPCIシステム(京を頂点とする全国いくつかの大学が加盟しているシステム)に資源提供している 例えば,東日本大震災による地震音波強度や伝搬特性を評価するシミュレーションなどに使われた (音の到達で津波予報に使える) Iは分散メモリ型。SGIのICE Xを中心とする。世界で301位の速さ Rが動くようになっている Cは共用クラウド。データ解析HPCを目的とするプライベートクラウドシステム 普通はクラウドは計算システム向きでない,計算量が少ない事務作業向け けれども,CはHPC向けのチューニングをしてあり,データ解析ソフトがすぐ使える 8 core CPU 4ノード。各ノードメモリ64 GB,ストレージは5 TB,MPIやRがインストールされていて,すぐ使える Zeon E5-2680v2 1380コア 仮想環境を載せることによるオーバーヘッドを軽減するための工夫中 クラウドミドルウェアはApache Cloudstackを利用 HPCは普通バッチ処理。torque(フリーだが設定が大変面倒)はバッチ処理のためにコードを投げるもの MKLも動くようになっている 並列処理のRが簡単に使えるのが売り 全国の大学の人が自由に(共同研究すれば)使えるように将来はしたいとのこと 11. 石田基広(徳島大) 『Rの基礎とプログラミング技法』改訂に見るRの進化 9割くらいはネタ とある弁当屋(1)は1ヶ月で書いた (2)は(1)が売れたご褒美でIxyさんがイラストを描いた 裏RjpWikiさんのコメントが珠玉のご批判→共立出版が顧問弁護士に相談した 実はタイトルも電撃文庫に確認したら「ご遠慮いただきたい」と言われたが弁護士と共立の社長と相談して大丈夫だろうということでそのまま出版された Uwe Liggesの本の改訂版は8月時点でAmazonで予約可だった(ドイツ語版) 何が入るかの予想 第5位 RStudio これはIDEだから,SPSSのようなものを期待されると外れる。授業では使ってない 第4位 Rcpp スクリプトのC++のコードを書くとコンパイルできて実行できてしまう Rcppが入っているスクリプトもたくさんある 本も出ているが,Rcpp関連のvignetteの方が詳しい vignette自体もLiggesの本が出た2006年にはなかった 第3位 ggplot2 2006年にはなかったはず。 グラフィックス三基本形 素のRとLatticeとggplot2 今はggplot2が普通になっている 石田さんも今は普通に使っているが,最初は違和感あった Hadley World 関数名にアンダースコアを使っているのでESSでは困った 第2位 knitr 開発者はYihui Xie スクリプト込みのレポートの決定版 Sweaveに比べると遙かにチャンクが簡単と思われ,広く受け入れられた RStudioではボタン一発変換 slidify + RPubs 分析した後すぐにスライドにしてアップロードできる RPubsデモ地獄(授業で使うと学生がたくさんトップページに出て気が引ける) knitrBootstrap コードをたためる 画像をサムネイル化できる メニューも作れる でもパワポユーザには受け入れられない 第1位 これはパイプではない %>% 演算子(パイプ) Hadleyのdplyrでインポートされている データを%>%に流す iris %>% summary summary(iris)と同じだが 連結できる 空前の演算子ブーム %T%とか%$%とか%<>%とか Kun RenのpipeRというパッケージもある %>>%とか 可読性無視 でも便利? 格好いい? ので大流行 番外は parallel compiler Reference Classes (R5) 参照が使えるクラス。昔はクラスはS3とS4しかなかったが。 *ポインタみたいなものか。 R6も最近できた(C++のようだ。クラス設計でPublicとPrivateを区別) dplyrが使っているのでこれから流行するかも HadleyのAdvanced Rという本が出た Why is R slow? とか400ページくらい Liggesはどうした? メールで問い合わせたら,全然書けてないとのこと パッケージでネームスペースが必須になったのも最近のこと 以下総合討論(Ust無し) cranの壁 HadleyもRStudio社員なので,その辺が中心になって活発 RStudio日本語化は近いか この集会の世話人はこの5年間中谷さんだったが,来年から藤野さんに。