乱塊法     Last modified: Aug 21, 2009

目的

乱塊法を行う

使用法

randblk(dat)
print.randblk(obj, digits=5)

引数

dat     処理と繰り返しの行列データ
obj     randblk 関数が返すオブジェクト
digits  表示桁数

ソース

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

# 乱塊法
randblk <- function(dat)                             # データ行列
{
        dat <- as.matrix(dat)
        dat <- subset(dat, complete.cases(dat))              # 欠損値を持つケースを除く
        nr <- nrow(dat)                                      # ケース数
        nc <- ncol(dat)                                      # 変数の個数(処理・条件の個数)
        gmean <- mean(dat)                           # 全平均値
        tmean <- colMeans(dat)                               # 処理・条件ごとの平均値
        rmean <- rowMeans(dat)                               # 繰り返しの平均値
        
        SSt <- sum((dat-gmean)^2)
        SSc <- nr*sum((tmean-gmean)^2)
        SSr <- nc*sum((rmean-gmean)^2)
        SSe <- SSt-SSr-SSc
        SS <- c(SSc, SSr, SSe, SSt)

        dfc <- nc-1
        dfr <- nr-1
        dfe <- dfc*dfr
        dft <- nc*nr-1
        df <- c(dfc, dfr, dfe, dft)

        MS <- SS/df

        Fs <- MS/MS[3]
        Ps <- pf(Fs, df, dfe, lower.tail=FALSE)
        Fs[3:4] <- Ps[3:4] <- NA

        result <- cbind(SS, df, MS, Fs, Ps)
        rownames(result) <- c("Treatment", "Replication", "Residual", "Total")
        colnames(result) <- c("SS", "d.f.", "MS", "F value", "P value")
        return(structure(list(result=result), class="randblk"))
}
# print メソッド                                        分散分析表を表示
print.randblk <- function(   obj,                    # randblk 関数が返すオブジェクト
                                digits=5)               # 表示桁数
{
        print(obj$result, na.print="", digits=digits)
}


使用例

> dat <- matrix(c(	# 処理が 4 種,繰り返しが 3 のデータ
+ 	9, 17, 12, 16,
+ 	1, 21, 16, 11,
+ 	7, 19,  6,  9
+ 	), byrow=TRUE, ncol=4)

> (a <- randblk(dat))

                 SS d.f.     MS F value  P value
Treatment   268.667    3 89.556 5.49233 0.037192
Replication  21.500    2 10.750 0.65928 0.551030
Residual     97.833    6 16.306                 
Total       388.000   11 35.273                 

・ 解説ページ


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

Made with Macintosh