SlideShare uma empresa Scribd logo
1 de 13
DiaggrameRと仲良くなった話
ーグラフィカルモデルのためのDiaggrameR速習ー
2017.11.26 Hijiyama.R final
広島大学グローバルキャリアデザインセンター 特別研究員
広島大学大学院 教育学研究科 学習心理学研究室
山根 嵩史
DiagrammeRとは
✔︎ DiagrammeRは,グラフ描画ツールGraphvizを使っ
て,R上で簡単に高度な作図をするパッケージ
(MermaidエンジンやNDFs/EDFsなどの機能も実装されているが今回は割愛)
✔︎ 公式サイトのドキュメントを見てみると夢が広がる
DiagrammeR Docs
(http://rich-iannone.github.io/DiagrammeR/graphviz_and_mermaid.html)
dot言語で色々な作図が可能
(レイアウトは自動!)
ノードの色,形,フォント等の
設定も充実
じゃあこんな図書きたい!
グラフィカルモデルの例
(『実践ベイズモデリング』図15.3)
✔︎ DiagrammeRでグラフィカルモデルが描きたい
グラフィカルモデル (またはプレート表現):
ベイジアンモデリングで使用される,ノードの繋がりで
データの生成過程を視覚的に表現した図
それっぽいコードを書いてみるが…
お,おう...
DiagrammeRと仲良くなりたい
✔︎ DiagrammeRの弱点として,(配置が自動なぶん)
思った通りの図にならないことがある
✔︎ だからといってパワポとかで作図するのも嫌
とくにMacでは
0
1
2
3
4
5
項目 1 項目 2
☞ DiagrammeRと仲良くなりたい
なんで図形とかグラフ要素に
デフォルトで影ついてるの?
BKなの?Sぬの?
DiagrammeRの記法
✔︎ graph[],node[],edge[]の部分に分けて書く
graph[]:配置の方向や背景など,グラフ全体の設定
node[]:配置したいノード名とノードの設定
edge[]:ノード間をつなぐエッジの設定
✔︎ それぞれのノード,エッジの後ろに[]をつければ
個別に設定も可能
配置に関するコマンド
✔︎ ノードの位置を調整したい
edge[]内で{rank = }で設定
{rank = same; a; b} → ノードaとbを同じ階層に配置
{rank = max; a} → ノードaを一番下の階層に配置
{rank = min; a} → ノードaを一番上の階層に配置
✔︎ 図の形状について
階層型 (dot) の他に,円形 (circo) や
ネットワーク型 (neato) なども
graph[]内で“layout = 〜”で設定
デフォルトはdot
✔︎ 横向きの図にしたい
graph[]内で“rankdir = LR”で設定
描画に関するコマンド
✔︎ ギリシャ文字を使いたい
&文字列; で任意のギリシャ文字を描ける
✔︎ 上付き,下付き文字にしたい
@^{文字列}で上付き文字
@_{文字列}で下付き文字
✔︎ イタリックにしたい
graph[]内で“fontname = 〜”で斜体フォントを設定
ラベルの一部だけ斜体にしたい場合には <<I>文字列</I>>
先ほどのコードを修正すると…
fixedsize = true
☞ 各ノードの大きさを固定
fontname = ‘Times-italic’
☞ フォント名と斜体の設定
label = ‘&theta;@^{(h)}’
☞ ギリシャ文字θと
上付き文字の設定
{rank = max; ns; nn}
☞ nsとnnのノードを一番下に配置
するため,{rank = } を使用
できた!
subgraphの設定
✔︎ subgraph cluster{} で
枠付きのサブグラフ作成
✔︎ サブグラフの外と中で
ノードの位置を揃えたい
ときは,graph[]内で
“newrank = true”の設定
が必要
仲良くなれなかった点
✔︎ ︎一部が重なったsubgraphは描けない
例:『実践ベイズモデリング』 図18.9
✔︎ ︎graphvizの仕様上無理っぽい
背景透明色で作った2つのサブグラフを重ね合わせ
るとかどうですか。ダメですか。
参照:https://stackoverflow.com/questions/12680865/how-to-draw-overlapping-clusters-in-graphviz
参考にしたサイトなど
Graphvizとdot言語でグラフを描く方法のまとめ
(https://qiita.com/rubytomato@github/items/51779135bc4b77c8c20d)
Node, Edge and Graph Attributes
(http://www.graphviz.org/doc/info/attrs.html)
DiagrammeR入門 nodeの属性まとめ
(https://qiita.com/kazutan/items/feea8a3d40143f1f7978)
Rでグラフィカルモデルを書こう!
(https://kunisatolab.github.io/how-to-graphicalModel.html)
Plate notation via Graphviz/Rstudio
(http://kosugitti.net/archives/5834)
dot(graphviz)でsubgraph間の位置関係を整える
(http://blog.livedoor.jp/hiroaki8270/archives/17759669.html)

Mais conteúdo relacionado

Mais procurados

比例ハザードモデルはとってもtricky!
比例ハザードモデルはとってもtricky!比例ハザードモデルはとってもtricky!
比例ハザードモデルはとってもtricky!
takehikoihayashi
 

Mais procurados (20)

Rによるベイジアンネットワーク入門
Rによるベイジアンネットワーク入門Rによるベイジアンネットワーク入門
Rによるベイジアンネットワーク入門
 
Cmdstanr入門とreduce_sum()解説
Cmdstanr入門とreduce_sum()解説Cmdstanr入門とreduce_sum()解説
Cmdstanr入門とreduce_sum()解説
 
StanとRでベイズ統計モデリング読書会 Chapter 7(7.6-7.9) 回帰分析の悩みどころ ~統計の力で歌うまになりたい~
StanとRでベイズ統計モデリング読書会 Chapter 7(7.6-7.9) 回帰分析の悩みどころ ~統計の力で歌うまになりたい~StanとRでベイズ統計モデリング読書会 Chapter 7(7.6-7.9) 回帰分析の悩みどころ ~統計の力で歌うまになりたい~
StanとRでベイズ統計モデリング読書会 Chapter 7(7.6-7.9) 回帰分析の悩みどころ ~統計の力で歌うまになりたい~
 
R Markdownによるドキュメント生成と バージョン管理入門
R Markdownによるドキュメント生成と バージョン管理入門R Markdownによるドキュメント生成と バージョン管理入門
R Markdownによるドキュメント生成と バージョン管理入門
 
Chapter9 一歩進んだ文法(前半)
Chapter9 一歩進んだ文法(前半)Chapter9 一歩進んだ文法(前半)
Chapter9 一歩進んだ文法(前半)
 
Rの高速化
Rの高速化Rの高速化
Rの高速化
 
負の二項分布について
負の二項分布について負の二項分布について
負の二項分布について
 
pymcとpystanでベイズ推定してみた話
pymcとpystanでベイズ推定してみた話pymcとpystanでベイズ推定してみた話
pymcとpystanでベイズ推定してみた話
 
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
 
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章
 
ベイジアンモデリングによるマーケティングサイエンス〜状態空間モデルを用いたモデリング
ベイジアンモデリングによるマーケティングサイエンス〜状態空間モデルを用いたモデリングベイジアンモデリングによるマーケティングサイエンス〜状態空間モデルを用いたモデリング
ベイジアンモデリングによるマーケティングサイエンス〜状態空間モデルを用いたモデリング
 
階層ベイズと自由エネルギー
階層ベイズと自由エネルギー階層ベイズと自由エネルギー
階層ベイズと自由エネルギー
 
2 6.ゼロ切断・過剰モデル
2 6.ゼロ切断・過剰モデル2 6.ゼロ切断・過剰モデル
2 6.ゼロ切断・過剰モデル
 
Rで因子分析 商用ソフトで実行できない因子分析のあれこれ
Rで因子分析 商用ソフトで実行できない因子分析のあれこれRで因子分析 商用ソフトで実行できない因子分析のあれこれ
Rで因子分析 商用ソフトで実行できない因子分析のあれこれ
 
Rによる高速処理 まだfor使ってるの?
Rによる高速処理 まだfor使ってるの?Rによる高速処理 まだfor使ってるの?
Rによる高速処理 まだfor使ってるの?
 
階層ベイズとWAIC
階層ベイズとWAIC階層ベイズとWAIC
階層ベイズとWAIC
 
比例ハザードモデルはとってもtricky!
比例ハザードモデルはとってもtricky!比例ハザードモデルはとってもtricky!
比例ハザードモデルはとってもtricky!
 
Rubinの論文(の行間)を読んでみる-傾向スコアの理論-
Rubinの論文(の行間)を読んでみる-傾向スコアの理論-Rubinの論文(の行間)を読んでみる-傾向スコアの理論-
Rubinの論文(の行間)を読んでみる-傾向スコアの理論-
 
ggplot2用例集 入門編
ggplot2用例集 入門編ggplot2用例集 入門編
ggplot2用例集 入門編
 
第52回SWO研究会チュートリアル資料
第52回SWO研究会チュートリアル資料第52回SWO研究会チュートリアル資料
第52回SWO研究会チュートリアル資料
 

Mais de Takashi Yamane

MCMCによる回帰分析@ベイズセミナー
MCMCによる回帰分析@ベイズセミナーMCMCによる回帰分析@ベイズセミナー
MCMCによる回帰分析@ベイズセミナー
Takashi Yamane
 
第一回広島ベイズ塾・最小二乗法
第一回広島ベイズ塾・最小二乗法第一回広島ベイズ塾・最小二乗法
第一回広島ベイズ塾・最小二乗法
Takashi Yamane
 
Anova君を使った分散分析
Anova君を使った分散分析Anova君を使った分散分析
Anova君を使った分散分析
Takashi Yamane
 
Mendeleyで簡単! 論文管理
Mendeleyで簡単! 論文管理Mendeleyで簡単! 論文管理
Mendeleyで簡単! 論文管理
Takashi Yamane
 

Mais de Takashi Yamane (14)

ベイズモデリングによる第2種信号検出モデルの表現
ベイズモデリングによる第2種信号検出モデルの表現ベイズモデリングによる第2種信号検出モデルの表現
ベイズモデリングによる第2種信号検出モデルの表現
 
信号検出理論 (『実践ベイズモデリング』15章)
信号検出理論 (『実践ベイズモデリング』15章)信号検出理論 (『実践ベイズモデリング』15章)
信号検出理論 (『実践ベイズモデリング』15章)
 
Osaka.stan#4 chap8
Osaka.stan#4 chap8Osaka.stan#4 chap8
Osaka.stan#4 chap8
 
要因計画データに対するベイズ推定アプローチ
要因計画データに対するベイズ推定アプローチ要因計画データに対するベイズ推定アプローチ
要因計画データに対するベイズ推定アプローチ
 
PypeRで実験と分析を一本化する
PypeRで実験と分析を一本化するPypeRで実験と分析を一本化する
PypeRで実験と分析を一本化する
 
Rの導入とRStudio事始め(改訂版)
Rの導入とRStudio事始め(改訂版)Rの導入とRStudio事始め(改訂版)
Rの導入とRStudio事始め(改訂版)
 
ガンマ分布 @魁!!広島ベイズ塾
ガンマ分布 @魁!!広島ベイズ塾ガンマ分布 @魁!!広島ベイズ塾
ガンマ分布 @魁!!広島ベイズ塾
 
(実験心理学徒だけど)一般化線形混合モデルを使ってみた
(実験心理学徒だけど)一般化線形混合モデルを使ってみた(実験心理学徒だけど)一般化線形混合モデルを使ってみた
(実験心理学徒だけど)一般化線形混合モデルを使ってみた
 
ANOVA君とanovatan
ANOVA君とanovatanANOVA君とanovatan
ANOVA君とanovatan
 
MCMCによる回帰分析@ベイズセミナー
MCMCによる回帰分析@ベイズセミナーMCMCによる回帰分析@ベイズセミナー
MCMCによる回帰分析@ベイズセミナー
 
第一回広島ベイズ塾・最小二乗法
第一回広島ベイズ塾・最小二乗法第一回広島ベイズ塾・最小二乗法
第一回広島ベイズ塾・最小二乗法
 
Anova君を使った分散分析
Anova君を使った分散分析Anova君を使った分散分析
Anova君を使った分散分析
 
Rstudio事始め
Rstudio事始めRstudio事始め
Rstudio事始め
 
Mendeleyで簡単! 論文管理
Mendeleyで簡単! 論文管理Mendeleyで簡単! 論文管理
Mendeleyで簡単! 論文管理
 

DiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ー