ウィルコクソン検定を実行する前にジッターすることは間違っていますか?


9

スクリプトをwilcox.test記述してを使用してデータをテストしましたが、結果が得られたとき、すべてのp値は1に等しくなりました。データをテストする前にジッターを使用できることをいくつかのWebサイトで読みました(前述の関係を避けるため)。私はこれをしました、そして今、私は許容できる結果を持っています。これを行うのは間違っていますか?

test<- function(column,datacol){
    library(ggplot2)
t=read.table("data.txt", stringsAsFactors=FALSE)
uni=unique(c(t$V9))
    for (xp in uni) { 
          for(yp in uni) {
            testx <- subset(t, V9==xp)
            testy <- subset(t, V9==yp)
            zz <- wilcox.test(testx[[datacol]],jitter(testy[[datacol]]))
            p.value <- zz$p.value
          }
        }
}


これはの出力です dput(head(t))

structure(list(V1 = c(0.268912,
0.314681, 0.347078, 0.286945, 
0.39562, 0.282182), V2 = c(0.158921, 0.210526, 0.262024, 0.322006, 
0.133417, 0.283025), V3 = c(0.214082, 0.166895, 0.132547, 0.147361, 
0.09174, 0.169093), V4 = c(0.358085, 0.307898, 0.258352, 0.243688, 
0.379224, 0.2657), V5= c(-0.142223, 0.010895, 0.14655, 
0.08152, 0.02116, 0.030083), V6 = c(0.096408, -0.091896,

-0.331229, -0.446603, -0.088493, -0.262037), V7` = c(1.680946, 
1.649559, 1.534401, 1.130529, 3.441356, 1.211815), V8 = c("NC_000834",  "NC_000844",
"NC_000845", "NC_000846", "NC_000857",
"NC_000860" ), V9 = c("Chordata",
"Arthropoda", "Chordata", "Chordata", 
"Arthropoda", "Chordata"), V10 =
c("???:???", "Diplostraca", 
"???:???", "Rheiformes", "Diptera",
"Salmoniformes"), V11 = c("???:???",
"Branchiopoda", "Mammalia", "Aves",
"Insecta", "Actinopterygii" )), .Names
= c("V1", "V2", "V3", "V4", "V5", "V6",  "V7",
"V8", "V9", "V10",
"V11"), row.names = c(NA,  6L),
class = "data.frame")

データは非常に大きく、それが私が始めたスレッドであり、これを行うのは間違っているかもしれないと彼らは私に言った

この質問はtex.SEから出されたものです。 ラテックステーブル内でPDFcontain R出力を生成しています


2
あなたはあなたのデータが何であるかを私たちに教えてくれませんが、私はデータにランダムなノイズを追加し、それに対して統計的検定を実行する手順には非常に疑わしいでしょう。さらに、あなたのコードはあなたが思っていることを確実に実行しますか?私の読書はあなたのループにもかかわらず、それは単一p.valueを返すことである-そのX = Y = {lastvaluof}(UNI)の
Andrie

@Andrie:助けてくれてありがとう、しかしそれは完全なコードではありません、それはウィルコックス検定を計算する関数の一部であり、各(xp、yp)に対して異なるp値の値を生成するコード、それはのリンクです私のデータの一部、それを表示して、これが可能かどうかを事前に確認できます。 mediafire.com/?mnj26kp4bv5lcr5

1
他のリンクへのリダイレクトを必要とするデータへのリンクは非常に疑わしいと思います。特に、Rが非常に便利なdput()機能を提供して、それを行う必要がない場合。支援を受けるために再現可能な例を提供してください。
追跡


@weblover私が(tex.SEで)ここで統計の質問をするよう提案したとき、私はあなたがすでにSOで質問したことに気づいていませんでした。2つの投稿の1つを削除してください(統計上の質問なので、おそらくSOで)。
chl

回答:


6

これに関するR-helpリストにスレッドがあります。例を参照してください:http : //tolstoy.newcastle.edu.au/R/e8/help/09/12/9200.html

最初の提案は、さまざまなジッタリングでテストを何度も繰り返し、p値を組み合わせて、平均または最大を取ることによって全体的なp値を取得することです。彼らはまた、単純な順列テストを代わりに使用できることも示唆しています(2つのうち、それが私が好むものです)。t検定(対応のあるものと対応のないもの)の代わりに使用するRの置換テストの実装の質問参照してください順列検定のいくつかの例については。

そのスレッドの他の場所で、グレッグスノーは次のように書いています。(http://tolstoy.newcastle.edu.au/R/e8/help/09/12/9195.htmlを参照してください)


お返事ありがとうございます。でもポイントがわかりませんでした。どうしたらいいですか。テストを変更するか、何かに基づいてデータを調整し、これは何ですか?
weblover

リンク先のページをまとめます。
アーロンがスタックオーバーフローを去った

3

(免責事項:私はコードをチェックしませんでした、私の答えはあなたの説明に基づいています)

あなたがやりたいことは本当に悪い考えだと思います。Wilcoxonは、ランクのリサンプリング(またはランダム化)テストです。つまり、値のランクを取得し、これらのランクをランクのすべての可能な置換と比較します(たとえば、こちらを参照)。

だから、あなたが気づいたように、あなたはそれらからランクを取得しないので、関係はかなり悪いです。ただし、ランダムノイズ(ジッター)をデータに追加すると、すべてのランクが変換され、ランダムランクになります。つまり、データをひどく歪めます。

したがって、そうするのは間違っています


答えはthnxですが、この場合はどうすればよいですか?
weblover

2

あなたは何人かに今何をすべきか尋ねました。私の考えでは、ここで行うべきことは、ここでの適切なp値が1.000であることを受け入れることです。グループは違いません。


こんにちは、これを受け入れるのは合理的ですか?すべてのグループとサブグループを一緒に比較すると、同じp値が得られます。これは、1つの変数をテストしているため、論理的ではありません。例:test( "Ph"、V1)すべて 。何か案は ??
weblover

もちろん、それは合理的かもしれません。p値1は、2つのグループが可能な限り同じに近いことを意味します。あなたがほとんどすべての関係を持っているなら、これは本当かもしれません。
アーロンは、スタックオーバーフローを

@Aaron @Webこれらのデータ(V1からV7)は関連付けられていません。1のp値を取得する際にどこかでエラーが発生したに違いありません。ウィルコクソンの符号順位検定と比較すると、p値が0.036と多くなります。
whuber

OPはデータの最初の数行のみをポストしました。データが小数点以下6桁になるので、それはありそうにないように見えますが、明らかにさらに関係があるはずです。だから、はい、あなたが指摘したものとは異なりますが、分析にエラーがあるかもしれません。
アーロンはスタックオーバーフローを
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.