R 実験計画法 直交表の分散分析(excelデータの活用)
はじめに
excelで直交表を作成し,クリップボードを経由してRで分散分析をする手順です。私の環境がWindows XPなので,別のOSの場合は違うかもしれません。
扱うデータはL9の直交表です。実際の実験では割り当てられる因子の数も少なく、交互作用の影響が大きくでた時には問題もあるので、よく分かっている方を除いてはL9はお勧めしません。解説用にサイズが小さいので良く利用されることがありますが、あまりお勧めしません。
関数の定義
この作業を始める前に以下の関数を定義して下さい。関数の名前は適当に変えてくださいね。
##excelのデータをクリップボード経由で取込む
excel <- function(){
read.delim("clipboard")
}
## 直交表を因子に変換
## 最後の列にデータとすること
factor2 <-function(data){
n=ncol(data)-1
for(i in 1:n){
data[,i]<-factor(data[,i])
}
return(data)
}
手順
直交表を扱うときに,データフレームの水準を数値ではなく因子に変換する作業が必要になります。今回定義したfactor2は指定データフレームの指定列を数値から因子に変換します。この作業で最も重要となるのがこの数値から因子への変換です。
1. excelで直交表を作成し,データを入力する。
この時に、実験データは最後の列に記入して下さい。関数定義で最後の列以外を因子に変換するようにしています。
2. 直交表の列名を含めてクリップボードに入れる。(コピーをする)
3. 以下のコマンドを入力し,dataにクリップボードのデータを入れる。
data <- excel()
4.以下のコマンドを入力し,直交表の水準データを数値から因子にする。
data <- factor2(data)
c(data)
このときに,因子は Levels: 1 2 3 などと表示されますのでちゃんと因子に変換できていることを確認して下さいね。間違っていると分散分析結果がおかしくなります。
5. 分散分析をします。
summary(aov(y~A+B+C,data=data))
※ちゃんと自由度が計算されているのかチェックして下さいね。自由度が間違っている場合は数値から因子に変換できていません。
最後に
なんだか少しづつ、分かってきた気がします。まだ私は始めたばかりのひよこなので、いろいろと至らないこともあるかと思いますが、少しづつ勉強していきたいと思っています。プログラムについてもまだよく分かっていないので、もう少し効率の良い方法もあるかもしれませんね。