He estado usando SAS profesionalmente durante casi 5 años. Lo tengo instalado en mi computadora portátil y con frecuencia tengo que analizar conjuntos de datos con 1,000-2,000 variables y cientos de miles de observaciones.
He estado buscando alternativas a SAS que me permitan realizar análisis en conjuntos de datos de tamaño similar. Tengo curiosidad por saber qué usan otras personas para situaciones como esta. Esto ciertamente no es "Big Data" en la forma en que se usa hoy. Mis conjuntos de datos tampoco son lo suficientemente pequeños como para guardarlos en la memoria. Necesito una solución que pueda aplicar algoritmos a los datos almacenados en un disco duro. Estas son las cosas que he investigado en vano:
- R - BigMemory puede crear matrices almacenadas fuera de la memoria, pero los elementos tienen que ser del mismo modo. Trabajo con datos que se dividen casi en un 50/50 entre caracteres y numéricos. El paquete FF se acerca a lo que necesito, pero no entiendo qué procedimientos son compatibles con él. Creo que el soporte es algo limitado.
- Pandas: estaba muy entusiasmado con una alternativa Pythonic a R. Sin embargo, también tiene que guardar todos los datos en la memoria.
- Revolución R: esta muestra bastante prometedora. Tengo una copia en la computadora de mi casa (gratis si te registras en Kaggle) y todavía tengo que probarla como una alternativa viable a SAS. Los comentarios sobre Revolution R como alternativa SAS son muy apreciados.
Gracias
ACTUALIZACIÓN 1
Edición para agregar que estoy buscando soluciones prácticas y de la vida real que las personas hayan utilizado con éxito. En su mayor parte, SAS me permite buscar archivos grandes sin preocuparme un poco por las limitaciones de memoria. Independientemente de cómo se implemente SAS, descubrieron cómo hacer que la administración de memoria sea transparente para el usuario. Pero, con gran pesar, utilicé SAS para mi trabajo (tengo que hacerlo) y ME ENCANTARÍA una alternativa de software libre que me permita trabajar en datos "grandes" sin tener que pensar demasiado sobre dónde se encuentran los datos en un tiempo específico (en memoria o en disco).
Las cosas más cercanas que he encontrado son el paquete FF de R y algo en el horizonte para Python llamado Blaze . Y sin embargo, estos problemas han existido durante muchos años, entonces, ¿qué han estado haciendo los analistas mientras tanto? ¿Cómo manejan estos mismos problemas con los límites de memoria? La mayoría de las soluciones en oferta parecen ser:
- Obtenga más RAM: esta no es una buena solución, en mi opinión. Es fácil encontrar un conjunto de datos que puede exceder la RAM y aún así caber en un disco duro. Además, el flujo de trabajo tiene que acomodar todas las estructuras que se crean durante el análisis exploratorio de datos.
- Subconjunto de los datos: esto está bien para la exploración, pero no para finalizar resultados e informes. Eventualmente, cualquier proceso que se desarrolle en un subconjunto tendrá que aplicarse a todo el conjunto de datos (en mi caso, de todos modos).
- Agrupe los datos: esto es de lo que me gustaría saber más acerca de las personas que realmente implementan este flujo de trabajo. Como se hace ¿Con que herramientas? ¿Se puede hacer de manera transparente para el usuario? (es decir, crea una estructura de datos en el disco y el marco se encarga de la fragmentación bajo el capó).