No.05819 F検定とカイ二乗検定  【tarou】 2008/02/12(Tue) 11:42

F検定とカイ二乗検定は二群の分散差の検定に利用できると思うのですが,F検定は2群の分布曲線の変曲点までの距離の差の 検定,つまりある一点において差があるかないのかの検定であり,カイ二乗検定は二群の分布の形に差があるのかないのかの検定だと理解しております。ボック スのM検定ではなぜF検定ではなくカイ二乗検定を使用するのかを疑問に思ったので質問させていただきました.
御教示よろしくお願いいたします.

No.05820 Re: F検定とカイ二乗検定  【青木繁伸】 2008/02/12(Tue) 11:53

> ボックスのM検定ではなぜF検定ではなくカイ二乗検定を使用するのか

F検定とかカイ二乗検定というのは,それぞれF分布,カイ二乗分布を用いる検定というほどの意味しかない曖昧な呼び方だと思います。

Box の M 検定は,P値を求める際には F 分布が使われるようですが,書き間違いですか?
(ある検定統計量がある分布に従うからP値の計算にはその分布が使われるというのは,不思議でも何でもなく,その検定統計量がなぜその分布に従うのかは,その検定の提唱者なりがいろいろ研究した成果なのでしょうね)

色々調べると,カイ二乗分布を用いると書いてあるものもある。もう少し調べてみよう。

No.05823 Re: F検定とカイ二乗検定  【tarou】 2008/02/12(Tue) 14:12

御教示ありがとうございました。
今一度調べてみます。

No.05824 Re: F検定とカイ二乗検定  【青木繁伸】 2008/02/12(Tue) 15:44

カイ二乗分布を使うのは近似(どれかの群のサンプルサイズが20以上のとき)
F分布を使うのがより正確な近似のようです。
以下は,ftp://ftp.spss.com/pub/spss/statistics/spss/algorithms/ap14boxm.pdf
によるプログラム例です
> BoxM <- function(df) # 群を表す factor が最終列
+ {
+ nc <- ncol(df)
+ gvar <- df[,nc]
+ ni <- table(gvar)
+ n <- length(gvar)
+ g <- length(ni)
+ yij <- df[,-nc]
+ r <- ncol(yij)
+ y <- split(yij, df[,nc])
+ Si <- lapply(y, var)
+ log.det.Si <- sapply(Si, function(x) log(det(x)))
+ S <- sapply(y, function(x) (nrow(x)-1)*var(x))
+ S <- matrix(rowSums(S), r, r)/(n-g)
+ M <- (n-g)*log(det(S))-sum((ni-1)*log.det.Si)
+ f1 <- (g-1)*r*(r+1)/2
+ rho <- 1-(2*r^2+3*r-1)/(6*(r+1)*(g-1))*(sum(1/(ni-1))-1/(n-g))
+ tau <- (r-1)*(r+2)/(6*(g-1))*(sum(1/(ni-1)^2)-1/(n-g)^2)
+ f2 <- (f1+2)/abs(tau-(1-rho)^2)
+ gamma <- (rho-f1/f2)/f1
+ F <- M*gamma
+ p <- pf(F, f1, f2, lower.tail=FALSE)
+
+ chisq <- M *rho
+ pchi <- pchisq(chisq, f1, lower.tail=FALSE)
+ return(c(M=M, F=F, df1=f1, df2=f2, p=p, chisq=chisq, df=f1, p=pchi))
+ }
> df0 <- structure(list(g1 = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
+ 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), x1 = c(2L, 1L, 2L, 3L,
+ 2L, 2L, 3L, 2L, 3L, 2L, 4L, 3L, 2L, 5L, 4L, 3L, 4L, 5L, 6L, 5L
+ ), x2 = c(3L, 2L, 1L, 2L, 3L, 4L, 3L, 3L, 3L, 4L, 5L, 6L, 5L,
+ 5L, 5L, 4L, 3L, 4L, 5L, 6L), x3 = c(2L, 1L, 2L, 3L, 4L, 5L, 6L,
+ 2L, 3L, 4L, 5L, 6L, 3L, 2L, 1L, 2L, 3L, 5L, 6L, 7L), g2 = c(1L,
+ 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L,
+ 3L, 1L, 2L)), .Names = c("g1", "x1", "x2", "x3", "g2"),
+ class = "data.frame", row.names = c(NA, -20L))
> BoxM(df0[,c(2:4,1)])
M
5.9985025

F df1 df2 p
0.8166846 6.0000000 2347.4716981 0.5568091

chisq df p
4.9154395 6.0000000 0.5547036

No.05825 Re: F検定とカイ二乗検定  【tarou】 2008/02/12(Tue) 18:18

カイ二乗分布とF分布の違いはサンプル数の違いによるものなんですね。
F分布を用いて等分散性の検定もおこなってみようとおもいます。
御教示ありがとうございました。

No.05826 Re: F検定とカイ二乗検定  【青木繁伸】 2008/02/12(Tue) 18:30

おわかりになっているのかどうか判断がつきかねるので,老婆心ながら

Box の M 検定は分散共分散行列の同等性の検定です(まあ,多変量版ですね)

一変量の等分散性の検定(二群なら等分散性の検定,三群以上ならバートレットの検定とかlevene検定)とは異なるものです。

また,カイ二乗分布を使う分散の検定とは,分布の差の検定を意図しているのかも知れませんが,分布の差の検定は等分散の検定とイコールではありません。

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