2016-11-14 5 views
1

私はさまざまなブランドのボトルウォーターでChromiumのデータを測定しています。私は、ブランドのクロム間に統​​計的に有意な差があるかどうかを判断するためにKruskal-Wallis Hテストを適用したいと思いますが、測定データには多くの検閲値があります。Kruskal Wallisテストの適用方法R

この検閲済みの変数に対してKruskal-Wallis H検定を適用する方法はありますか?私たちのデータセットdfは以下の貼り付けられます:

df <- structure(list(
     Brand = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
      1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
      2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
      3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
      4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
      5L, 5L, 5L, 5L), .Label = c("B1", "B2", "B3", "B4", "B5"), class = "factor"), 
     Chromium = c(0.4, 0.4, 0.4, 0.9, 0.4, 1.3, 1.3, 0.4, 2.6, 
      0.4, 0.6, 0.6, 0.4, 2.1, 0.4, 0.4, 0.4, 0.4, 0.6, 0.4, 1.3, 
      1.3, 0.4, 2.6, 0.4, 0.7, 0.7, 0.4, 1.7, 0.4, 0.6, 0.4, 0.4,    
      0.4, 0.4, 1.3, 1.3, 0.4, 2.6, 0.4, 1.1, 1, 0.4, 1.5, 0.4, 
      0.7, 0.4, 0.4, 1, 0.4, 1.3, 1.3, 0.4, 2.6, 0.4, 1, 1.1, 0.4, 
      2.2, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 1.3, 1.3, 0.4, 2.6, 0.4, 
      0.6, 0.7, 0.4, 1.8, 0.4)), .Names = c("Brand", "Chromium"), 
      class = "data.frame", row.names = c(NA, -75L)) 

head(df) 
# Brand Chromium 
# 1 B1  0.4 
# 2 B1  0.4 
# 3 B1  0.4 
# 4 B1  0.9 
# 5 B1  0.4 
# 6 B1  1.3 
+0

検閲済みの変数を無視しますか? –

+0

エリ、いいえ、私は検閲値を検討したいと思います。 –

答えて

1

あなたはで「cendiff」機能を検討するかもしれませんNADA package for R。この文書によれば、それは、Gehan-Wilcoxon検定(一般化Wilcoxon検定)のPeto修飾であるPeto &と同等です。これは、生存分析を使用して複数の報告限度で検閲されたデータを処理するように設計されたスコアテストです。 Dennis R. Helselの著書「Minitab and Rを用いた検閲された環境データの統計」第2版第9.4節には、より詳細な説明があります。

1

< 0.4Chromiumがあなたのデータを取り込むことができることを最も小さい値です。 Kruskal-Wallisテストは、実際の値ではなく、値のランクに依存しています。これは、単に< 0.40.39に置き換えることができることを意味します。これは、以前と同じランクが割り当てられるからです。実際には、< 0.4と置き換えて、の値を0.4より小さくすることができます。

df$Chromium[df$Chromium == "< 0.4"] <- 0.4 

は、あなたのデータが数値であることを確認した後、あなただけ実行することができます:

コードでは、それは次のようになり

kruskal.test(Chromium ~ Brand, 
     data = df) 
# Kruskal-Wallis rank sum test 

# data: Chromium by Brand 
# Kruskal-Wallis chi-squared = 0.51334, df = 4, p-value = 0.9722 
1

私は最初の答えに同意するのに対し(交換< 0.4原則として0.4が有効です)、検出限界以下の多数の値(ランキングでの結びとして終わる)は、あなたのKruskal-Wallisテストの力をかなり低下させる可能性があります。 代わりに、カイ二乗検定を使用して、閾値レベルを超える値の割合がブランドごとに異なるかどうかを検討することもできます。得

xm<-rbind(c(8,8,4),c(7,7,1)) 
dimnames(xm)<-list(scores=c("Low","High"),brand=c("B1","B2","B3")) 
print(xm) 
(xmcs<-chisq.test(xm,simulate.p.value = T)) 

:あなたの例の場合、ブランド間の

> print(xm) 
     brand 
scores B1 B2 B3 
    Low 8 8 4 
    High 7 7 1 
> (xmcs<-chisq.test(xm,simulate.p.value = T)) 

    Pearson's Chi-squared test with simulated p-value (based on 2000 replicates) 

data: xm 
X-squared = 1.2444, df = NA, p-value = 0.7216 

同様に非有意差をクラスカル・ウォリス検定のよう

+0

私は力の減少とあなたのポイントを参照してください。しかし、データをもう一度人工的に検閲する必要はなく、既に失われていたよりもさらに多くの情報を失うことはありませんか? –

関連する問題