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";
参考文献
森・吉田「心理学のためのデータ解析テクニカルブック」北大路書房