<< 目次へ
最終更新日 : 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) ----- 使用例(ここまで) -----
参考文献