No.10368 異常項目の検出  【アッコ】 2009/07/14(Tue) 14:22

項目数100,データ数100でN(0,1^2)に従うデータを正常データとします。
項目数100,データ数100でN(0,1^2)に従うデータの第1項目にN(3,1^2)という異常値を与えて,これを検定したいデータとします。
この検定したいデータの第1項目を異常項目として検出したいのですが,どのような統計手法がありますでしょうか?
正常データと検定したいデータの対応する項目ごとに判別分析が使えるかなと考えたのですが,判別分析は正常データだけでは予測できませんよね...
MT法だと正常データだけで判定できますが対応する項目ごとだと項目数が1個になるのでマハラノビス距離が求められません。
何かいい手法はありますか?RやC言語などでプログラムが組めるような手法を教えてください。宜しくお願いします。

No.10371 Re: 異常項目の検出  【青木繁伸】 2009/07/14(Tue) 15:01

> 項目数100,データ数100でN(0,1^2)に従うデータを正常データとします。

100次元正規分布ということですか?しかも,100個の変数(列)は相互に無相関?

> 項目数100,データ数100でN(0,1^2)に従うデータの第1項目にN(3,1^2)という異常値を与えて,これを検定したいデータとします。

第1項目目に「与える」と言うことはどういうことですか?

データの全体像がわかりません。

No.10375 Re: 異常項目の検出  【アッコ】 2009/07/14(Tue) 18:19

言葉足らずで申し訳ありませんでしたm(_ _)m

>100次元正規分布ということですか?しかも,100個の変数(列)は相互に無相関?

gendat(nc, r)で発生させたデータです。相関係数は任意に与えます。

> 第1項目目に「与える」と言うことはどういうことですか?

第1項目の平均だけを3にするということです。

宜しくお願いします。

No.10376 Re: 異常項目の検出  【青木繁伸】 2009/07/14(Tue) 18:50

行と列が逆転しているからわかりにくいのでしょうけど,各列を群と見て,二群の組ごとに平均値の差の多重比較をす れば,どの群に対しても平均値が有意に異なる群が見つかるでしょう。群間の相関(元のデータ構造で言えば列間の相関って,相関係数は任意に与えますと書い ていますが,本質的なことではないと言うことですか。100次元の制定定値の相関係数を定義するのはちょっと骨でしょうからね)。
ということで,実行例を
> # 100 列はすさまじいので10列に
> # 相関係数行列を与えるのも面倒なので,無相関を仮定
> # ケース数は100
> set.seed(123)
> x <- matrix(rnorm(1000), 100)
> # 第1列のみ平均値が3になるように,3を加える
> x[,1] <- x[,1]+3
> # テューキーの方法による多重比較
> # http://aoki2.si.gunma-u.ac.jp/R/src/tukey.R
> # このプログラムは,データベクトルと群ベクトルという構造なので
> tukey(as.vector(x), rep(1:10, each=100))
$result1
n Mean Variance
Group1 100 3.09040591 0.8332328
Group2 100 -0.10754680 0.9350631
Group3 100 0.12046511 0.9022700
Group4 100 -0.03622291 1.0790664
Group5 100 0.10585093 0.9788051
Group6 100 -0.04229996 0.8812105
Group7 100 -0.14964414 1.0572706
Group8 100 0.10587355 1.0201203
Group9 100 0.09358971 1.1062971
Group10 100 -0.01919274 1.0410767

$result2
t p
1:2 2.280252e+01 4.480860e-13 # ここから
1:3 2.117671e+01 4.480860e-13
1:4 2.229395e+01 4.480860e-13
1:5 2.128092e+01 4.480860e-13
1:6 2.233729e+01 4.480860e-13
1:7 2.310269e+01 4.480860e-13
1:8 2.128076e+01 4.480860e-13
1:9 2.136835e+01 4.480860e-13
1:10 2.217252e+01 4.480860e-13 # ここまでの結果を見れば,1群(1列)が他と
2:3 1.625804e+00 8.354518e-01 # 異なることがわかる
2:4 5.085642e-01 9.999664e-01
2:5 1.521600e+00 8.835397e-01
2:6 4.652327e-01 9.999844e-01
2:7 3.001687e-01 9.999997e-01
2:8 1.521762e+00 8.834728e-01
2:9 1.434174e+00 9.163536e-01
2:10 6.299953e-01 9.997962e-01
3:4 1.117240e+00 9.829783e-01
3:5 1.042042e-01 1.000000e+00
3:6 1.160572e+00 9.779144e-01
3:7 1.925973e+00 6.512559e-01
3:8 1.040429e-01 1.000000e+00
3:9 1.916309e-01 1.000000e+00
3:10 9.958092e-01 9.925006e-01
4:5 1.013036e+00 9.915019e-01
4:6 4.333148e-02 1.000000e+00
4:7 8.087330e-01 9.984597e-01
4:8 1.013197e+00 9.914921e-01
4:9 9.256093e-01 9.956424e-01
4:10 1.214310e-01 1.000000e+00
5:6 1.056368e+00 9.885143e-01
5:7 1.821769e+00 7.213260e-01
5:8 1.612972e-04 1.000000e+00
5:9 8.742671e-02 1.000000e+00
5:10 8.916050e-01 9.967191e-01
6:7 7.654015e-01 9.990042e-01
6:8 1.056529e+00 9.885018e-01
6:9 9.689408e-01 9.938679e-01
6:10 1.647625e-01 1.000000e+00
7:8 1.821930e+00 7.212216e-01
7:9 1.734342e+00 7.756431e-01
7:10 9.301640e-01 9.954784e-01
8:9 8.758801e-02 1.000000e+00
8:10 8.917663e-01 9.967146e-01
9:10 8.041783e-01 9.985267e-01

$phi
[1] 990

$v
[1] 0.9834413

No.10383 Re: 異常項目の検出  【アッコ】 2009/07/15(Wed) 08:43

わかりやすい説明ありがとうございます。

テューキーの方法を勉強して,理解できました。しかし, 一つ疑問なのですが,このデータの場合は項目が第1項目以外の全て項目がN(0,1^2)に従うため,テューキーの方法を用いてN(3,1^2)の項目を 見つけることが可能ですが,一般のデータでは第1項目がガンの検査値であったり,第2項目が気温であったり,項目の内容が違うとテューキーの方法を適用で きないと思うのですが,このような場合はどうすればよいのでしょうか。
(正常データ 検定データ(正常データの第1項目が異常) の場合に検定データの第1項目が異常項目だと検出したいということです)

説明がわかりにくいと思いますが,宜しくお願いしますm(_ _)m

No.10384 Re: 異常項目の検出  【青木繁伸】 2009/07/15(Wed) 10:31

> 一般のデータでは第1項目がガンの検査値であったり,第2項目が気温であったり,項目の内容が違うとテューキーの方法を適用できないと思うのですが

できないでしょう。
というか,第1項目とそれ以外の項目がまるっきり別の測定値だと,そもそも第1項目が正常値かどうかなんてことを判定する情報がないじゃないですか。

別のスレッドで,ひのさんが書いたように「不適切なたとえ話をされると,ちゃんとした議論ができない」のです。

今回も,最初は,「第1項目にN(3,1^2),第2項目以降にN(0,1^2)に従うデータ」とか書かれ,「相関係数は任意に与えます」などとまで書かれていたんですから,訳がわかりません。

> 説明がわかりにくいと思いますが

自覚症状があるなら,分かりやすい説明をするよう心がけてください。お願いします。

No.10385 Re: 異常項目の検出  【アッコ】 2009/07/15(Wed) 10:51

度重なるわかりにくい説明申し訳ありません...m(_ _)m

>というか,第1項目とそれ以外の項目がまるっきり別の測定値だと,そもそも第1項目が正常値かどうかなんてことを判定する情報がないじゃないですか。

検定データの第1項目が正常かどうかを正常データを使って判定できる方法はありますか?

No.10386 Re: 異常項目の検出  【青木繁伸】 2009/07/15(Wed) 11:06

あのですね。
要するに,正常なデータと異常を疑われるデータがあって,異常なデータを異常と判定したいと言うことでしょう?第1項目とかなんとか,関係ないのでしょう?
例えば,正常データ(サンプルサイズは500個)があって,異常と思われるデータ(サンプルサイズは50個)があったとき,異常と思われるデータが異常と言えるかどうかということでしょう?
対応のない平均値(代表値)の差の検定を適用することに何か問題があるのですか?

# なんで,最初の質問のような聞き方になるのか不思議です。

No.10397 Re: 異常項目の検出  【アッコ】 2009/07/16(Thu) 23:45

色々お手数をかけて申し訳ございませんでした。もう少し勉強してから質問しないといけないなと痛感しました。ありがとうございました。

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