graficas - Sus experiencias con Matlab/F#/ R para análisis de datos y algoritmos de modelado
graficas en matlab (5)
Siempre hago prototipos de mis modelos en MATLAB. Si mi prototipo es lo suficientemente rápido, refactorizo y listo. Si no, vuelvo e implemento ciertas funciones en C para ser llamado por MATLAB. Esto requiere el conocimiento de un lenguaje de bajo nivel, que creo que siempre será el caso si estás haciendo algo que sea técnicamente desafiante.
Estoy intrigado con este sabor Lisp si alguna vez llega a despegar.
He estado usando F # por un tiempo para modelar algoritmos antes de codificarlos en C ++, y también usarlos luego para verificar los resultados del código C ++, y también contra los datos grabados en el mundo real.
Para el lado de modelado, es muy útil, pero para el tipo de "mashup de datos", extrayendo datos de CSV y otras fuentes, generando estadísticas, dibujando gráficos, etc., mi colega se burla de mí sin fin ("¿por qué estás ¿estás codificando? Está integrado en MatLab ").
Y tengo otro colega que jura por R, que también tiene cosas de gráficos ''integradas''.
Sé que MatLab, R y F # no son estrictamente comparables, así que no estoy pidiendo una ''comparación de características''. Me pregunté qué están usando otras personas para este tipo de escenarios de análisis previo y posterior, y qué tan contentos están con eso.
(Si hay alguien por ahí que esté trabajando para envolver Microsoft Charts en algo F # -friendly, hágamelo saber, estaría feliz de participar ...)
(Nota: las respuestas a esta pregunta serán subjetivas, pero basadas en la experiencia, por favor)
Uso R porque, por un lado, tiene todo incorporado y, por otro lado, puedes manipular casi todo o empezar de cero. Sin embargo, R es bastante lento para cálculos pesados (aunque hago todas mis simulaciones de Monte Carlo en él).
Diría que Matlab es mejor para la disponibilidad de funcionalidades matemáticas en general, R es mejor para entrada de datos / manipulación / visualización / análisis / etc., y C ++ para subrutinas de alta velocidad. Por cierto, puede integrar fácilmente el código C ++ (o C, fortran, ...) en R. ¿Por qué no leer y manipular datos de entrada en R, aplicar los modelos en C ++ y analizar / visualizar la salida en R?
Tengo muy poca experiencia con F #, pero con respecto a C ++ / Matlab / R: si la velocidad de ejecución de su programa es la más importante, use C ++. Si la velocidad de implementación es la más importante, use Matlab o R. Esto es cierto por una serie de razones, entre las que destacan sus enormes bibliotecas de paquetes de matemáticas / estadísticas.
Tanto Matlab como R se pueden acelerar mediante el paralelismo: por lo general, creo que la velocidad y la calidad de la implementación deberían ser una preocupación mayor. Ahí es donde se produce el verdadero "valor" de la programación, en el diseño de la aplicación. No es una proposición menor si puede escribir 3 o 4 buenos programas R en el mismo tiempo que le toma escribir 1 buen programa C ++.
En cuanto a F #: en la medida en que es parte del marco de Microsoft, debe tener mucho que ofrecer. Si está desarrollando en Visual Studio o trabajando en un gran proyecto .Net (por ejemplo), podría tener sentido usar F #. Por otro lado, puede llamar tanto a Matlab como a R desde aplicaciones .Net, por lo que probablemente argumentaría que sus bibliotecas deberían ser una preocupación mayor. Por ejemplo, vea este artículo como un ejemplo para R y el Matlab Builder .
Para resumir: comparar F # y Matlab / R no es una buena comparación . F # es un lenguaje de programación de propósito general, mientras que Matlab / R se puede ver como kits de herramientas masivos de análisis matemático / de datos. Algunas personas llaman a Matlab o R desde F # para aprovechar los beneficios de cada idioma (por ejemplo, vea esta discusión , este artículo en Matlab / F # , o este artículo en R / F # ).
En lo que se refiere a los gráficos: R es extremadamente fuerte en este frente. Eche un vistazo a la vista de gráficos en CRAN y esta serie de publicaciones en el blog LearnR sobre Lattice y ggplot2 .
He trabajado un poco con matlab y python / pylab para estos fines. Lo que estas herramientas tienen ''incorporado'' es un entorno de programación, un shell y herramientas de interfaz gráfica diseñadas para buscar rápidamente datos de una variedad de fuentes.
En algunos comandos, puede pasar de tener un archivo csv a gráficos interactivos en la pantalla, y luego exportar imágenes en casi cualquier formato. Se tarda uno o dos minutos en pasar de los datos a la visualización una vez que lo dominas. Me imagino que esto es poco común en el mundo C ++ (aunque he visto algunos profesores con flujos de trabajo bastante impresionantes).
Intenté con R, pero no puedo decir mucho sobre eso. Parece ofrecer el mismo conjunto de características, pero puede ser problemático para Google obtener soporte.
Si va a pasar más de un par de minutos de datos a trazar utilizando su método actual, definitivamente vale la pena aprender uno de estos entornos. La mejor opción depende de sus colegas, su entorno de trabajo, experiencia y su presupuesto.
Este es un doble cercano razonable a la pregunta anterior sobre el lenguaje funcional adecuado para la computación científica / estadística, por lo que es posible que desee leer detenidamente las respuestas largas y detalladas allí.
Las respuestas dependen, como muy a menudo, de su experiencia y capacitación previa en el idioma. Prefiero mucho R para el munging / modelado / visualización de datos.