¿Qué habilidades se requieren para realizar análisis estadísticos a gran escala?

107

Muchos trabajos estadísticos requieren experiencia con datos a gran escala. ¿Cuáles son los tipos de habilidades estadísticas y computacionales que serían necesarias para trabajar con grandes conjuntos de datos? Por ejemplo, ¿qué tal construir modelos de regresión dado un conjunto de datos con 10 millones de muestras?

pregunta de bit
fuente
1
Algunos buenos consejos aquí .
radek
Sería útil resumir los que crees que son los mejores.
rolando2
También es interesante la discusión relacionada de la prueba de hipótesis con grandes conjuntos de datos: stats.stackexchange.com/q/2516/919
whuber

Respuestas:

115

Ya han aparecido buenas respuestas. Por lo tanto, solo compartiré algunos pensamientos basados ​​en la experiencia personal: adapte los relevantes a su propia situación según sea necesario.

Para antecedentes y contexto- para que pueda dar cuenta de cualquier sesgo personal que pueda aparecer en este mensaje - gran parte de mi trabajo ha sido ayudar a las personas a tomar decisiones importantes basadas en conjuntos de datos relativamente pequeños. Son pequeños porque la información puede ser costosa de recolectar (10K dólares para la primera muestra de un pozo de monitoreo de aguas subterráneas, por ejemplo, o varios miles de dólares para análisis de químicos inusuales). Estoy acostumbrado a obtener la mayor cantidad de información posible, a explorarlos hasta la muerte e inventar nuevos métodos para analizarlos si es necesario. Sin embargo, en los últimos años me he comprometido a trabajar en algunas bases de datos bastante grandes, como una de datos socioeconómicos y de ingeniería que cubre todo Estados Unidos a nivel de bloque del Censo (8.5 millones de registros,

Con conjuntos de datos muy grandes, todo el enfoque y el cambio de mentalidad . Ahora hay demasiados datos para analizar. Algunas de las implicaciones obvias (y, en retrospectiva) obvias (con énfasis en el modelo de regresión) incluyen

  • Cualquier análisis que piense hacer puede tomar mucho tiempo y cálculos. Necesitará desarrollar métodos de submuestreo y trabajar en conjuntos de datos parciales para poder planificar su flujo de trabajo cuando compute con todo el conjunto de datos. (El submuestreo puede ser complicado, porque necesita un subconjunto representativo de los datos que sea tan rico como todo el conjunto de datos. Y no se olvide de validar de forma cruzada sus modelos con los datos retenidos).

    • Debido a esto, pasará más tiempo documentando lo que hace y escribiendo todo (para que se pueda repetir).

    • Como @dsimcha acaba de señalar, las buenas habilidades de programación son útiles. En realidad, no necesita mucha experiencia en entornos de programación, pero necesita estar dispuesto a programar, la capacidad de reconocer cuándo la programación ayudará (en casi todos los pasos, realmente) y una buena comprensión de los elementos básicos de informática, como el diseño de estructuras de datos apropiadas y cómo analizar la complejidad computacional de los algoritmos. Esto es útil para saber de antemano si el código que planea escribir se ampliará al conjunto de datos completo.

    • Algunos conjuntos de datos son grandes porque tienen muchas variables (miles o decenas de miles, todas diferentes). Espere pasar mucho tiempo simplemente resumiendo y entendiendo los datos . Un libro de códigos o diccionario de datos , y otras formas de metadatos , se vuelven esenciales.

  • Pasa gran parte de su tiempo simplemente moviendo datos y formateándolos. Necesita habilidades para procesar grandes bases de datos y habilidades para resumir y graficar grandes cantidades de datos. ( El pequeño múltiplo de Tufte aparece aquí).

  • Algunas de sus herramientas de software favoritas fallarán. Olvídate de las hojas de cálculo, por ejemplo. Una gran cantidad de software de código abierto y académico simplemente no podrá manejar grandes conjuntos de datos: el procesamiento tomará una eternidad o el software se bloqueará. Espere esto y asegúrese de tener múltiples formas de realizar sus tareas clave.

  • Casi cualquier prueba estadística que ejecute será tan poderosa que es casi seguro identificar un efecto "significativo". Debe centrarse mucho más en la importancia estadística , como el tamaño del efecto, en lugar de la importancia.

  • Del mismo modo, la selección del modelo es problemática porque casi cualquier variable y cualquier interacción que pueda contemplar se verá significativa. Debe centrarse más en el significado de las variables que elige analizar.

  • Habrá más que suficiente información para identificar las transformaciones no lineales apropiadas de las variables. Sepa cómo hacer esto.

  • Tendrá suficientes datos para detectar relaciones no lineales, cambios en las tendencias, no estacionariedad, heterocedasticidad , etc.

  • Usted nunca se termine . Hay tantos datos que podría estudiarlos para siempre. Es importante, por lo tanto, establecer sus objetivos analíticos desde el principio y tenerlos constantemente en mente.

Terminaré con una breve anécdota que ilustra una diferencia inesperada entre el modelo de regresión con un gran conjunto de datos en comparación con uno más pequeño. Al final de ese proyecto con los datos del Censo, un modelo de regresión que había desarrollado necesitaba implementarse en el sistema informático del cliente, lo que significaba escribir código SQL en una base de datos relacional. Este es un paso rutinario, pero el código generado por los programadores de bases de datos involucraba miles de líneas de SQL. Esto hizo casi imposible garantizar que estuviera libre de errores, aunque pudimos detectarlos (dio resultados diferentes en los datos de prueba), encontrarlos era otra cuestión. (Todo lo que necesita es un error tipográfico en un coeficiente ...) Parte de la solución fue escribir un programa que generara los comandos SQL directamente a partir de las estimaciones del modelo. Esto aseguró que lo que salió del paquete de estadísticas fue exactamente lo que entró en el RDBMS. Como beneficio adicional, algunas horas dedicadas a escribir este script reemplazaron posiblemente varias semanas de codificación y prueba de SQL. Esta es una pequeña parte de lo que significa para el estadístico poder comunicar sus resultados.

whuber
fuente
3
+1, compartiré esta maravillosa respuesta (y la imprimiré para tenerla cerca ^ _ ^)
Dmitrij Celov
1
+1, esto es lo que sin duda volveré a contar a mis alumnos durante muchos años.
mpiktas
2
la anécdota me recordó el momento en que tuve que transferir el modelo de Eviews a R. El modelo original se realizó en Eviews, el resultado fue de aproximadamente 20 ecuaciones. Tuve que presentar los resultados en la página web con interfaz interactiva. Dado que el modelo estaba en progreso, escribí un código que traducía la salida de Eviews a código R con el mismo propósito que el modelo exacto que se usó tanto en Eviews como en R. R funcionó muy bien, incluso terminé usando diferenciar el código traducido para el cálculo del gradiente analítico.
mpiktas
2
En general, se considera más constructivo (si no es una simple cortesía) cuando los votos negativos se justifican en un comentario, a menos que existan razones obvias para no hacerlo (por ejemplo, una respuesta vaga de una línea, ninguna respuesta a la solicitud de actualización de una respuesta incorrecta, Comportamiento ofensivo). Esto contribuye a mejorar la calidad de una respuesta, cuando se hacen argumentos válidos. ¡En este caso particular, no veo razón para un voto negativo!
chl
2
+1 para la automatización reduce el error: " escriba un programa que generó los comandos SQL directamente a partir de las estimaciones del modelo ".
Orion
18

Su pregunta debería dar algunas buenas respuestas. Aquí hay algunos puntos de partida.

  1. La capacidad de trabajar con las compensaciones entre la precisión y las demandas impuestas a la potencia informática.

  2. Facilidad con técnicas de minería de datos que pueden usarse como herramientas preliminares de detección antes de realizar la regresión. Por ejemplo, chaid, carro o redes neuronales.

  3. Una comprensión profunda de la relación entre significación estadística y significación práctica. Un amplio repertorio de métodos para la selección de variables.

  4. El instinto de validación cruzada.

rolando2
fuente
También combinaría # 4 y # 1: es importante saber cómo validar de forma cruzada sin abrumar sus recursos informáticos.
Zach
1
¿Podría explicar su segundo punto? ¿Cómo utilizaría CHAID / CART / redes neuronales como herramientas de detección para la regresión?
raegtin
2
@raegtin: estoy más familiarizado con CHAID, que surge con las llamadas "interacciones", que a menudo son efectos principales disfrazados de interacciones porque esa es la única forma en que el procedimiento "los dejará entrar". (En CHAID puede haber solo 1 efecto principal identificado como tal, por lo que todos los demás efectos principales se comprimen en las células de "interacción".) Pero CHAID tiene la ventaja de poder verificar muchas interacciones. Entonces, una vez que se identifican algunos prometedores, se pueden incorporar en una regresión o anova, con todos sus componentes de orden inferior, y uno puede probar cuáles son realmente útiles.
rolando2
1
+1 Me intriga la posibilidad de utilizar la minería de datos (especialmente CHAID) para explorar los posibles efectos. Sería interesante ver una aplicación, como con el conjunto de datos artificial (y pequeño) en stats.stackexchange.com/q/10363/919
whuber
12

Buenas habilidades de programación son imprescindibles. Debe poder escribir código eficiente que pueda manejar grandes cantidades de datos sin asfixiarse, y tal vez pueda paralelizar dicho código para que se ejecute en un período de tiempo razonable.

dsimcha
fuente
44
La codificación es imprescindible, pero también es importante saber cómo trabajar con el sistema operativo y no en su contra. Debe comprender que a veces dividir el trabajo tiene costos adicionales asociados, ya que acceder a discos y redes conlleva costos adicionales. Debe comprender las diferentes formas de bloquear y esperar y hacer la comunicación entre procesos. He visto un gran código científico que pasaría la mayor parte del tiempo esperando que finalicen algunas llamadas al sistema. Hazte amigo del administrador del sistema de tu sistema, puedes obtener mucha ayuda con la optimización de tus sistemas al traerles café;)
Marcin
2
A veces es mejor escribir "Código ineficiente" si esto ayuda a crear estructuras de datos que anticipan preguntas adicionales que probablemente se harán en el futuro.
Ralph Winters
1
@Ralph: +1, estoy totalmente de acuerdo y aprendí esto de la manera difícil. No quise decir que siempre debe escribir un código eficiente sin importar las compensaciones, solo que debe saber cómo hacerlo.
dsimcha
5

También agregaría que los datos a gran escala también introducen el problema de posibles "datos incorrectos". No solo faltan datos, sino errores de datos y definiciones inconsistentes introducidas por cada pieza de un sistema que alguna vez tocó los datos. Por lo tanto, además de las habilidades estadísticas, debe convertirse en un experto en limpieza de datos, a menos que alguien más lo haga por usted.

-Ralph Winters

Ralph Winters
fuente
3
Estos son buenos puntos. Los valores atípicos y otros problemas de datos afectan a cualquier conjunto de datos, sin importar cuán grande o pequeño sea. En mi experiencia, en realidad son más fáciles de identificar y manejar en grandes conjuntos de datos, porque tiene el poder de discriminarlos de la masa de datos y, especialmente si utiliza métodos sólidos, es menos probable que influyan en los resultados. Por cierto, siempre está haciendo "limpieza de datos" a lo largo de cualquier análisis. Esto no es algo que pueda segregarse y remitirse a un especialista para que lo maneje de una vez por todas. Un valor atípico es solo un valor atípico en el contexto de un modelo particular.
whuber
2
Eche un vistazo a google refine como un limpiador de datos semiautomático que ayuda a evitar las dificultades de la edición manual.
mindless.panda
5
  1. Enmarcar el problema en el marco Map-reduce .
  2. El lado de ingeniería del problema, por ejemplo, cuánto duele usar una precisión más baja para los parámetros, o la selección del modelo basada no solo en la generalización sino también en los costos de almacenamiento y cómputo.
highBandWidth
fuente
¿Podría proporcionar un enlace relevante para el marco Map-reduce que menciona?
mindless.panda
@ sugar.panda, enlace wiki añadido!
highBandWidth
+1 por mencionar una precisión menor, aunque está lejos de ser una prerrogativa ingeniosa. Cuanto menor sea la precisión, más probable es que tomemos malas decisiones. Esto está estrechamente relacionado con el error Tipo I / II y abarca varias disciplinas, pero es principalmente relevante para las estadísticas, la ciencia de la decisión y la economía. Las funciones de utilidad deben pensarse con anticipación y ser parte del proceso de pensamiento para identificar una metodología adecuada.
Thomas Speidel el