<< トップページへ

<< 目次へ

最終更新日 : 2008.10.24

単一事例実験デザインにおける中央分割法を行う関数



 手法の解説についてはいずれ。

 とりあえず関数だけ書いたので。

----- データの用意(ここから) -----
bl.x <- 1:10 #ベースラインx軸のデータ
bl.y <- c(25, 30, 18, 20, 28, 25, 32, 40, 33, 36) #ベースラインy軸のデータ
iv.x <- 11:20 #介入後x軸のデータ
iv.y <- c(44, 40, 48, 50, 49, 52, 58, 60, 61, 58) #介入後y軸のデータ
----- データの用意(ここまで) -----
----- 関数(ここから) -----
MSA <- function(x1, y1, x2, y2){
# データフレームの作成
DataFrame <- data.frame(X = x1, Y = y1)
attach(DataFrame) #データフレームにパスを通す

# Xのデータの中央値を求める all.Med
all.Med <- median(X)
X.Med <- c(median(X[X < all.Med]), median(X[X > all.Med]))
Y.Med <- c(median(Y[X < all.Med]), median(Y[X > all.Med]))

# 直線の方程式を求める
result <- lm(Y.Med ~ X.Med)
Line.Coef <- coef(result) # 方程式の係数を取り出す
f <- function(x) Line.Coef[1] + Line.Coef[2]*x # 直線の方程式の関数を定義
predict.Y <- f(x2) # 回帰直線の予測値

# 直線の予測値よりも、大きな値をとる実測値を集計
# それに対して二項検定を行う
success.num <- table(y2 > predict.Y) #直線よりも上のデータポイントの数を集計
tr.n <- length(y2) # 介入後の全データ数をカウント
binom.result <- binom.test(success.num[1], tr.n) #二項検定

# グラフのプロット
op <- par(mfrow = c(1, 2))
plot(X, Y, type="b", xlab="BaseLine X Value", ylab="BaseLine Y Value") # ベースライン前のデータをプロット
# 中央分割点を線で引く
abline(v=all.Med, lty=2)
segments(X.Med[1], 0, X.Med[1], Y.Med[1], col="red", lty=2)
segments(0, Y.Med[1], X.Med[1], Y.Med[1], col="red", lty=2)
segments(X.Med[2], 0, X.Med[2], Y.Med[2], col="blue", lty=2)
segments(0, Y.Med[2], X.Med[2], Y.Med[2], col="blue", lty=2)
abline(result, lwd=2)
# 介入後のデータをプロット
plot(x2, y2, type="b", xlab="Intervention X Value", ylab="Intervention Y Value")
abline(result, lwd=2)

detach(DataFrame) #データフレームのパスを解除

# 二項検定の結果を返す
binom.result
}
----- 関数(ここまで) -----
----- 使用例(ここから) -----
# 引数x1にはベースラインx軸のデータbl.xを指定する
# 引数y1にはベースラインy軸のデータbl.yを指定する
# 引数x2には介入後x軸のデータiv.xを指定する
# 引数y2には介入後y軸のデータiv.yを指定する
MSA(bl.x, bl.y, iv.x, iv.y)
----- 使用例(ここまで) ----- 


参考文献