No.05743 ランダムであるかの検定  【やまだ】 2008/02/07(Thu) 13:06

繁殖する鳥の40巣を1日1回チェックして,どのくらいの巣に鳥が餌を持ってきたかを調べました(餌がないときは鳥は帰っ てきません)。結果をグラフにすると(=餌を持って帰った巣/40巣,つまり餌持ちの巣の%),分布にばらつきが多いようなので,巣間における同調はみら れていないようですが,あくまで目で見ての判断ですので,それを統計的に示したいと考えています。
そのため,この現象にバラツキがあるのかないの かを調べるために検定をしたいのですが,どのような方法が良いのか分かりません。周りからは,ランダム性の検定がいいのでは?とアドバイスを受けました が,私が調べた限り,Fisher's exact testなど複数の群間でのものであるため,私のケースには当てはまりません。また,連検定では,1か0の比較のため,%で出している私のデータには使え ません。
このようなケースではどのような方法で検定を行うのが良いのでしょうか?私のデータは,最小値が0で最大値が100,1ヶ月間毎日記録し たので,30,0,100,77・・・と30個(30日分)分のデータがあります。これが群内で同調が起きる場合は,より100に近いもしくはより0に近 いと期待できます。今回のデータは0〜100の間にまんべんなく(見る限り)分布しているので,ランダムであると思われます。
どうかご教授いただけたら幸いです。よろしくお願いいたします。

No.05744 Re: ランダムであるかの検定  【青木繁伸】 2008/02/07(Thu) 13:23

一様性の検定で良いのではないでしょうか?
「餌持ちの巣の%」をデータとしているけど,「餌を持って帰っ た巣」の数は記録できているのでしょうから,その数が日にちに限らず一様かどうかの検定を行えばよいと思いますよ。これは,他の例だと,ある県で発生した 交通事故死亡が一様に発生しているかどうかとか,月別の出生数の分布が一様かどうかとか,5分間あたりのホームページ呼び出し数が一様であるかどうかなど の分析と同じではないでしょうか?

山口県の月別交通事故死亡数データ(平成17年?)

> x <- c(9,7,4,12,9,9,6,12,3,8,13,16)
> chisq.test(x)

Chi-squared test for given probabilities

data: x
X-squared = 17.5556, df = 11, p-value = 0.09248
うむ。一様なようだ。

No.05766 Re: ランダムであるかの検定  【やまだ】 2008/02/08(Fri) 09:52

ご回答をいただきまして,ありがとうございます。
Functionまでのせていただいて,R初心者の自分にはありがたかったです。
結果は以下のようになりましたので,私のデータは一様なようです。

Chi-squared test for given probabilities
data: x
X-squared = 481.1352, df = 57, p-value < 2.2e-16

実は,ご回答を拝見する前に,知人から意見をもらっていたのですが,それによるとランダマイゼーションテストをするべきであるとのことです。それが興味深い意見だったので,他の方の意見も聞けたらと思いで,ご紹介します。

ま ず,自分のデータは,鳥が餌を持って帰巣するコロニー内における割合を対象としているので,データは0−100になります。巣間同士の同調が見られる場 合,帰巣の割合は,100もしくは0に近い数字が期待できます。ですから,4分割したときに (G1:0−25,G2:25−50,G3:50−75,G4:75−100),G1およびG4に集中すると考えられます。
逆に,同調が見られず,帰巣がランダムである場合,モンテカルロシミュレーションから得られた分布と等しいか近いものになると期待できます。

そ こまでは理解できるのですが,そのシミュレーションによって出された膨大な量のランダムな値と,自分の観察データがどのようにリンクするかがわかりませ ん。シミュレーションで出された値の平均値と観察値をひかくするというものですが,どのように検証することができるのか,どうにもわかりません。それと も,このような方法は一般的なのでしょうか?どう思われますか?

長くなりましたが,今回の質問は,自分のケースにはこのシミュレーションを用いたランダマイゼーションテストが必要なのか?(chi-squareで事足りるなら,わざわざそのような面倒なことをすることはないと思います),ということです。

今回,はじめてRを使うことになり不慣れな点が多いのですが,アドバイスをいただけたらありがたいです。どうぞよろしくお願いいたします。

No.05768 Re: ランダムであるかの検定  【青木繁伸】 2008/02/08(Fri) 10:54

ランダマイゼーション・テストというのは検定の(前段階の)仕組みに特徴を持つもので,実際の検定部分(観察された事象より極端な事が起こる確率はいくつかということ)は別の所にあります。
ラ ンダマイゼーションは,実際に観察されたデータを母集団とみなしあらゆる並べ替えを行って,その都度得られるデータを標本データとして検定統計量を計算 し,その分布を調べる。その後,実際に観察されたデータについても同じ検定統計量を計算し,その検定統計量を超えた確率を求め,P値とするということで しょう。
度数分布が理論比に従うかについての検定であれば,
http://aoki2.si.gunma-u.ac.jp/R/gft.html
に 示したものがその一つの例でしょう。ここに示したプログラムは,合計がサンプルサイズになる全ての度数分布表を発生させ(ランダマイゼーション),それぞ れの度数分布表についてカイ二乗検定統計量を計算し,事前に計算しておいた観察データの度数分布表でのカイ二乗値より大きいものが見つかるとその度数分布 表の生起確率を累積していきます。そして,累積した生起確率がP値になるというものです。
検定統計量はカイ二乗検定統計量でなくても,1標本コルモゴロフ・スミルノフ検定統計量でも,あるいはそのほか適切に定義した統計量でも構わないと言うことです。
なお,一般にサンプルサイズが大きくなるとランダマイゼーションの部分で計算時間が膨大になるため注意が必要です。もっとも,そのような場合にはランダマイゼーション自体が不要(漸近近似検定で十分)ということが多いだろうということは言えるでしょう。

No.05781 Re: ランダムであるかの検定  【やまだ】 2008/02/08(Fri) 21:48

わかりやすい回答をありがとうございます。あいまいな部分がすっきりいたしました。

度数分布が理 論比に従うかの検定ですが,Rを使ってExact test(gft)をただいま解析中です。現在,20時間ほど経過していますが,未だに終わっていません(サンプル数58)。実際に観察された1群のデー タしか入れていないので,Exact testはできないのではと思っていたのですが,R上で計算してくれるということに驚きました。(じゃあ,なぜそもそも解析をはじめたのか?というと,走 らせてから調べているうちに,そのようなことに気づきました)。いただいたアドバイスにより問題ないことがわかりましたので,このまま解析を続けることに します。

ただとても時間がかかっているので,”ネット上でできる”Exact test Test of goodness of fitnessを試したいと思うのですが,入力ルールがよくわからないので,質問させていただけたらと思います。
まず,最初のページのカテゴリー数ですが,2−20となっていますが,自分のデータは1カテゴリーでも,2といれるのでしょうか?(それとも1カテゴリーには使えませんか?)
次に理論比の指定は,一様にしました。
次の観察度数ですが,これはサンプルサイズ(58)を入れるのだと思います(自分の場合は,観察した日数。1日の帰巣割合のランダム性を知りたいため))。第2カテゴリーは空欄にします。
そうすると結果が,観察度数:58,期待値:29,理論比:0.5と出力され,統計量,df,P値も出してもらえました。しかしこれには,自分の入れたいランダムである数字の範囲(0〜100)は入りません。理論比が0.5というのも奇妙です。

上記の作業に何か誤り,もしくは前段階の解析が必要なのでしょうか?
わざわざ使いやすいように掲載しているプログラムにこのような初歩的な質問で恐縮なのですが,ご教授いただけたらありがたく思います。
どうぞよろしくお願いいたします。

No.05782 Re: ランダムであるかの検定  【青木繁伸】 2008/02/08(Fri) 22:02

計算時間が掛かっているようなら,それはたぶん1日や2日計算を続行すればよいと言うものではないという可能性も高いでしょう。

まずは,テストデータをそのまま入れて,どのくらい時間が掛かるものかを見積もって置くのがよいでしょう。通常,我慢のできる範囲内で答えが出ないなら,それは待ったも無駄ということに他なりません。

たとえば「山口県の月別交通事故死亡数データ(平成17年?)」なら,カテゴリー数として12,次の画面で12個の入力セルに以下の12個の数値を入力します
9,7,4,12,9,9,6,12,3,8,13,16
ただ,!!,このテスト例を入れても,答えはすぐには得られないでしょう。
いつまでも画面がそのままで,実際はWebサーバーのタイムアウトになってしまいます(タイムアウトになったという通知すらも受け取れません。。。。申し訳ない)

例に示したように,あなたのデータも。40個の巣の状況の生データをそのまま入れる必要があります。ここは,ご注意!

データを適正に入力しても,少なくとも20分待っても答えが出ないなら,あきらめた方が良いです。スミマセン!

そして,たぶん,そのような場合には,カイ二乗分布を用いる,漸近近似検定で十分なのだと思います。

総括すれば,ランダマイゼーション検定はサンプルサイズが小さいときにしか適用できません。
計算時間はサンプルサイズのべき乗や階乗のオーダーで増えるので,地球の寿命が終わるまでに計算が終了しないことが明らかな場合だってあるのです(^_^)

No.05784 Re: ランダムであるかの検定  【やまだ】 2008/02/08(Fri) 23:30

回答をありがとうございます。とてもわかりやすかったです。

自分の場合は,最初に教えていただいた一様性の検定で,一様である(ランダム)ことがわかっていますので,この結果を用いたいと思います。

このたびは本当に勉強になりました。ありがとうございます。

No.05816 Re: ランダムであるかの検定  【やまだ】 2008/02/12(Tue) 09:57

解決した問題への追加の質問で恐縮なのですが,どうぞよろしくお願いいたします。

回答いただいた
> ランダマイゼーションは,実際に観察されたデータを母集団とみなしあらゆる並べ替> えを行って,その都度得られるデータを標本データとして検定統計量を計算し,その> 分布を調べる。その後,実際に観察されたデータについても同じ検定統計量を計算し,その検定統計量を超えた確率を求め,P値とするということでしょう。

に ついてなのですが,色々な解説を読みながら,P値の出し方を調べていたところ,サンプルサイズの問題に気づきました。自分のデータは,育雛中の巣のみを対 象としているため,サンプルサイズに毎日ばらつきがあるのです。最初の投稿では,40巣と書いてしまいましたが,それは日にちによって利用中の巣の数が変 わることを考慮するのを忘れていたためです。この場合は,教えたいただいたランダマイゼーションテストの結果のそれぞれにカイ二乗統計量を出して,実際に 観察されたデータのカイ二乗検定量を比較するという方法は使えないのではないかと思います。

そこに気づいてから,サンプル数が日ごとに異なるケースの統計デザインについて調べているのですが,未だに良い方法が見つかりません。
このような場合はどのような方法がふさわしいでしょうか?
Rを使った方法も併せてご教授いただけたら幸いです。どうぞよろしくお願いいたします。

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