乱塊法 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