<<目次へ


1要因-CRデザイン(各水準の観測数が異なる場合)


---ここから--- #使用ファイルはタブ区切りにして下さい。以下は水準数4,観測数8-6-7-5の場合です。
9       5       13      11
7       6       8       13
8       3       13      14
8       6       12      16
12      7       14      12
11      10      16      
8               10      
13
---ここまで---

Perlプログラムの実行方法はこちら

#データファイルの読み込み
$pathname="C://Perl/datafile/anovaCR2.dat";
open MYFILE, "$pathname";
@dat = map {chomp;[split /\t/]} <MYFILE>;
close MYFILE;

$rows=@dat;
$cols=@{$dat[0]};

print "何水準(条件)ですか?\n";
print "水準数を入力: ";
chomp($level=<STDIN>);
print "各水準の観測数を教えてください。\n";
for($i=0;$i<$level;$i++){
        $num=$i+1;
        print "level-$num = ";
        chomp($n[$i]=<STDIN>);
}

for($i=0;$i<$cols;$i++){
        for($j=0;$j<$rows;$j++){
                $AS+=$dat[$j][$i]**2;
                $sum+=$dat[$j][$i];
        }
        $A[$i]=$sum;
        $sum=0;
        $sum2+=$A[$i];
        $A+=$A[$i]**2/$n[$i];
        $N+=$n[$i];
}
$SSa=sprintf("%.2f",$A-$sum2**2/$N);
$SSwc=sprintf("%.2f",$AS-$A);
$SSt=sprintf("%.2f",$AS-$sum2**2/$N);
$MSa=sprintf("%.2f",$SSa/($cols-1));
$MSwc=sprintf("%.2f",$SSwc/($N-$cols));
$F=sprintf("%.2f",$MSa/$MSwc);
$df1=$cols-1;
$df2=$N-$cols;
$df3=$N-1;
use Statistics::Distributions;
$pvalue=sprintf("%.4f",Statistics::Distributions::fprob($df1,$df2,$F));

print "    \t SS    \t\t DF   \t MS    \t\t F  \n";
print "SSB \t $SSa  \t $df1 \t $MSa  \t $F(p=$pvalue) \n";
print "SSW \t $SSwc \t $df2 \t $MSwc \t    \n";
print "T   \t $SSt  \t $df3 \n";



参考文献

森・吉田「心理学のためのデータ解析テクニカルブック」北大路書房