No.00830 分割表解析におけるオッズ比とP値  【時雨】 2006/08/03(Thu) 15:35

はじめまして,時雨と申します。

ある疾患の原因となる因子を探すために,患者とコントロールを集めて,
因子を持つ持たないで分割表解析を行っています。因子の有意性を
示すためにオッズ比と,フィッシャー正確検定によるP値の算出を
行っていて,オッズ比はその信頼区間に1が含まれなければ有意,
フィッシャー正確検定はP値が0.05以下なら有意としています。
両方の判断基準の結果が共通ならばいいのですが,えてしてオッズ比で
有意となってもP値が有意でないということがおき,判断に困っています。
自分は当初,P値のみを見ていたのですが,医療統計においてはオッズ比を
使うらしく,どうするべきか悩んでおります。

アドバイスいただければ幸いです。どうぞよろしくお願いします。

No.00831 Re: 分割表解析におけるオッズ比とP値  【青木繁伸】 2006/08/03(Thu) 15:42

オッズ比とフィッシャーの正確検定は見ているところが違うので,検定結果が異なる場合が出てきても何の不思議もない。

関連の度合いを見るのかオッズ比を見るのか,貴方にはどちらが望まれているのか考えるべきでしょう。

No.00836 Re: 分割表解析におけるオッズ比とP値  【時雨】 2006/08/04(Fri) 17:31

青木様,レスありがとうございます。

疾患の有無と因子の有無の関連の度合いをみたいので,フィッシャー正確検定
によるp値がその場合には最適だと思っていました。ただ,その場合オッズ比は
何を見るために使うのでしょうか? 自分は両方とも関連の度合いを
見る検定だと現在思っているのですが,違うのでしょうか?
両検定の違いがあまりよくわかっていません・・・。

初歩的な質問で申し訳ございませんが,どうぞよろしくおねがいします。

No.00837 Re: 分割表解析におけるオッズ比とP値  【青木繁伸】 2006/08/04(Fri) 18:04

> オッズ比は何を見るために使うのでしょうか?

教科書を開くか,google で検索してみましょう
例えば,簡単な解説は
http://www.inetmie.or.jp/~kasamie/EstrogenALZasahi.html

No.00839 Re: 分割表解析におけるオッズ比とP値  【青木繁伸】 2006/08/04(Fri) 19:19

オッズ比およびその信頼区間の計算方法は一通りではないのです。

R の fisher.test は,
> fisher.test(matrix(c(9,1,2,4),2,2))

Fisher's Exact Test for Count Data

data: matrix(c(9, 1, 2, 4), 2, 2)
p-value = 0.03571
alternative hypothesis: true odds ratio is not equal to 1
95 percent confidence interval:
0.8521274 972.4278684
sample estimates:
odds ratio
14.00425

という結果になります。確かに p 値と,信頼区間が 1 を含むかどうかが一致していません。
alternative hypothesis: true odds ratio is not equal to 1
と書かれているのも気にくわないのだが,疫学の教科書なんかに書かれている定義に基づいて以下のような関数を書いてみると
> odds.ratio
function(a, b, c, d, correct=FALSE)
{
cl <- function(x)
{
or*exp(c(1, -1)*qnorm(x)*sqrt(1/a+1/b+1/c+1/d))
}
if (correct || a*b*c*d == 0) {
a <- a+0.5
b <- b+0.5
c <- c+0.5
d <- d+0.5
}
or <- a*d/(b*c)
list(or=or, cl90=cl(0.05), cl95=cl(0.025), cl99=cl(0.005),
cl999=cl(0.0005))
}
これによれば上のデータについての結果は,
> odds.ratio(9,1,2,4)
$or
[1] 18

$cl95
[1] 1.241771 260.917569
という結果が得られ,信頼区間が 1 を含まずめでたしめでたしとなる。

No.00841 Re: 分割表解析におけるオッズ比とP値  【時雨】 2006/08/04(Fri) 20:16

青木様,レスありがとうございます。

教えていただいた解説を見たのですが,よく理解できませんでした・・・。
計算にはRを用いておらず,青木様の書かれたプログラムと計算式は同じものを
C言語で書き,実行しています。それでも,違う結果を示すものがいくつも
出てきてしまいました。

私は以下のページでオッズ比とカイ二乗検定との使い分けを見たのですが,
http://dr-urashima.jp/pdf/how-kaini.pdf
このサイトでは,カイ二乗検定より情報量の多い結果がオッズ比からは
得られる,とありました。ゆえに,オッズ比はカイ二乗検定の詳しいもので
あると考えられるので,両者の結果に違いがあるというのがよくわからず,
検定の結果が矛盾するという意味がよくわからなかったのです。

本当に申し訳ないのですが,p値では有意でないのにオッズ比では有意という
ケース,また逆のケースにおいては,それぞれ「因子が疾患に統計学的に
有意に関係している」ということができるのか教えていただけませんか?

No.00842 Re: 分割表解析におけるオッズ比とP値  【青木繁伸】 2006/08/04(Fri) 22:24

> それでも,違う結果を示すものがいくつも出てきてしまいました

そのような例を,精査してみましたか?
有意か有意でないか,境界線ぎりぎりのケースではないでしょうか?

> p値では有意でないのにオッズ比では有意というケース,また逆のケースにおいては,それぞれ「因子が疾患に統計学的に有意に関係している」ということができるのか

別 のスレッドにもありましたが,順位相関係数はケンドールとスピアマンの二通りあり,使い分けをどうするかということでしたが,目的は相関を見ると言うこと なのですが,定義が違う。有意な相関かどうかの検定では多くの場合にはどちらも同じ結果を与えるのだが,有意水準に近い場合には片方が有意でもう一方が有 意でないということもあるのです。しかし,だからといってどちらが正しいとか望ましいというものではない。

> カイ二乗検定より情報量の多い結果がオッズ比からは得られる

というのは実際正しいでしょう。
オッズ比が1ということは,カイ二乗統計量が0ということですが,オッズ比の持つ本来の意味はカイ二乗統計量は持っていませんから。

しかし,だからといって

> オッズ比はカイ二乗検定の詳しいものである

という見解は,私は少し納得できません。目的が違う統計量なのだから比較することが無意味と思います。

なお,2×2分割表の形式で表されるデータの検定は他にもあります。
二つのカテゴリーを 0/1 で表現し,これを二変量データとみてピアソンの積率相関係数を計算します。そうすると,無相関検定を適用することになります。
な お,ピアソンの積率相関係数は連続性の補正を行わないカイ二乗検定(独立性の検定)での統計量をサンプルサイズで割ったものの平方根(φ係数)と同じ値に なりますが,無相関検定の結果はカイ二乗検定と同じにはなりません。カイ二乗検定は,漸近近似検定ですが,fisher.test が単純にその正確なバージョンというわけではありません。
また,2×2分割表の片方の変数を群と見て,もう一方の変数を 0/1 データとみれば,平均値の差の検定を行うこともできますが,この検定結果もまた別のものになります。

要するに,検定統計量の定義が異なれば,同じデータに対して検定しても,P値が同じになるわけではないということです。

# ちょっと別のことなんですが,掲示板に書き込むときにはリターンキーは段落の最後の文章の後でだけ押すようにしましょう。ワープロで文章を作るときと同じ ですよね。自分でリターンキーを押して改行すると,ウインドウサイズが違うときに,中途半端な改行になってしまいます。どんな風になるかは,自分でウイン ドウサイズをいつもより大きくしたり小さくしたりしてみればすぐに分かるでしょう。

No.00844 Re: 分割表解析におけるオッズ比とP値  【青木繁伸】 2006/08/05(Sat) 17:13

842 を訂正。平均値の差の検定(どちらの変数を群と考えても同じ)と,ピアソンの積率相関係数とスピアマンの順位相関係数の無相関検定の4つは,同じP値を返します。
> (x <- m$x)
[1] 1 1 1 1 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 2 2 2 2 2
> (y <- m$y)
[1] 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2
> (t <- table(x, y))
y
x 1 2 # このような 2×2 分割表のデータを集計することになる
1 4 9
2 7 5
> fisher.test(t)$p.value # フィッシャーの正確確率検定
[1] 0.237744
> chisq.test(t, correct=FALSE)$p.value # 独立性の検定(連続性の補正なし)
[1] 0.1654035
> t.test(y ~ x, var.equal=TRUE)$p.value # 平均値の差の検定 xが群
[1] 0.179388
> t.test(x ~ y, var.equal=TRUE)$p.value # 平均値の差の検定 yが群
[1] 0.179388
> wilcox.test(y ~ x)$p.value # ウィルコクソンの順位和検定 x が群
[1] 0.1843456
> wilcox.test(x ~ y)$p.value # ウィルコクソンの順位和検定 y が群
[1] 0.1843456
> cor.test(x, y, method="pearson")$p.value # ピアソンの積率相関係数
[1] 0.179388
> cor.test(x, y, method="spearman")$p.value # スピアマンの順位相関係数
[1] 0.179388
> cor.test(x, y, method="kendall")$p.value # ケンドールの順位相関係数
[1] 0.1741149

No.00847 Re: 分割表解析におけるオッズ比とP値  【NA】 2006/08/06(Sun) 13:36

信頼区間は検定を基礎に構成されます。すなわち,観測データによって棄却されない母数の値(その値を帰無仮説とし て検定を行ったとき検定が有意にならない母数値)の全体です。したがって,ある検定法によって仮説(ある母数値)が棄却されることと,その値が(その検定 を基礎に作られる)信頼区間に含まれないことは,同値になります。

ご質問のケースでは,検定はいわゆる Fisher'exact test です。一方,オッズ比の信頼区間をつくるアルゴリズムは,おそらく,正規近似を使った検定を基礎にするものだと思われます。したがって,仮説:オッズ比=1 に対する結論が違うこともあり得ます。

異なった結論を得たときどちらを信じるかは,検定法の選択の問題であり,もし論文を投稿されるのであれば,その雑誌の方針に従えばよいのではないかと思います。

なお,オッズ比の検定とは,仮説 r=(p_1/q_1)/(p_2/q_2) = r_0 の検定です。
これに対する Exact test は, X_1 が B(n_1,p_1), X_2 が B(n_2,p_2) と仮定すると,条件「T=X_1+X_2」の下で,X_1 の,条件付分布が攪乱母数(p_1)に依存しないことを利用する検定です。
オッ ズ比 r=r_0=1 の場合,条件付分布は超幾何分布で,p 値はこれから求めます。これを Fisher の exact test とよんでいます。一般の r_0 のときにも(r_0 毎に分布が違いますが)条件付分布を(数値的に)求めることができます。(この分布を非心超幾何分布とよんでいる論文があります)。
このような検定を implement したソフトも(私はよく知りませんが)探せばあるのではないかと思います。

No.00852 Re: 分割表解析におけるオッズ比とP値  【時雨】 2006/08/08(Tue) 14:39

 青木様,NA様,レスありがとうございます。返信が遅くなってしまい,申し訳ございません。

  「「疾患と因子の関係性を調べる検定」ということでも,個々の検定はそれに完全に合致することはなく,微妙にずれている。それゆえ,それらの検定を実行し た結果は,おおむね同じような傾向を示すけれども,完全に一致することはなく多少のずれが生ずる。よって,判定がきわどい場合には,検定手法によって結果 が違ってくる。どの検定手法を選ぶかは,その検定の本来の目的に現在の自分のやりたいことの目的がより合致しているもの,もしくは,投稿誌で規定されてい るほうを選ぶようにすればよい」
ということですね。


:青木様
Rの実行結果まで示していただき,ありがとうございます。
>有意か有意でないか,境界線ぎりぎりのケースではないでしょうか?
オッズ比OR[信頼区間]とフィッシャー正確検定のP値は,一例を挙げると以下のようになっていました。
 ・25.38[3.13-205.78], p=0.10005
 ・19.64[2.39-161.28], p=0.16333
信頼区間が非常に広いのが気になるのですが,1からは離れております。ただ,P値がぎりぎりといえるのかは疑問です。ぎりぎりとは数字的にはどれくらいのところを言うのでしょうか?

:NA様
 条件付分布,オッズ比の検定についての細かい解説ありがとうございます。
  オッズ比検定とフィッシャー正確検定を「目的は同じだが,方法はまったく別々のもの」と捕らえていたのですが,むしろ「方法は非常に関連性が強いが目的が 多少違うもの」なのですね。条件付分布に超幾何分布を仮定するということが,オッズ比=1を仮定することだというのは,言われればそのとおりなのですが, お恥ずかしながらしっかり理解できていませんでした。ありがとうございます。
 オッズ比の仮定を変えていけば,超幾何分布以外の様々なものを条件付き分布にできるのですね。具体的には,ほとんどすることはないけれども,オッズ比=3がデフォルトなどというケースを想定するということでしょうか?

No.00853 Re: 分割表解析におけるオッズ比とP値  【青木繁伸】 2006/08/08(Tue) 14:56

> オッズ比OR[信頼区間]とフィッシャー正確検定のP値は,一例を挙げると以下のようになっていました。
> ・25.38[3.13-205.78], p=0.10005
> ・19.64[2.39-161.28], p=0.16333

もとの2×2分割表を提示して下さい

> 方法は非常に関連性が強いが目的が多少違うもの

オッズ比を計算する方法はいくつかあります。R で採用されているのは,超幾何分布を当てはめて最尤推定するというものです。
フィッシャーの検定で超幾何分布を利用するのは,分割表の生起確率を計算するときです
Fisher's exact test は,観察された分割表の生起確率より小さいものを全部足したものが P 値であるとするものです。
観察された分割表がより極端なものであると判断する基準は,単純な生起確率の他,ピアソンのカイ二乗統計量やG2統計量があります。オッズ比を基準にすることもできますね。。結局それは,それぞれの検定法の正確なバージョンということですね。

No.00920 Re: 分割表解析におけるオッズ比とP値  【時雨】 2006/08/18(Fri) 16:48

青木様,レスありがとうございます。返信が遅れてしまい申し訳ございません。

プログラムの見直 し,および確認実験を行っていたところ,P値とORが激しく異なるものは,入力の数値をセットするプログラムが間違っていたせいだとわかりました。お騒が せしてしまい申し訳ございません。いくつかはp値とORが矛盾するものがありましたが,いずれも境界のラインのところでした。

検定法についての解説もありがとうございます。ようやく理解が進んできました。また質問することもあるかと思いますが,その際はどうぞよろしくお願いします。

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