ケンドールの順位相関係数の有意性の検定のための数表は,以下のようにして比較的簡単に作れたが,スピアマンの順位相関係数のそれがうまく行かぬ。
# kendall.awk BEGIN { N = 19 # 19以上は精度に問題あり t[0] = t[1] = 1 for (n = 3; n <= N; n++) { n_prev = n-1 max_prev = n_prev*(n_prev-1)/2 for (i = max_prev; i >= 0; i--) { for (j = n-1; j > 0; j--) { t[i+j] += t[i] } } denom = max_now = n*(n-1)/2 cum = sum = 0 for (i = 0; i <= max_now; i++) { sum += t[i] } printf "\n\n Kendall Rank Correlation Coefficient N = %i\n\n", n printf "%5s: %12s %13s %17s\n", "S", "τ", "累積確率", "度数" for (i = 0; i <= max_now; i++) { kendall = 1-2*i/denom cum += t[i] if (kendall >= 0.0) { printf "%5i: %#12.7f %#13.10f %17.17g\n", denom-i*2, kendall, cum/sum, t[i] } else { break } } } }