2 votos

Pruebas de clasificación diferencial entre listas en relación con una lista de referencia

Me interesa comparar las listas clasificadas para encontrar elementos que estén clasificados de forma diferente. Supongamos que tenemos 10 listas, cada una de ellas clasificada (y por simplicidad, suponiendo que los elementos se solapan y sólo la clasificación es diferente). ¿Qué método podría aplicar para encontrar elementos con rangos altos en la lista1 que sistemáticamente tienen rangos bajos en todas las demás listas?

El trasfondo aquí es que cada una de estas listas representa resultados de pruebas diferenciales de experimentos que no pueden compararse directamente entre sí, ya que existen factores de confusión entre ellos que están anidados con el efecto que queremos comparar. Por lo tanto, me gustaría al menos dar prioridad a los elementos que en la lista de referencia dada se clasificaron altamente (y por lo tanto fueron muy significativos o "importantes" en el experimento1), pero tienen rangos bajos(er) en todos los otros experimentos, lo que sugiere que este elemento fue "único" para el experimento 1, lo que merece experimentos posteriores con estos elementos.

Para los elementos sistemáticamente clasificado altamente yo usaría RobustRankAggregation o el Producto de rango cálculo, pero ¿qué hay de lo que realmente encontrar diferencias en las listas clasificadas? Obviamente, uno podría simplemente tomar los elementos topX de la lista 1 y calcular algo como la varianza de sus rangos a través de las otras listas, pero espero un método que sea más sofisticado. Si es posible, se agradecerían los enlaces a las implementaciones/paquetes respectivos en R.

1voto

Joe Cannatti Puntos 2194

Una posible forma de enfocar su problema es la siguiente: Para cada elemento, recoge todos los rangos que tiene en todas tus listas, es decir, si tienes $n$ listas, $m$ elementos, y el rango de un elemento $e_i$ en la lista $l_k$ es $r_k(e_i)$ , entonces la colección de rangos $c_i$ de un elemento $e_i$ es: $$ c_i := (r_1(e_i), r_2(e_i), \ldots, r_n(e_i)), \quad i=1,\ldots, m. $$

Ahora estás tratando de encontrar los elementos $e_i$ para el que existe una lista $l_k$ tal que $r_k(e_i)$ es consistentemente diferente de los rangos $r_s(e_i)$ de $e_i$ en las otras listas $l_k, s\ne k$ . Esto puede entenderse como la búsqueda de un atípico en la colección $c_i$ .

En general, hay muchos métodos para encontrar valores atípicos $x$ en un conjunto $X$ y la mayoría de ellos asignan una puntuación atípica $os(x)$ a cada $x\in X$ que se supone que describe la cantidad de "periferia". Y la mayor parte de los valores atípicos $x\in X$ es entonces el $x$ con la máxima puntuación de los valores atípicos. Así, se podría asignar a cada elemento $e_i$ la puntuación máxima de los valores atípicos $mos(e_i)$ de todos los rangos en $c_i$ : $$ mos(e_i) := max_k\{os(r_k(e_i))\}. $$ Entonces, todo lo que queda por hacer es encontrar los elementos $e_i$ con el mayor valor de $mos(e_i)$ .

Has mencionado que quieres encontrar los elementos $e_i$ que no sólo están clasificados de forma diferente en una lista en comparación con las otras listas, sino que además este rango atípico es más alto que el de las otras listas. Si este es el caso, podría simplemente añadir un filtro a la detección de valores atípicos que se aseguraría de que este es el caso.

Volvamos a la detección de valores atípicos y a los algoritmos disponibles: Hay muchos métodos posibles. Por ejemplo, se puede tomar como puntuación de valores atípicos la puntuación z, la distancia de un rango $r_k(e_i)$ a la media $\mu_i := mean(c_i)$ dividido por la desviación estándar $\sigma_i := sd(c_i)$ : $$ os_z(r_k(e_i)) := \frac{|r_k(e_i) - \mu_i|}{\sigma_i}. $$

Otros métodos de detección de valores atípicos con implementaciones en R son, por ejemplo kNN o bosque de aislamiento . Por supuesto, si usted está dispuesto a considerar las bibliotecas de python, también, hay toda una colección aquí . Sin embargo, la mayoría de ellas son exageradas, dado que sólo tienes unas diez listas.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X