ひゃまだのblog

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

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

(2023-12-14 初稿 - )

はじめに

仕事で3元配置の分散分析を行う必要ができて、Webで調べたら以下のページが見つかった。

上記サイトには、いつも助けて頂いている。多謝。

このページは、物忘れがひどい筆者が忘れないよう3元配置をRスクリプトにしたメモ。

サンプルデータ

要因A(facA)と要因B(facB)、要因C(facC)があるとして、それぞれの値を入力。

facA facB facC value
side 20 0 0.9324
side 20 0 0.9189
side 20 1 0.7631
side 20 1 0.7500
side 27 0 0.9729
side 27 0 0.9594
side 27 1 0.8783
side 27 1 0.8378
up 20 0 0.8918
up 20 0 0.9324
up 20 1 0.8684
up 20 1 0.8815
up 27 0 0.9459
up 27 0 0.9459
up 27 1 0.9324
up 27 1 0.9370

 

Rスクリプト

さっそくRスクリプトを作成する。

### 3f-test.R  
# ver0.01 2023-12-14 start cp t-test.R 3f-test.R
# 3 dimension f-test

#[Usage]
# $ Rscript 3f-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 +
    facA*facB + facA*facC + facB*facC +
    facA*facB*facC, data)
summary(res)

データの読込に関しては、これまでと同様。面倒なのは、各要因間の交互作用。

facA*facB、facA*facC、facB*facCの3つの交互作用と全要因の交互作用がある。

実際に以下のように実行する。

$ Rscript 3f-test.R data-file.csv

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

hide@rna:~/R$ Rscript f3-test.R f3-test.csv
               Df   Sum Sq  Mean Sq F value   Pr(>F)    
facA            1 0.006500 0.006500  25.888 0.000944 ***
facB            1 0.013871 0.013871  55.242 7.39e-05 ***
facC            1 0.026496 0.026496 105.521 6.94e-06 ***
facA:facB       1 0.000587 0.000587   2.337 0.164842    
facA:facC       1 0.013093 0.013093  52.144 9.06e-05 ***
facB:facC       1 0.001890 0.001890   7.527 0.025308 *  
facA:facB:facC  1 0.000307 0.000307   1.223 0.300889    
Residuals       8 0.002009 0.000251                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

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

関連ページ