R で数表を書くプログラムを書いたので参考までに > Grubbs <- function(n, alpha) { + t <- qt(1-alpha/n, n-2)^2 + return((n-1)*sqrt(t/(n-2+t))/sqrt(n)) + } > n <- c(3:20, 22, 24, 26, 28, 30, 35, 40, 50, 60, 80, 100, 150, 200, 300, 400, 500, 1000) > alpha <- c(0.1, 0.05, 0.025, 0.01) > tbl <- outer(n, alpha, Grubbs) > rownames(tbl) <- n > colnames(tbl) <- alpha > tbl 0.1 0.05 0.025 0.01 3 1.148375 1.153118 1.154305 1.154637 4 1.425000 1.462500 1.481250 1.492500 5 1.601635 1.671386 1.715037 1.748857 6 1.728880 1.822120 1.887145 1.944245 7 1.827976 1.938135 2.019969 2.097304 8 1.908949 2.031652 2.126645 2.220833 9 1.977265 2.109562 2.215004 2.323148 10 2.036233 2.176068 2.289954 2.409725 11 2.088014 2.233908 2.354730 2.484279 12 2.134099 2.284953 2.411560 2.549417 13 2.175561 2.330540 2.462033 2.607020 14 2.213198 2.371654 2.507321 2.658480 15 2.247621 2.409038 2.548308 2.704855 16 2.279307 2.443272 2.585676 2.746963 17 2.308634 2.474810 2.619964 2.785445 18 2.335911 2.504017 2.651599 2.820817 19 2.361388 2.531193 2.680931 2.853495 20 2.385275 2.556581 2.708246 2.883821 22 2.428950 2.602784 2.757735 2.938503 24 2.468047 2.643910 2.801551 2.986628 26 2.503384 2.680899 2.840774 3.029473 28 2.535582 2.714459 2.876209 3.067989 30 2.565123 2.745132 2.908473 3.102897 35 2.629675 2.811782 2.978183 3.177798 40 2.684045 2.867542 3.036097 3.239482 50 2.771905 2.956975 3.128247 3.336624 60 2.841095 3.026863 3.199662 3.411078 80 2.945924 3.131939 3.306121 3.520780 100 3.023885 3.209520 3.384083 3.600196 150 3.158892 3.342905 3.517009 3.733979 200 3.250062 3.432404 3.605525 3.822065 300 3.372924 3.552437 3.723555 3.938484 400 3.456577 3.633871 3.803268 4.016558 500 3.519676 3.695175 3.863127 4.074949 1000 3.707091 3.876851 4.039978 4.246586また,先の近似式の逆関数を使えば,スミルノフ・グラブス検定統計量から有意確率(P 値)を求める関数を導くことができる。 パーセント点を求める関数(片側) qGrubbs <- function(p, n) { t <- qt(p/n, n-2)^2 return((n-1)*sqrt(t/(n-2+t))/sqrt(n)) } 有意確率を求める関数(片側) pGrubbs <- function(st, n) { min(n*pt(sqrt((n-2)/((n-1)^2/st^2/n-1)), n-2, lower.tail=FALSE), 1) } > x <- qGrubbs(0.1, 1000) > x [1] 3.707091 > pGrubbs(x, 1000) [1] 0.1 > y <- pGrubbs(2.3586, 27) > y [1] 0.1763948 > qGrubbs(y, 27) [1] 2.3586