★ 3*3のテーブルでトレンドがあるとき ★

 169 3*3のテーブルでトレンドがあるとき  ざーさい  2002/12/12 (木) 00:01
  173 Re: 3*3のテーブルでトレンドがあるとき  青木繁伸  2002/12/12 (木) 13:03
   203 Re^2: 3*3のテーブルでトレンドがあるとき  青木繁伸  2002/12/14 (土) 00:36
   175 Re^2: 3*3のテーブルでトレンドがあるとき  ざーさい  2002/12/12 (木) 15:57
    176 Re^3: 3*3のテーブルでトレンドがあるとき  青木繁伸  2002/12/12 (木) 16:45
     180 Re^4: 3*3のテーブルでトレンドがあるとき  ざーさい  2002/12/12 (木) 21:13
      181 Re^5: 3*3のテーブルでトレンドがあるとき  青木繁伸  2002/12/12 (木) 21:17
       185 Re ctest  ざーさい  2002/12/12 (木) 23:54
        188 Re: Re ctest  青木繁伸  2002/12/13 (金) 10:37
         194 Re:関数の覚え方  ざーさい  2002/12/13 (金) 18:13


169. 3*3のテーブルでトレンドがあるとき  ざーさい  2002/12/12 (木) 00:01
手元に3*3のテーブルで
列はカテゴリーA,B,C
行は1,2,3のオーダーになっています。

これをカイ2乗ではなくて,オーダーの性質を生かした検定
したいと思っているのですが,
なにかいい方法ありませんでしょうか?

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


173. Re: 3*3のテーブルでトレンドがあるとき  青木繁伸  2002/12/12 (木) 13:03
> これをカイ2乗ではなくて,オーダーの性質を生かした検定
> したいと思っているのですが,
> なにかいい方法ありませんでしょうか?

クラスカル・ウォリス検定でよろしいのではないでしょうか。
分割表形式のデータを取り扱えるようにプログラムを書いてもよいし,R が用意している kruskal.test を使うとすれば,分割表からデータを生成すればいいですね。
kw3.test <- function(d)
{
    g <- v <- NULL
    for (i in 1:nrow(d)) {
        for (j in 1:ncol(d)) {
            g <- c(g, rep(i, d[i, j]))
            v <- c(v, rep(j, d[i, j]))
        }
    }
    kruskal.test(v, g)
}

使用例
行が各群を表すような分割表の場合

d <- matrix(c(10, 5, 1,  4, 7, 3,  2, 4, 9), byrow=TRUE, ncol=3)
kw3.test(d)

出力結果

    Kruskal-Wallis rank sum test

data:  v and g 
Kruskal-Wallis chi-squared = 12.4173, df = 2, p-value = 0.002012

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


203. Re^2: 3*3のテーブルでトレンドがあるとき  青木繁伸  2002/12/14 (土) 00:36
分割表形式でデータを与えてクラスカル・ウォリス検定を行う関数
kw4.test <- function(tbl)
{
    nc <- ncol(tbl)
    n <- sum(ni <- apply(tbl, 1, sum))
    tj <- apply(tbl, 2, sum)
    rj <- c(0, cumsum(tj)[-nc])+(tj+1)/2
    Sx <- 12*sum((tbl%*%rj)^2/ni)/(n*(n+1))-3*(n+1)
    S0 <- Sx/(1-sum(tj^3-tj)/(n^3-n))
    df <- nrow(tbl)-1
    P <- pchisq(S0, df, lower=F)

    result <- c(S0, df, P)
    names(result) <- c("Chi sq.", "d.f.", "P value")
    result
}

# 3 群,4 順序カテゴリの場合
tbl <- matrix(c(
    9, 5, 1, 2,
    4, 3, 2, 4,
    2, 3, 1, 8
    ), byrow=TRUE, ncol=4)
kw4.test(tbl)

# 結果
#    Chi sq.       d.f.    P value
# 8.17217921 2.00000000 0.01680482

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


175. Re^2: 3*3のテーブルでトレンドがあるとき  ざーさい  2002/12/12 (木) 15:57
> クラスカル・ウォリス検定でよろしいのではないでしょうか。

ありがとうございました。

> kw3.test <- function(d)

関数も早速使わせてもらいました。
分割表から生データを作る方法も勉強になりました。

ところで,3*3に限らずm*nでこの関数はつかえそうですが,どうして
kw3と3という数字がついているのでしょうか?

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


176. Re^3: 3*3のテーブルでトレンドがあるとき  青木繁伸  2002/12/12 (木) 16:45
> ところで,3*3に限らずm*nでこの関数はつかえそうですが,どうして
> kw3と3という数字がついているのでしょうか?

私が作ったクラスカル・ウォリス検定関係の関数の番目というだけです(^_^;)

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


180. Re^4: 3*3のテーブルでトレンドがあるとき  ざーさい  2002/12/12 (木) 21:13
> kw3と3という数字がついているのでしょうか?
>
> 私が作ったクラスカル・ウォリス検定関係の関数の番目というだけです(^_^;)

失礼いたしました。

あとRを使い始めたばかり方々のための補足としては
青木先生の関数を使うためにはctestといういろいろな検定の関数が
パッケージになったものをloadしなければなりません。
Windowsであれば,etcというフォルダのRprofileというファイルに
library(ctest)と一行加えておけば毎回起動時にloadされるようになります。

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


181. Re^5: 3*3のテーブルでトレンドがあるとき  青木繁伸  2002/12/12 (木) 21:17
> あとRを使い始めたばかり方々のための補足としては
> 青木先生の関数を使うためにはctestといういろいろな検定の関数が
> パッケージになったものをloadしなければなりません。
> Windowsであれば,etcというフォルダのRprofileというファイルに
> library(ctest)と一行加えておけば毎回起動時にloadされるようになります。

あれ,Windows ではそうなのですか?
Macintosh ではなんにもしなくても,最初から使えます。
また,UNIX マシン上で make したシステムでも,何にもしないで使えていますが....

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


185. Re ctest  ざーさい  2002/12/12 (木) 23:54
> あれ,Windows ではそうなのですか?

小生のWindows版 R1.6.1とR1.5.1では両方ctestはloadしなければ
なりませんでした。

どこかでctestは最近デフォルトになっとという表現を記憶はありますが,,,
?library の例にある
library(lib = .Library) # list all packages in the default library

でデフォルトのパッケージを調べるとctestも入っているのですが,
なぜかロードしないとctest使えるようになりません。???

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


188. Re: Re ctest  青木繁伸  2002/12/13 (金) 10:37
> なぜかロードしないとctest使えるようになりません。???

Windows マシンをラックから引っ張りおろして,開けてみたら 1.4.1 しかはいってなかったですが,起動後何もしないでも ctest は使えています。

1.6.1 にバージョンを上げて同じようにやっても,結果は同じでした。

一度,全部消去して,セットアップし直してみてはいかがでしょうか。

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


194. Re:関数の覚え方  ざーさい  2002/12/13 (金) 18:13
> 一度,全部消去して,セットアップし直してみてはいかがでしょうか。

セットアップしなおして直りました。

Functions for running WinBugs from R
http://www.stat.columbia.edu/~gelman/bugsR/
で .First をいじっていたのがいけなかったようです。
.Firstをやめて普通にsourceすると直りました。

ところで,たくさん自作の関数を作っている方,どのようにたくさんの関数を
覚えていらっしゃるのでしょうか?小生はつくっても,それをわすれて
しまったりします。なにかTipsとかありますでしょうか?

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


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