4 votos

En un conjunto de datos "explosivos", ¿cómo se filtran los pocos valores importantes que constituyen el grueso de la información?

Note seguro si existe un concepto de estadísticas para esto, pero tengo un conjunto de datos que consiste mayormente en pequeños puntos de datos con unos pocos grandes.

por ejemplo, 1 2 1 3 1 2 87 3 2 1 1 1 1 1 3 1 2 1 1 1 99

¿Cómo puedo filtrar este conjunto de datos para obtener sólo los valores que constituyen desproporcionadamente el grueso de la información? Actualmente estoy filtrando por puntos de datos que existen unas cuantas desviaciones estándar, pero esto no me dice qué % del total estoy obteniendo. (p.ej. si me salgo 2 desviaciones estándar, ¿obtengo el 70% de la información? si me salgo 5, ¿es el 95%? Sólo sé qué porcentaje del número de puntos de datos representa, no el porcentaje de los datos)

Quiero eliminar tantos puntos de datos como sea posible sin eliminar los puntos de datos importantes. Así que si tengo una media de 5 y una desviación std de 20, filtro los puntos de datos que sean menores de 45 (20 + 20 + 5). Esto elimina, digamos, el 95% de los puntos de datos, pero entonces el conjunto de datos puede parecer: 50 46 90 80 44 99999 57 87 88. El Principio de Pareto aquí se aplica recursivamente con este 99999. En este escenario me gustaría mantener sólo el 99999 ya que representa el 99% de los datos, pero no lo sé por usar una regla empírica de desviación std.

Por ejemplo, mucha gente estará de acuerdo en que el 1% de la gente puede tener el 99% de la riqueza. Si se divide en esos datos, se encuentra que el 1% de ese 1% posee el 99% de esa riqueza. Lo que significa que el 0,01% de la gente tiene el 98% de la riqueza. Esta segunda información es sorprendente ya que muestra a los "grandes" de los "grandes". Esto podría ir más allá con los "tipos grandes" de los "tipos grandes" de los "tipos grandes" (tipos grandes^3) Tal vez una persona tiene el 95% de toda la riqueza. ¿Cómo puedo analizar mis datos para esto? Si se le da un gráfico de pastel o de barras, obviamente sería de un vistazo.

3voto

John with waffle Puntos 3472

Si sólo quieres mantener los puntos de datos que representan la parte superior, digamos, el 90% de la suma de los datos, entonces haz exactamente eso. Ordena los valores en orden decreciente, calcula la suma acumulada hasta cada valor (ordenado) y exprésala como un porcentaje de la suma total. Por último, recoge los valores que hasta el punto de cruzar el 90%.

Con tu ejemplo:

x <- c(1L, 2L, 1L, 3L, 1L, 2L, 87L, 3L, 2L, 1L, 1L, 1L, 1L, 3L, 1L, 
        2L, 1L, 1L, 1L, 99L)
cumsum(sort(x, decreasing = TRUE)) / sum(x)
 [1] 0.4626168 0.8691589 0.8831776 0.8971963 0.9112150 0.9205607 0.9299065 0.9392523 0.9485981
[10] 0.9532710 0.9579439 0.9626168 0.9672897 0.9719626 0.9766355 0.9813084 0.9859813 0.9906542
[19] 0.9953271 1.0000000

Así que los 5 valores más grandes representan el 91% superior de la suma.

O si está dispuesto a ser menos automatizado, entonces puede trazar las sumas acumuladas de los valores ordenados, y elegir el corte basado en la "rodilla" de la trama.

2voto

codymanix Puntos 12119

La respuesta de Matt es buena, sólo pensé en expandir un poco el concepto de cuantiles mencionado por Patrick Coulombe en los comentarios. Es muy fácil de hacer si estás trabajando en R. Si, por ejemplo, estás buscando coger el 50% medio de los datos, buscarías limitar tus límites por encima del 25º cuantil y por debajo del 75º. Por ejemplo, si estuvieras trabajando con la columna de wt en el conjunto de datos de mtcars:

y <- mtcars
cut <- subset(y, wt > as.double(quantile(y$wt, 0.25)) & wt < as.double(quantile(y$wt, 0.75)))

Esto sólo toma el percentil 25 y el percentil 75 y limita sus datos entre estos. Si quieres el 95% de tus datos, simplemente sustituye 25 y 27 por 2,5 y 97,5.

Sin embargo, si estás tratando de controlar algunos valores atípicos locos, es posible que quieras investigar la winsorización de tus datos. Toma todos los puntos de datos por encima de un cierto percentil y los obliga a bajar a ese percentil.

2voto

Rob Allen Puntos 486

Si sabes nada en absoluto sobre su conjunto de datos, es posible obtener límites bastante sueltos usando La desigualdad de Chebyshev . Específicamente, para una variable aleatoria $X$ con un valor esperado finito $ \mu $ y una variación finita, no nula $ \sigma ^2$ es cierto que $$P(|X- \mu | > k \sigma ) \le \frac {1}{k^2}$$

En otras palabras, el 75% de sus datos deben estar dentro de dos desviaciones estándar de la media (enchufar $k=2$ ), el 96% debe estar dentro de 5 desviaciones estándar de la media, y el 99% está dentro de 10 desviaciones estándar de la media. Esta desigualdad requiere conocer la media y la desviación estándar de la población. Si las sustituimos por valores estimados a partir de una muestra, las cosas se vuelven un poco más complejas: véase la ecuación 2.1 y 2.2 de Saw, Yang y Mo (1984) .

Los límites de la población son bastante flojos y los límites basados en muestras son aún más flojos. Este es el precio que debe pagar por tener una información/presunciones mínimas. Si sabes que tus datos se generan a partir de una cierta distribución, es posible hacer un lote mejor. Por ejemplo, para una distribución normal, el 99,7% de los datos se encuentra dentro de 3 $ \sigma $ de la media, que es ~40x más ajustado que el correspondiente límite de Chebyshev. Esto puede calcularse directamente a partir de la función de distribución acumulativa.

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