ひゃまだのblog

ひゃまだ(id:hymd3a)の趣味のブログ

Rのスクリプトで4元配置の分散分析をする

(2023-12-15 初稿 - )

はじめに

以下のページに3元配置分散分析のことを載せたので、調子に乗って4元配置分散分析をやってみた。

サンプルデータ

データは、facAからfacDまでの4要因で、表計算ソフトやお好きなエディタで入力して、f4-test.csv等の適当な名前を付ける。

facA facB facC facD value
side 20 2 0 0.5945
side 20 2 0 0.9324
side 20 2 1 0.8289
side 20 2 1 0.8815
side 20 3 0 0.9324
side 20 3 0 0.9189
side 20 3 1 0.7631
side 20 3 1 0.7500
side 27 2 0 0.9594
side 27 2 0 0.9594
side 27 2 1 0.9729
side 27 2 1 0.9594
side 27 3 0 0.9729
side 27 3 0 0.9594
side 27 3 1 0.8783
side 27 3 1 0.8378
up 20 2 0 0.8918
up 20 2 0 0.9324
up 20 2 1 0.8552
up 20 2 1 0.9078
up 20 3 0 0.8918
up 20 3 0 0.9324
up 20 3 1 0.8684
up 20 3 1 0.8815
up 27 2 0 0.9594
up 27 2 0 0.9594
up 27 2 1 0.9729
up 27 2 1 0.9860
up 27 3 0 0.9459
up 27 3 0 0.9459
up 27 3 1 0.9324
up 27 3 1 0.9370

 

Rスクリプト

さっそくスクリプトを示す。

### 4f-test.R  
# ver0.01 2023-12-14 start cp f3-test.R f4-test.R
# 4 dimension f-test

#[Usage]
# $ Rscript f4-test.R data-file.csv

args <- commandArgs(trailingOnly=T)
data <- read.table(args[1], sep=",", header=T)
#attach(data)
res <- aov(value ~ facA + facB + facC + facD +
    facA*facB + facA*facC + facA*facD + facB*facC + facB*facD + facC*facD +
    facA*facB*facC + facA*facB*facD + facA*facC*facD + facB*facC*facD + 
    facA*facB*facC*facD, data)
summary(res)

3元配置と異なる点は、2要因の交互作用が6個、3要因が4個あり、それぞれを列記するところ。

以下のとおり実行してみる。

$ Rscript 4f-test.R 4f-test.csv

以下のような結果がでれば成功。

$ Rscript f4-test.R f4-test.csv 
                    Df  Sum Sq Mean Sq F value  Pr(>F)   
facA                 1 0.01527 0.01527   3.886 0.06624 . 
facB                 1 0.05912 0.05912  15.046 0.00133 **
facC                 1 0.00132 0.00132   0.335 0.57084   
facD                 1 0.00706 0.00706   1.796 0.19891   
facA:facB            1 0.00552 0.00552   1.404 0.25330   
facA:facC            1 0.00009 0.00009   0.023 0.88086   
facA:facD            1 0.00179 0.00179   0.457 0.50887   
facB:facC            1 0.00586 0.00586   1.493 0.23951   
facB:facD            1 0.00035 0.00035   0.088 0.77052   
facC:facD            1 0.02137 0.02137   5.440 0.03307 * 
facA:facB:facC       1 0.00160 0.00160   0.408 0.53219   
facA:facB:facD       1 0.00127 0.00127   0.322 0.57830   
facA:facC:facD       1 0.01427 0.01427   3.632 0.07479 . 
facB:facC:facD       1 0.00184 0.00184   0.468 0.50365   
facA:facB:facC:facD  1 0.00364 0.00364   0.927 0.34997   
Residuals           16 0.06286 0.00393                   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

各行末の記号の意味は、有意差の水準だよ。

関連ページ