★ t検定と変数変換 ★

6706. t検定と変数変換 コロ 2005/05/19 (木) 17:00
└6708. Re: t検定と変数変換 青木繁伸 2005/05/19 (木) 17:13
 └6717. Re^2: t検定と変数変換 Hi☆Rose 2005/05/19 (木) 22:58
  └6719. Re^3: t検定と変数変換 コロ 2005/05/20 (金) 07:12
   └6721. Re^4: t検定と変数変換 青木繁伸 2005/05/20 (金) 11:10
    └6725. Re^5: t検定と変数変換 青木繁伸 2005/05/20 (金) 12:08
     └6729. Re^6: t検定と変数変換 コロ 2005/05/20 (金) 18:16
      └6730. Re^7: t検定と変数変換 青木繁伸 2005/05/20 (金) 18:57
       ├6769. Re^8: t検定と変数変換 マスオ 2005/05/24 (火) 01:04
       │└6770. Re^9: t検定と変数変換 青木繁伸 2005/05/24 (火) 10:03
       └6732. Re^8: t検定と変数変換 青木繁伸 2005/05/20 (金) 19:06
        └6734. Re^9: t検定と変数変換 コロ 2005/05/20 (金) 20:58


6706. t検定と変数変換 コロ  2005/05/19 (木) 17:00
ある集団で特定の体質を持つ群ともたない群に分けて生化学データに差がないか解析しています。
あるデータ群に対してlog(x+c)変換をしました。cの値は対象のデータの最小値が2となるような定数を引いてlog変換をして,t検定をしたのですが,こういった変数変換での検定は妥当なのでしょうか。
パラメトリックの頑健性を考慮して,ある定数を引かずにlog変換を行うべきかどうかで迷っています。

2群のnの差が10倍ほど違うため,ノンパラメトリックのU検定は使用しずらく,連続変量を見ているため,なるべくt検定を使うという方針でこのような変数変換手法を考えました。

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


6708. Re: t検定と変数変換 青木繁伸  2005/05/19 (木) 17:13
> こういった変数変換での検定は妥当なのでしょうか。
> パラメトリックの頑健性を考慮して,ある定数を引かずにlog変換を行うべきかどうかで迷っています。

変数変換を行う意図が正規性・等分散性の確保ということなら,いずれの変換がより正規性・等分散性を確保できているかという点で選択すればよろしいかと思います。
同程度ならば(同程度でなくても),理論的に考えてどちらが妥当か判断すべきでしょう。

> 2群のnの差が10倍ほど違うため,ノンパラメトリックのU検定は使用しずらく

使用しづらいというのはどういう理由ですか?

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


6717. Re^2: t検定と変数変換 Hi☆Rose  2005/05/19 (木) 22:58
> 変数変換を行う意図が正規性・等分散性の確保ということなら,いずれの変換がより正規性・等分散性を確保できているかという点で選択すればよろしいかと思います。
> 同程度ならば(同程度でなくても),理論的に考えてどちらが妥当か判断すべきでしょう。

例えば心理学ではRT(reaction time)(フラッシュが光ったらできるだけ早くボタンを押してもらうとき,フラッシュが光った瞬間からボタンが押されるまでの時間など)は,そのままのデータより,逆数が正規分布に従うとされています。
>最小値が2となるような定数を引いてlog変換をして
この必要性は分かりません。。。等分散性の確保でしょうか
>
> > 2群のnの差が10倍ほど違うため,ノンパラメトリックのU検定は使用しずらく
>
> 使用しづらいというのはどういう理由ですか?
t検定も使用しづらいような,,,

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


6719. Re^3: t検定と変数変換 コロ  2005/05/20 (金) 07:12
レスありがとうございます。

変数変換の目的は,正規分布,等分散性の確保です。最小値を0に近づけることにより,正規分布に近くなる又は正規分布になるためです。
等分散性もより確保しやすくなっています。
生化学データを扱い比較した論文では主に正規分布の確保のためにlog変換としか書いておらず,定数を引いた変数変換を行っているかどうか判断できなかったためです。

また,U検定,Welch検定では各群の数の差がないときにもっとも信頼性が高く,最大でも1.5倍以内が望ましいといくつかの本に書かれていたためです。これはt検定にもいえることなのでしょうか。

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


6721. Re^4: t検定と変数変換 青木繁伸  2005/05/20 (金) 11:10
最初の質問で,
> あるデータ群に対してlog(x+c)変換をしました。cの値は対象のデータの最小値が2となるような定数を引いてlog変換をして,

と,あるのですが,log(x-c) ですか。最小値が2になるようにというのは,変換後の最小値が2ですか?
log は自然対数と考えていいですね?

> 生化学データを扱い比較した論文では主に正規分布の確保のためにlog変換としか書いておらず,定数を引いた変数変換を行っているかどうか判断できなかったためです。

対数正規分布に従う変数が多いから,対数を取るのです。
対数正規分布が平行移動した分布というのは,理論的には何でしょうね。聞いたことがありませんが。

> また,U検定,Welch検定では各群の数の差がないときにもっとも信頼性が高く,最大でも1.5倍以内が望ましいといくつかの本に書かれていたためです。

例えばどんな本ですか。
私が何冊か見たところでは見つからなかったです。
正規近似に関連して,岩原信九郎「ノンパラメトリック法」日本文化科学社に
「一方の標本サイズが著しく大きい場合,正規近似 z は,z+(1/(10*n1)-1/(10*n2))(z^3-3) に修正する」
という記載はありましたが。

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


6725. Re^5: t検定と変数変換 青木繁伸  2005/05/20 (金) 12:08
R で以下のようなシミュレーションを行ってみました。
条件等でおかしなところがあったら指摘してください。
再計算したいと思います。

http://aoki2.si.gunma-u.ac.jp/R/index.html
にある,power.t.test2 を使うと,効果量 delta = (mean1-mean2)/sd = 0.4 として,50, 500 のアンバランスなデータの t 検定の power は
power.t.test2(n1=50, n2=500, delta=0.4,sig=0.05)
で 0.7679499 となる。

第1のシミュレーション
正規分布に従うデータ(これは,質問にあるようなデータを変数変換した後得られるもの)
これに対して t 検定を行う(理想的な条件)

n <- 50
loop <- 10000
count <- 0
for (i in 1:loop) {
x1 <- rnorm(n,mean=3.5,sd=0.5)
x2 <- rnorm(10*n,mean=3.7,sd=0.5)
if (t.test(x1,x2)$p.value < 0.05) count <- count+1
}
print(count/loop)

power は 0.7482 と,ほぼ理論値通りの値になる


第2のシミュレーション
観察データそのもの(対数正規分布であるが,下駄をはかされている +10)
これに対して t 検定を行う(正規性の保証がない,等分散性は大丈夫だろう)

count <- 0
for (i in 1:loop) {
x1 <- rnorm(n,mean=3.5,sd=0.5)
x2 <- rnorm(10*n,mean=3.7,sd=0.5)
y1 <- exp(x1)+10
y2 <- exp(x2)+10
if (t.test(y1,y2)$p.value < 0.05) count <- count+1
}
print(count/loop)

power は 0.749 と,あまりかわらない


第3のシミュレーション
第2と同じだが,マン・ホイットニーのU検定(ウイルコクソンの順位和検定)を採用する
検定効率を考えて,第2の場合より標本サイズを大きくする(n*π/3)
n <- floor(n*pi/3+1)
count <- 0
for (i in 1:loop) {
x1 <- rnorm(n,mean=3.5,sd=0.5)
x2 <- rnorm(10*n,mean=3.7,sd=0.5)
y1 <- exp(x1)+10
y2 <- exp(x2)+10
if (wilcox.test(y1,y2)$p.value < 0.05) count <- count+1
}
print(count/loop)

power は 0.7679 と,あまりかわらない(ちょっとだけ高いか?)

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


6729. Re^6: t検定と変数変換 コロ  2005/05/20 (金) 18:16
変数変換方法は 市原清志著 バイオサイエンスの統計学 にかかれている べき変換の方法を参考にしました。
logは自然対数で変換しました。最小値を2としたのはlog1が0となるため,一応2と仮定しました。また,同様な方法で他のデータ値を平方根変換をしたデータもあります。こういった変換手法に関して問題があるかどうか確信がもてなかったため質問をしました。

標 本数nの差が大きいとき,U検定,Welch検定で使いにくいと書いてある文献は,本ではなく,ネット上での統計学のページ関連で見かけたものでした。色 々なページを見たためそれがどこにあったか探し出せませんでした。申し訳ありません。書いてあったのはU検定,Welch検定それぞれ1箇所です。それ以 外に以下のページにはt検定でも各群の差がある場合は信頼性に問題があるとの記述がありました。

www.hs.hirosaki-u.ac.jp/pt/eiki/stat/qa/qadiff.html

Rによるシミュレーションを見る限り,信頼性はどちらでも同じ程度と解釈しました。ありがとうございます。

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


6730. Re^7: t検定と変数変換 青木繁伸  2005/05/20 (金) 18:57
> t検定でも各群の差がある場合は信頼性に問題があるとの記述がありました。
>
> www.hs.hirosaki-u.ac.jp/pt/eiki/stat/qa/qadiff.html

他の項目の記述に一部不適切な部分もあるようで,なんか信頼できないなぁ(^_^;)

永田靖「統計的方法のしくみ」日科技連
197ページのまとめに次のように書いてある
(1) t検定は等分散の仮定の下で構成されており,ウェルチの検定は等分散の仮定をおかないで構成されている。
(2) ウェルチの検定は近似的な検定である。
(3) t検定は,たとえ等分散が成り立っていなくても,2つのサンプルサイズがほぼ等しいなら正しい検定方法である。

(1) は誰でも肯定するであろう
(2) も肯定するであろう
(3) 確かにそうであろう。

しかし,等分散でなくて,二つのサンプルが等しくないなら,検定が不正確になるって,何が不正確になるか。P値なんでしょうけど。どのくらい不正確になるか。

194ページには,次のように書かれている。
「すなわち2つのサンプルサイズの比が2倍以上子となり,二つの(標本)分散の比が2倍以上異なれば,t検定とウェルチの検定の結果がかなり異なることも表28.1よりわかる。このような場合にはウェルチの検定を用いるべきである。」

全体のサンプルサイズが決まっているときには二群に等しくサンプルサイズを割り付ければ,もっとも検出力が高くなる。

不等分散の二群の平均値の差の検定の頑健性について岩原信九郎だったかと思うが,サンプルサイズの比が5以下なら普通のt検定を行ってよいとしていたと思うが,行方不明。

繁桝算男他「Q&Aで知る統計データ解析 Dos and DON'Ts」サイエンス社
P26 Question 13
2群の標本の大きさが非常に違うときでも,普通のt検定をしてもよいのでしょうか
答え
統計解析上は何ら問題はありません。(以降,頭数割り当てで検出力が最も高くなることなどの説明)

これに類する質問(サンプルのアンバランス)は,この掲示板でも FAQ


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


6769. Re^8: t検定と変数変換 マスオ  2005/05/24 (火) 01:04
> サンプルサイズの比が5以下なら普通のt検定を行ってよい

↑どうでしょうか.
問題は Type I errorのインフレ.
分散比の程度にもよると思いますが,

loop <- 10000
n1 <- 100; m1 <- 0; sd1 <- 1.5
n2 <- 500; m2 <- 0; sd2 <- 1.0

welch <- student <- u <- 0
for (i in 1:loop) {
x1 <- rnorm(n1, mean=m1, sd=sd1)
x2 <- rnorm(n2, mean=m2, sd=sd2)
if (t.test(x1, x2)$p.value < 0.05) welch <- welch+1
if (t.test(x1, x2, var.equal=TRUE)$p.value < 0.05) student <- student+1
if (wilcox.test(x1, x2)$p.value < 0.05) u <- u+1
}
c(Welch=welch, Student=student, Utest=u)/loop
Welch Student Utest
0.0507 0.1344 0.0907

n1 <- 100; m1 <- 0; sd1 <- 1.2
n2 <- 500; m2 <- 0; sd2 <- 1.0 のとき,
Welch Student Utest
0.0513 0.0856 0.0677

n1 <- 100; m1 <- 0; sd1 <- 1.5
n2 <- 200; m2 <- 0; sd2 <- 1.0 のとき,
Welch Student Utest
0.0491 0.0830 0.0677

普通のt検定(Student)は明らかに言い過ぎ.
U検定でもインフレが起こっている様子.

SDを入れ替えてやると,
n1 <- 100; m1 <- 0; sd1 <- 1.0
n2 <- 500; m2 <- 0; sd2 <- 1.5 のとき,
Welch Student Utest
0.0506 0.0115 0.0234

今度は検出力が落ちる可能性が.

この結果を見る限りでは,アンバランスが著しくかつ等分散性が保証できない場合は,Welch法が安全のようです.

#見よう見まねの Rの使い初めです(汗).こちらのサイトに深謝します m(__)m

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


6770. Re^9: t検定と変数変換 青木繁伸  2005/05/24 (火) 10:03
安心して Welch の方法を使えばよいと言うことですね。
R は,Welch の方法をデフォルトにしているし,3群以上の場合(oneway.test)も,Welch の方法を拡張した検定をデフォルトにしていますね。

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


6732. Re^8: t検定と変数変換 青木繁伸  2005/05/20 (金) 19:06
補足  蛇足とも言うが

> (3) t検定は,たとえ等分散が成り立っていなくても,2つのサンプルサイズがほぼ等しいなら正しい検定方法である。

> (3) 確かにそうであろう。

サンプルサイズが全く同じなら,(分散がどんなに違おうと,)ウェルチの検定とt検定の結果は全く同じになる。

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


6734. Re^9: t検定と変数変換 コロ  2005/05/20 (金) 20:58
非常に参考になりました。
ありがとうございます。

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


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