2012-10-02 17 views
8

Tengo un problema. Quiero correr el f_oneway scipy.stats() ANOVA en un script que carga un archivo de datos que contiene-grupos con matrices numpy así:Ejecutando scipy's oneway anova en un script

archive{'group1': array([ 1, 2, 3, ..., ]), 
     'group2': array([ 9, 8, 7, ..., ]), 
     ...} 

Ahora mi problema es que el número de grupos no es fijo para diferentes archivos de datos. En otras palabras, no sé de antemano cuántos grupos hay en un archivo (y tampoco necesariamente cuáles son sus nombres).

Los scipy implementation of a oneway ANOVA sólo acepta comas matrices delimitados como entrada de este modo:

a = array([ 1, 2, 3, ..., ]) 
b = array([ 9, 8, 7, ..., ]) 
c = array([ 5, 6, 4, ..., ]) 

scipy.stats.f_oneway(a, b, c) 

he tratado de darle listas, tuplas, matrices multidimensionales todas sin éxito. Por lo tanto, actualmente, la única forma en que puedo usar esta implementación de ANOVA es ingresar manualmente las variables de grupo cada vez, lo que efectivamente hace imposible ejecutar esto en un script. Me pregunto si alguno de ustedes tiene una idea de cómo resolver esto o cómo evitar estos requisitos de formato de datos muy específicos de f_oneway().

Respuesta

15

supongo que debería probar:

scipy.stats.f_oneway(*archive.values()) 
+1

Gracias, esto es impresionante. Sé entender el concepto * args – surchs

Cuestiones relacionadas