sintaxis que programación programacion programa lenguaje introduccion estadistico estadistica ejemplos con caracteristicas analisis r statistics

que - ¿Cómo se compara el desarrollo de software con la programación/análisis estadístico?



programa r estadistica (3)

Como dije en mi respuesta a tu otra pregunta , lo que describes es programación. Entonces la respuesta corta es: no hay diferencia. La respuesta un poco más larga es que la computación estadística y científica debería requerir aún más controles en torno al desarrollo que otra programación.

Se puede hacer un cierto porcentaje de análisis estadístico usando Excel, o en un enfoque de apuntar y hacer clic usando SPSS, SAS, Matlab o S-Plus (por ejemplo). Un análisis más sofisticado realizado utilizando uno de esos programas (o R) que involucra programación es claramente una forma de desarrollo de software. Y este tipo de informática estadística puede beneficiarse inmensamente de seguir todas las mejores prácticas del desarrollo de software: control de fuente, documentación, un plan de proyecto, documento de alcance, seguimiento de errores / control de cambios, etc.

Además, hay diferentes tipos de análisis estadísticos que pueden seguir diferentes enfoques, como con cualquier proyecto de programación:

  • El análisis de datos exploratorios debe seguir una metodología iterativa, como la metodología Agile . En este caso, cuando no se conocen los pasos de manera explícita, es fundamental usar una metodología de desarrollo que sea adaptativa y autorreflexiva.
  • Un tipo de análisis más rutinario (por ejemplo, una encuesta anual del gobierno, como el Censo) podría seguir una metodología más tradicional, como el enfoque de cascada , ya que seguiría un conjunto muy claro de pasos que en su mayoría se conocen de antemano.

Yo sugeriría que cualquier estadístico se beneficiaría leyendo un libro como "Code Complete" (vea los otros mejores libros en esta publicación ): cuanto más organizado esté con su análisis, mayor será la probabilidad de éxito.

El análisis estadístico en cierto sentido requiere incluso más buenas prácticas en cuanto al control de versiones y la documentación que otras programaciones. Si su programa solo sirve alguna necesidad comercial, entonces el algoritmo o software utilizado es realmente de importancia secundaria siempre y cuando el programa funcione de la manera que las especificaciones lo requieren. Por otro lado, con la informática científica y estadística, la precisión y la reproducibilidad son primordiales. Este es uno de los principales énfasis de John Chambers (el creador del lenguaje S) en "Software para Análisis de Datos" . Esa es otra razón para agregar programación alfabetizada (por ejemplo, con Sweave ) como una herramienta importante en el kit de herramientas del estadístico.

El análisis estadístico / programación, está escribiendo código. Ya sea para descriptivo o inferencial, Usted escribe código para: importar datos, limpiarlo, analizarlo y compilar un informe.

El análisis de los datos puede implicar muchos giros y vueltas de procedimientos estadísticos y ángulos desde los cuales se observan sus datos. Al final, tiene muchos archivos, con muchas líneas de código, realizando tareas en sus datos. Algunos de los cuales son reutilizables y lo capsula como una función "buena para tener".

Este proceso de "Análisis estadístico" me parece "programar" Pero no estoy seguro de que se sienta igual para todos.

Del artículo de Wikipedia sobre desarrollo de software :

El término desarrollo de software se usa a menudo para referirse a la actividad de programación de computadoras, que es el proceso de escribir y mantener el código fuente, mientras que el sentido más amplio del término incluye todo lo que está involucrado entre la concepción del software deseado hasta el manifestación final del software. Por lo tanto, el desarrollo de software puede incluir investigación, nuevo desarrollo, modificación, reutilización, reingeniería, mantenimiento o cualquier otra actividad que genere productos de software. Para sistemas de software más grandes, generalmente desarrollados por un equipo de personas, generalmente se sigue alguna forma de proceso para guiar las etapas de producción del software.

De acuerdo con esta definición simplista (y mi humilde opinión), esto se parece mucho a construir un análisis estadístico. Pero me imagino que no es tan simple.

Lo que me lleva a mi pregunta: ¿qué diferencias puedes delinear entre las dos actividades?

Puede ser en términos de los aspectos técnicos, las diferentes estrategias o estilos de trabajo, y cualquier otra cosa que creas relevante.

Esta pregunta me vino de los siguientes hilos:


Si usa R, probablemente escriba código para resolver sus preguntas estadísticas, por lo que, en este sentido, el análisis estadístico es un subconjunto de la programación.

Por otro lado, hay muchos usuarios de SPSS que nunca se han aventurado a tener que apuntar y hacer clic para resolver sus problemas de estadísticas. Esto se siente menos como programar para mí.


Tal vez el denominador común es la "resolución de problemas".

Más allá de eso, dudo que dude de que pueda proporcionar alguna información, pero al menos puedo proporcionar una respuesta limitada de la experiencia personal.

Este problema surge para nosotros en la contratación, es decir, ¿contratamos a un programador y les enseñamos estadísticas o contratamos a una persona de estadística y les enseñamos a programar? Idealmente, podríamos encontrar a alguien con fluidez en ambas disciplinas, y de hecho, esa es la tercera red que lanzamos, pero rara vez con éxito.

Aquí hay un ejemplo. La distinción más estable entre las dos actividades (desarrollo de software y análisis estadístico) es probablemente sus respectivos resultados, o entregables del proyecto. Por ejemplo, en mi grupo, alguien está llevando a cabo el análisis estadístico de los resultados de nuestros experimentos divididos y factoriales (por ejemplo, a partir de los resultados de la prueba t, si la diferencia es significativa o si la prueba debe continuar). Ese análisis se enviará al departamento de marketing que utilizará para modificar las páginas web que componen el Sitio con el fin de mejorar la conversión. Una segunda tarea implica la abstracción y la automatización parcial de esos análisis para que los resultados puedan procesarse en tiempo casi real.

Para la primera tarea, asignaremos un estadístico; para el segundo, un programador. El problema comercial que estamos tratando de resolver es el mismo para ambas tareas, pero para el primero, el quid es la estadística, para el segundo, los problemas estadísticos se han resuelto en gran medida y la clave es una tarea de programación central (E / S).

Observe también cómo ha evolucionado la evolución de las herramientas asociadas con las dos actividades, por lo que la distinción entre los dos (desarrollo de software y análisis de datos) se ofusca aún más: los lenguajes de desarrollo convencionales se están adaptando para su uso como herramientas analíticas específicas de dominio, al mismo Con el tiempo, se siguen desarrollando marcos que permiten a los no desarrolladores desarrollar rápidamente aplicaciones livianas y orientadas a tareas en DSL.

Por ejemplo, python, un lenguaje de desarrollo de propósito general tiene enlaces R (RPy2) que junto con su intérprete interactivo nativo (IDLE), facilita sustancialmente el uso de Python en análisis estadístico, mientras que al mismo tiempo, hay una clara tendencia en el desarrollo de paquetes R hacia el desarrollo de aplicaciones (web): enlaces R para Qt, gWidgetsWWW y RApache: todos los paquetes R están dirigidos al desarrollo de aplicaciones cliente o web, y cuya versión inicial fue (creo) w / en los últimos 18 meses. Aparte de eso, desde al menos el último trimestre del año pasado, he notado una frecuencia cada vez mayor de publicaciones de blogs, presentaciones, etc. sobre el tema del desarrollo de aplicaciones web en R.

Finalmente, me pregunto si su pregunta es tal vez evidencia de la creciente popularidad de R. Esto es lo que quiero decir. Hace una década, cuando mi empleador compró una licencia de sitio, comencé a aprender y utilizar uno de los principales productos de informática estadística (no tiene sentido decir cuál, comienza con "S"). lo encontré antinatural e inflexible. A diferencia de Perl (que estaba usando en ese momento) esta herramienta no era una extensión de mi cerebro (que no es un atributo opcional de una herramienta analítica, para mí es más o menos la definición de uno). Interactuar con este sistema era más parecido a usar una máquina expendedora: seleccioné alguna función estadística que quería y luego esperé la "salida", que a menudo era un conjunto impresionante de gráficos y tablas a todo color de alto impacto. Casi siempre, aunque lo que quería era modificar mi entrada o usar esa salida para el próximo paso analítico. Eso parecía requerir otro viaje por separado a la máquina expendedora. El hecho de que esta herramienta tuviera en cuenta el contexto, es decir, que conociera las estadísticas, mientras que Perl no lo hizo, no compensó la interacción incómoda. El análisis estadístico hecho de esta manera nunca se confundiría con el desarrollo de software. (De nuevo, esto es solo un resumen de mi propia experiencia, no pretendo que pueda abstraerse. Tampoco es una polémica contra ninguna (o todas) las plataformas de análisis de datos comerciales: millones las usan y se han ganado tropecientos millones las personas que los crearon, así que supongamos que fueron mis propias limitaciones las que causaron la falla de vinculación).

Nunca había oído hablar de R hasta hace unos 18 meses, y solo lo descubrí mientras escaneaba PyPI (La Interfaz Web para el repositorio de paquetes externo de Python) para las bibliotecas de estadísticas de Python. Allí me encontré con RPy, que parecía brillante pero que requería una dependencia llamada "R" (RPy, por supuesto, es realmente solo un conjunto de enlaces de Python a R).

Quizás R atrae igualmente a programadores y no programadores, aún para un programador / analista, esto fue un regalo del cielo. Alcanzó todo en mi lista de deseos para una plataforma de análisis de datos: un motor basado en un lenguaje de programación general con todas las funciones (que en este caso es un descendiente de esquema comprobado), un paradigma funcional subyacente, intérprete interactivo incorporado, datos nativos tipos construidos desde cero para el análisis de datos, y el conocimiento del dominio incorporado. El análisis de datos se volvió más parecido a la codificación. La vida fue buena.