Zeilenweise Varianz einer Matrix in R

8

Ich möchte die Varianz für jede Zeile in einer Matrix berechnen. Für die folgende Matrix A

%Vor%

Ich möchte

bekommen %Vor%

Ich weiß, dass ich das mit apply(A,1,var) erreichen kann, aber gibt es einen schnelleren oder besseren Weg? Von Oktav kann ich das mit var(A,0,2) machen, aber ich verstehe nicht, wie das Argument Y der Funktion var() in R verwendet werden soll.

Bearbeiten: Der tatsächliche Datensatz eines typischen Chunks hat ungefähr 100 Zeilen und 500 Spalten. Die Gesamtmenge der Daten ist jedoch etwa 50 GB.

    
Toby 02.08.2014, 22:04
quelle

2 Antworten

18

Sie könnten var über Zeilen (oder Spalten) mit rowSums und rowMeans

pivotieren %Vor%

Mit @Richards-Daten erhalten Sie

%Vor%

Sie können auch eine allgemeinere Funktion erstellen, die eine ähnliche Syntax wie apply erhält, aber vektorisiert bleibt (die spaltenweise Varianz ist langsamer, da die Matrix zuerst transponiert werden muss)

%Vor%     
David Arenburg 02.08.2014, 22:40
quelle
9

Dies ist einer der Hauptgründe, warum apply() nützlich ist. Es soll an den Rändern eines Arrays oder einer Matrix arbeiten.

%Vor%

Ist 300 Millisekunden zu lang, um 10.000 Berechnungen durchzuführen?

    
Rich Scriven 02.08.2014 22:31
quelle

Tags und Links