二要因の分散分析(ASB タイプ;SPFp・q デザイン;混合計画)     Last modified: Dec 21, 2006

目的
二要因の分散分析(ASB タイプ;SPFp・q デザイン;混合計画)を行う。
使用法

ASB(data)

引数

data	3次元配列のデータ(使用例を参照のこと)

ソース

インストールは,以下の 1 行をコピーし,R コンソールにペーストする
source("http://aoki2.si.gunma-u.ac.jp/R/src/ASB.R", encoding="euc-jp")

# 二要因の分散分析(ASB タイプ;SPFp・q デザイン;混合計画)
ASB <- function(data)                                                                # 3次元配列のデータ
{                                                                               # 次元は,被験者,要因B,要因A の順
        n <- dim(data)[1]                                                    # 水準の組み合わせでの被験者数
        nm1 <- n-1
        Nb <- dim(data)[2]                                                   # 要因 B の水準の数
        Na <- dim(data)[3]                                                   # 要因 A の水準の数
        grand.mean <- mean(data)                                             # 全体の平均
        e.a <- sum((apply(data, 3, mean)-grand.mean)^2)*Nb*n                 # 要因A
        diff.obj <- sum((apply(data, c(1, 3), mean)-grand.mean)^2)*Nb-e.a    # 個人差(S)
        e.b <- sum((apply(data, 2, mean)-grand.mean)^2)*Na*n                 # 要因B
        cross <- sum((apply(data, c(3, 2), mean)-grand.mean)^2)*n-e.a-e.b    # 交互作用 A x S
        err <- sum(apply(data, c(3, 2), var)*nm1)-diff.obj                   # 交互作用 S x B
        SS <- c(e.a, diff.obj, e.b, cross, err)                                      # 平方和
        dfa <- Na-1
        dfb <- Nb-1
        df <- c(dfa, Na*nm1, dfb, dfa*dfb,  Na*nm1*dfb)                              # 自由度
        MS <- SS/df                                                          # 平均平方
        f <- p <- rep(NA, 5)
        f[c(1, 3, 4)] <- MS[c(1, 3, 4)]/MS[c(2, 5, 5)]                               # F 値
        p[c(1, 3, 4)] <- pf(f[c(1, 3, 4)], df[c(1, 3, 4)], df[c(2, 5, 5)],   # P 値
                            lower.tail=FALSE)
        result <- data.frame(SS, df, MS, f, p)
        colnames(result) <- c("SS", "d.f.", "MS", "F value", "P value")
        rownames(result) <- c("Factor A", "S", "Factor B", "AxS", "SxB")
        class(result) <- c("anova.table", "data.frame")
        return(result)
}

インストールは,以下の 1 行をコピーし,R コンソールにペーストする
source("http://aoki2.si.gunma-u.ac.jp/R/src/print.anova.table.R", encoding="euc-jp")

# ANOVA 表のプリント・メソッド(SAB, ASB 関数が返すオブジェクトを表示する)
print.anova.table <- function(x)
{
        printf <- function(x, fmt) if (is.na(x)) "" else sprintf(fmt, x)
        x[,4] <- sapply(x[,4], printf, "%.5f")
        x[,5] <- sapply(x[,5], printf, "%.5f")
        print.data.frame(x)
}


使用例

ASBタイプ(混合計画)のデータが以下のようにまとめられているとする。
要因 A は 3 水準,要因 B は 4 水準をもち,要因A の水準ごとに別の被検者が用意され,各被験者は要因 B についてはすべての水準についてデータを採取される。

要因 A の水準 1 について

             要因 B
          水準1 水準2 水準3 水準4
被検者1     x1    x6   x11   x16
被検者2     x2    x7   x12   x17
被検者3     x3    x8   x13   x18
被検者4     x4    x9   x14   x19
被検者5     x5   x10   x15   x20

要因 A の水準 2 について

             要因 B
          水準1 水準2 水準3 水準4
被検者6    x21   x26   x31   x36
被検者7    x22   x27   x32   x37
被検者8    x23   x28   x33   x38
被検者9    x24   x29   x34   x39
被検者10   x25   x30   x35   x40

要因 A の水準 3 について

             要因 B
          水準1 水準2 水準3 水準4
被検者11   x41   x46   x51   x56
被検者12   x42   x47   x52   x57
被検者13   x43   x48   x53   x58
被検者14   x44   x49   x54   x59
被検者15   x45   x50   x55   x60

以上のようなデータを,R の配列として以下のように付値する。

配列名を data とすると
data <- array(c(x1, x2, x3, ..., x60),  dim=c(5, 4, 3))

dim=c(5, 4, 3) の3つの数値は順に,要因 A の各水準ごとの被験者数(全被験者数/要因 A の水準数),要因 B の水準数,要因 A の水準数。

出力結果例

# 田中敏,山際勇一郎「教育・心理統計と実験計画法」教育出版,P. 128 の例
> data <- array(c(4, 4, 5,  3, 4, 4,  6, 6, 4,  3, 4, 3,  5, 6, 7,  5, 4, 4),  dim=c(3, 3, 2))
> ASB(data)
                  SS d.f.         MS F value P value
Factor A  0.05555556    1 0.05555556 0.50000 0.51852	# 要因 A
S         0.44444444    4 0.11111111                	# 個人差 (S)
Factor B  4.00000000    2 2.00000000 2.32258 0.16020	# 要因 B
AxS      11.11111111    2 5.55555556 6.45161 0.02145	# 交互作用 AxS
SxB       6.88888889    8 0.86111111                	# 交互作用 SxB

# print.anova.table 関数がないときには空白欄に NA が表示されることがある


・ 直前のページへ戻る  ・ E-mail to Shigenobu AOKI

Made with Macintosh