2016-05-29 4 views
0

Ich habe Datenpunkte für zwei Gruppen in der gleichen Zeile angeordnet, und mehrere Zeilen von Daten (400k +). Ich möchte die Varianz von zwei Gruppen für jede dieser 400K + Zeilen vergleichen. Die Daten würden so etwas wie die folgenden -Wie kann ich Tests für die Varianz der Varianz von Datenpunkten in einer Zeile durchführen, wenn ich mehrere (400k +) Zeilen habe

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") 

Ich kann die leveneTest aus dem car Paket auf einer einzigen Reihe von Daten, zum Beispiel laufen -

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 

oder

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 

Aber offensichtlich wäre dies für 400k + Datenzeilen unpraktisch.

Ich dachte, es ist etwas einfach sein würde, wie mit dem apply als würde ich für die t.test, zum Beispiel -

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

Aber wenn ich es versuchen, für den leveneTest

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

ich der folgende Fehler ist

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

Hat keine man weiß, wie man das macht?

+0

'Funktion (x) leveneTest (y = y, Gruppe = Gruppe)' arbeiten? Du verwendest 'x' nicht in der Funktion ????? –

Antwort

1

Da wir den anonymen Funktionsaufruf verwenden, ist das 'y' für leveneTest 'x' (d. H. Werte in jeder Zeile) und nicht das vollständige Dataset.

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

oder anstelle der anonymen Anruf mit, auch die folgenden sollte

apply(y, 1, FUN = leveneTest, group=group) 
Verwandte Themen