猫も杓子も構造化

発達障害、特別支援などについて書いています。最近は心理学関係の内容が多めです。

シングルケース研究のグラフをRで描く

シングルケースデザインの研究は折れ線グラフをよく使いますが、そのグラフをRで描く方法を調べたのでその備忘録を。

とりあえず仮想的なデータを作って見ます。指導のセッションの回数を重ねる毎に自傷行為の生起頻度がどう変化していったかのようなケースを想定してみましょうか。

#データ入力
session <- c(1:20) #セッション回数
selfinjury <- c(7,9,8,12,8,5,6,4,5,4,2,1,1,3,2,2,1,0,0,1) #自傷行為の回数

で、これをもとにとりあえず折れ線を作ります。
plot()関数のプロパティでtype="b"を指定すると、線とマーカーのついた折れ線グラフが書けるようです。

#マーカー付き折れ線グラフ
plot(session, selfinjury, type="b")

f:id:nekomosyakushimo:20170425125610p:plain
なんかあまり、研究論文っぽさがないのでちょこちょこといじります。

#マーカー付き折れ線グラフ2
plot(session, selfinjury, type="o",  #マーカーと線を重ねる時はo
     pch=16, #●は16
     xlim= c(0,20), #x軸の範囲を指定
     ylim= c(0,12)  #y軸の範囲を指定
)

f:id:nekomosyakushimo:20170425130510p:plain

だいぶそれっぽくなりましたが、ベースラインと介入期の線を切りたいですね。
特定の線だけ消す方法を調べてみたのですが見つからなかったので、
やや強引ではあるものの白い線のグラフを上に重ねて強引に消すことにします。
セッション回数5までがベースラインで、6以降が介入期と想定します。

#上書き用データを入力
session2 <- c(5,6)
selfinjury2 <- c(8,5)

#グラフの上書きを指定
par(new=T)


#白の折れ線を重ねる
plot(session2, selfinjury2, type="l",  #マーカーを描かないの時はl
     col="white", #白で重ね書き
     lwd=3,  #太めにしないと隠れきらない
     xlim= c(0,20), #x軸の範囲を同じに指定
     ylim= c(0,12),  #y軸の範囲を同じに指定
     xlab="",  #軸のラベルを指定しないと変に重なる
     ylab=""
) 

#グラフの上書きを指定
par(new=T)

#白線で削れた点を復元する
plot(session2, selfinjury2, type="p",  #店のみの時はp
     pch=16, #●は16
     xlim= c(0,20), #x軸の範囲を同じに指定
     ylim= c(0,12),  #y軸の範囲を同じに指定
     xlab="",
     ylab=""
) 

f:id:nekomosyakushimo:20170425141409p:plain

スマートではない方法ですが、それっぽくはなりました。
ポイントとしては、軸の範囲を重ねる元のものと同じにしないとうまく重ならないことと、
重ねる白線の太さを微妙に太くすることでした。(でないともとの線の縁が微妙に残る)

最後にフェイズを分ける垂線を描いておしまいです。

#垂線を描く
abline(v=5.5,lwd=2,lty=2)

f:id:nekomosyakushimo:20170425142347p:plain

効率は良くなかったのかもしれませんが、大分それっぽいものが描けました。