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