★ R -- 多重比較(Tukey) ★

 263 R -- 多重比較(Tukey)  青木繁伸  2002/01/16 (水) 20:43
  267 Re^3: R -- 多重比較(Tukey)  伊達  2002/01/16 (水) 21:35
   268 Re^4: R -- 多重比較(Tukey)  青木繁伸  2002/01/16 (水) 22:12


263. R -- 多重比較(Tukey)  青木繁伸  2002/01/16 (水) 20:43
tukey <- function(fn)
{
    d <- read.table(fn, header=TRUE)
    attach(d)
    fac <- factor(f)
    a <- length(unique(fac))
    phi.e <- sum(n.i <- tapply(x,fac,length))-a
    m.i <- tapply(x,fac,mean)
    v.i <- tapply(x,fac,var)
    v.e <- sum((n.i-1)*v.i)/phi.e
    t <- abs(outer(m.i, m.i, "-"))/outer(n.i, n.i, function(x, y) { sqrt(v.e*(1/x+1/y)) })
    p <- ptukey(t*sqrt(2), a, phi.e, lower=F)
    list(groups=a, n=n.i, mean=m.i, variance=v.i, phi=phi.e, v=v.e, t=t, p=p)
}
ありがたいことに,R にはスチューデント化した範囲の関数があります。
でもって,R だと非常に楽です。

p 値はこれでいいのでしょうね。

使用例の tykey.data は以下の通り。
f    x
1    14
1    15
1    14
1    16
1    15
1    17
1    17
2    17
2    16
2    17
2    16
2    15
2    18
2    19
2    15
3    18
3    19
3    20
3    19
3    17
3    17
4    20
4    21
4    19
4    20
4    19
4    22
4    20
5    19
5    20
5    19
5    17
5    17
5    17
5    18

tukey("tukey.data")

結果のうち一番重要な p は以下のようになります。

$p
             1            2           3            4           5
1 1.000000e+00 0.3630247954 0.001975521 6.970838e-07 0.002687670
2 3.630248e-01 1.0000000000 0.109056039 6.039780e-05 0.156759130
3 1.975521e-03 0.1090560392 1.000000000 9.414444e-02 0.998679526
4 6.970838e-07 0.0000603978 0.094144436 1.000000e+00 0.039780546
5 2.687670e-03 0.1567591303 0.998679526 3.978055e-02 1.000000000

     [このページのトップへ]


267. Re^3: R -- 多重比較(Tukey)  伊達  2002/01/16 (水) 21:35
青木先生

いろいろご苦労様です。
SPSSで計算すると以下のようになりました。
1 1.00000E+00 0.363027751 0.001979291 6.55651E-06 0.002691269
2 0.363027751 1.00000E+00 0.109058678 6.55055E-05 0.15676266
3 0.001979291 0.109058678 1.00000E+00 0.094147205 0.99868212
4 6.55651E-06 6.55055E-05 0.094147205 1.00000E+00 0.039783478
5 0.002691269 0.15676266  0.99868212  0.039783478 1.00000E+00
この調子でDunnettやWilliams,そのノンパラもできるなら,
Rの導入も考えようかな,と思ってます。

     [このページのトップへ]


268. Re^4: R -- 多重比較(Tukey)  青木繁伸  2002/01/16 (水) 22:12
> SPSSで計算すると以下のようになりました。

ありがとうございます。
小数点以下5桁目くらいまでは正しい(差がない)ようですね。
R のヘルプでは,
A Legendre 16-point formula is used for the integral of `ptukey'. The computations are relatively expensive, especially for `qtukey' which uses a simple secant method for finding the inverse of `ptukey'. `qtukey' will be accurate to the 4th decimal place.
と書いてあります。

今までも,別の意味でプログラミングは楽しかったですけど,R を使っていると,プログラミングが本当に楽しくなります。もっとも,それがプログラミングといえるかどうかは疑問ですが(^_^;)

     [このページのトップへ]


● 「統計学関連なんでもあり」の過去ログ--- 017 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る