0

同じ行に配置された 2 つのグループのデータ ポイントと、複数行のデータ (400k+) があります。これらの 400K+ 行のそれぞれについて、2 つのグループの分散を比較したいと思います。データは次のようなものになります-

y<-rbind(c(1,2,20,50,100,1,2,3,1,2),c(20,2,80,50,100,1,2,3,1,2))
group<-structure(c(1L,1L,1L,1L,1L,2L,2L,2L,2L,2L), .Label = c("T","C"), class="factor")

たとえば、単一行のデータでパッケージleveneTestから実行できます-car

leveneTest(y = y[1,], group = group) # first row of data

Levene's Test for Homogeneity of Variance (center = median)
  Df F value  Pr(>F)  
group  1   4.527 0.06603 .
   8 

また

leveneTest (y = y[2,], group = group) # second row of data

Levene's Test for Homogeneity of Variance (center = median)
  Df F value   Pr(>F)   
group  1   11.92 0.008662 **
   8 

しかし明らかに、これは 40 万行以上のデータには非現実的です。

applyたとえば、 の場合と同じようにを使用するような単純なものになると思いましたt.test-

apply(y, 1, function (x) t.test(x[1:5],x[6:10])$p.value)
[1] 0.15260837 0.05551746

しかし、私が試してみるとleveneTest

apply(y, 1, function(x) leveneTest (y = y, group = group))

次のエラーが表示されます

Error in complete.cases(y, group) : 
not all arguments have the same length

これを行う方法を知っている人はいますか?

4

1 に答える 1

1

無名関数呼び出しを使用しているため、「y」leveneTestは「x」(つまり、各行の値) であり、完全なデータセットではありません。

apply(y, 1, function(x) leveneTest (y = x, group = group))

または、匿名呼び出しを使用する代わりに、以下も機能するはずです

apply(y, 1, FUN = leveneTest, group=group)
于 2016-05-29T04:33:05.727 に答える