Blogia

bappf

Sur l'immigration et la pauvreté

Richese et pauvreté, ces sont des realités qu'on ne peut pas détacher. Ces sont, tous les deux, des concepts rélatifs: chaque un c'est la mesure de l'autre. Je suis riche ici, mais je serais pauvre là. Cela depends du percentage de la population qui se trouve dessous --ou dessus-- moi.

Alors, si on regarde comme ça la question de l'immigration —l'immigration pauvre—, on pourrait la reformuler de la manière suivante: quoi faire avec les riches? Qu'est-ce que la societé peut faire pour se bien protéger d'eux? Quoi faire avec leurs voitures grandes, bruyantes et contaminantes? Qu'est-ce qu'on pourrait faire avec de l'eau qu'ils gaspillent dans leurs champs de golf? Combien des familles pourraint vivre dans les jardins autour de leurs maisons?

"Ah! L'immigrant noire, il m'a volé le portefeuille!", bien sûr. Mais, aussi: "putain! Le PDG il a fui des impôts pour autant valeur que la somme des valeurs des portefeuilles que tous les inmigrants noirs ont volé en France pendant une année!". J'habite dans un quartier riche parce que j'ai peur qu'un algérien prenne mon vélo; alors, je paie chaque mois au propiétaire de mon appartement —dans un quartier très mignon, bien sûr— une augmentation sur le prix d'un appartement equivalent dans un autre quartier qui bien pouvait m'acheter un vélo mensuel. Seule l'une c'est une crime.

Ces sont des contradictions courantes sur lesquelles personne ne parle jamais. On pouvait supposer que cela a à voir avec le fait que ce sont les élites qui contrôlent les médias. La realité des derniéres jours en Espagne le montre très ilustrativamente: le groupe Recoletos, éditeur de journaux, viens de lancer un nouveau journal gratuite. Pour qui? Alors, ils ont fermé le cercle: Expansión pour ceux en haut , Qué! pour ceux en bas, et Marca, l'opium du peuple, pour la majorité endormie.

Este miniopúsculo fue una pequeña tarea de francés que espero que nadie juzgue por la forma —macarrónica, bien lo sé—, sino por el fondo.

Programación mediante diagramas, destornilladores y cinta aislante

Mi empresa, entre otros productos, distribuye un seudolenguaje que permite escribir programas sin programar: a través de una interfaz gráfica se construye un árbol dirigido que representa el flujo del programa y cuyos nodos, configurables a través de menús, realizan las operaciones y transformaciones pertinentes.

Pero, por ejemplo, no existe manera de transferir un diagrama de una máquina a otra sin tener que rehacer manualmente el grafo entero. No hay que hablar siquiera de cómo enviar un proyecto a un colega por correo o —afortunadamente, casi— llevarse el trabajo a casa.

Más aún, la nueva versión ha resultado incompatible con los viejos diagramas y la metodología de la migración que vamos a tener que realizar en un cliente haría sonreír a más de un curtido programador de los de la vieja usanza: a partir de un taco de folios con capturas de pantalla de los detalles de configuración impresas, hay que elaborar un documento en el que se especifique —en términos, poco más o menos, de eventos de ratón— cómo hacer para recrear, uno a uno, nodo a nodo (y ni siquiera existe una relación biyectiva entre ellos), menú a menú, los antiguos programas.

Las buenas noticias son, si le puede encontrar parte amena al cuentecillo, que el software propietario no nos ha retrotraído (¡todavía!) a los tiempos de la programación con destornillador y cinta aislante.

El país anumérico.

El matemático John Allen Paulos escribió hace unos años uno de esos pocos libros con los que merece la pena pasar un rato: El hombre anumérico. El hombre anumérico tropieza con números —un millón de euros, cincuenta mil desplazados, tres millones de parados, 34 asesinatos— pero brinca sobre las cifras y se limita a sacar la cartera o a dar un amén borreguil al primero que se las interprete.

El hombre anumérico no es un hombre inculto: los cánones de la cultura los dictaron otros de su estirpe y las artes fueron numeradas (las seis primeras, al menos) antes de conocerse, siquiera, el cero. Pero se aplauden, incluso, sus excusas inexcusables. Es un hombre víctima de los telediarios. De él se ocupa John Allen Paulos.

Yo quiero hablar del país anumérico, del rebaño con himno, constitución y bandera, de hombres anuméricos. Del que, suma de víctima de telediarios, es frontón de la pelota de la razón y verdugo del progreso. Perlas del papanatismo numérico patrio son:

  • Que el presupuesto militar español de defensa dividido por el precio medio de un kilómetro de autovía llegue de Barcelona a Cádiz (subrayo: ¡cada año!) y nadie se escandalice.
  • Que EE.UU. haya donado 350 millones de d'olares para las víctimas del maremoto en Asia, que eso salga en cosa de 60 céntimos de euro por gringo y que la gente crea que es mucho y no poco.
  • Que haya diez veces más soldados gringos en Irak que ayudando a dichas víctimas (unos 150.000 contra 16.000) y que nadie considere un insulto para su inteligencia que se diga que con eso los EE.UU. pretenden lavar su imagen.
  • Que una constructora pueda hacerse dueña del segundo mayor banco de España comprando el 3% de sus acciones y nadie lo encuentre incongruente.
  • Que todavía se hable de ETA.
  • Que se hable del plan Ibarretxe todos los días y del desempleo sólo una vez al mes.

En fin, una lista que iré actualizando conforme se me aviven las dotes enumerativas y cuando no me urja tanto el abrir en IDE de Python.

Y todo sigue igual, ¿o no?

Pues todo sigue, más o menos, igual... ¿o no? Al menos, a mi conciencia le cuesta reacostumbrarse a mi tradicional agrafia y de poco le valen ya los pretextos del viaje a París y las alteraciones propias de las épocas que ahora concluyen.

Cierto que acabo de matricularme en la Alianza Francesa y que he comprado un bono para acudir, por primera vez en mi vida, a un gimnasio. Pero algunos de los fantasmas más contumaces —que creí, infeliz de mí, iban a ser incapaces de tramontar el medianil entre año y año— se me han presentado súbitos y amenazantes. Mareo las aguas que, algo apartadas ya de las que llaman negocio, colindan con el fraude. Se cierne una tormenta ética de la que temo salir cornudo y, con añadidura de inri, apaleado. Todo desenlace es posible y el de los cobardes que huyen se me antoja el más sosegado y apetecible.

De los males del que se fue y de los proyectos del año que entra iré dando cuenta en estas páginas. De que no se malogren los últimos y tiendan a reproducirse los primeros dependerá el que en doce meses pueda decir ¡ja!

Nota más de andar por casa: mi programa de gestión de proyectos ya tiene ojos que ven, uno de los lóbulos que piensan y una mano, torpe aún, que garabatea proto-calendarios.

Instalación de PostgreSQL sobre Cygwin

Resumen

Este documento explica cómo instalar la base de datos PostgreSQL sobre Cygwin.
Nota: se consideran sus versiones 7.4.5 y CYGWIN_NT-5.0 respectivamente.

Instalación de Cygwin

Todo lo que hace falta saber sobre cygwin se puede consultar en
http://www.cygwin.com
A la hora de instalar el paquete, basta con una configuración mínima (pero que, por supuesto, incluya a Postgres).

Instalación de PostgreSQL

1.- Modificación del "path" de Windows:

Es necesario añadir al "path" de Windows el camino de los directorios donde están contenidos los ficheros cygserver.exe y cygwin1.dll. Bajo Cygwin, se encuentran en /usr/sbin y /bin respectivamente. Bajo Windows se corresponderían con C:/Cygwin/usr/sbin y C:/Cygwin/bin, por ejemplo, de ser C:/Cygwin el directorio raíz de Cygwin.

2.- Variable de entorno CYGWIN:

En primer lugar es necesario definir la variable de entorno CYGWIN como "server". Los manuales especifican "añadir" en lugar de "definir", dando a entener que CYGWIN pudiera contener información necesaria para otros programas. Probablemente, en una situación general, CYGWIN es una sucesión de cadenas enlazadas de alguna manera que habría que averiguar llegado el caso.

3.- Instalación de cygserver como servicio (demonio) de Windows:

Desde la consola de Cygwin, se ejecuta

$ cygserver-config

4.- Creación de la cuenta del usuario "postgres":

$ net user postgres CoN7rA5eNnA5eCrEtA! /add /fullname:postgres /comment:'PostgreSQ, cuenta de usuario' /homedir:"$(cygpath -w /home/postgres)"
$ mkpasswd -l -u postgres >>/etc/passwd

En el primer comando, CoN7rA5eNnA5eCrEtA! podría, debería, cambiarse por otra contraseña a elegir. Idem, con el comentario. Ignoro si cambiar el nombre del usuario provoca algún tipo de problema.

5.- Privilegios para el usuario "postgres":

En Windows, se crea el usuario "postgres" y se le asigna el privilegio "Log on as a service".

6.- Instalación del servicio (demonio) "postmaster":

$ cygrunsrv --install postmaster --path /usr/bin/postmaster --args "-D /var/postgresql/data -i" --dep cygserver --termsig INT --user postgres --shutdown

El comando anterior "registra" el servicio, pero no lo levanta: todavía quedan unos pasos antes de verlo correr. La ubicación del directorio de datos es la recomendada, pero existen, y se ven por ahí, alternativas igualmente razonables. El significado de las opciones restantes puede consultarse en la ayuda de cygrunsrv.

7.- Creación del directorio de datos:

$ mkdir -p /var/postgresql/data
$ chown postgres /var/postgresql/data

8.- Arranque de cygserver:

$ cygrunsrv -S cygserver

9.- Conexión como "postgres":

$ login

Cygwin pregunta entonces por el usuario, "postgres", y su contraseña.

10.- Configuración de la base de datos:

$ initdb -D /var/postgresql/data

11.- Arranque del servicio (demonio) "postmaster":

$ cygrunsrv -S postmaster

Una vez arrancado, se puede comprobar si funciona correctamente ejecutando

$ cygrunsrv -Q postmaster

o bien desde la consola de servicios de Windows. Pistas sobre los problemas que pueda presentar el arranque pueden consultarse en /var/log/postmaster.log o en el "NT Event Log" de Windows.

12.- Conexión a PostgreSQL:

$ psql -U postgres template1

El programa anterior, psql, permite lanzar cueris sobre PostgreSQL desde una consola de texto. Existe, sin perjuicio de otros, un cliente gráfico, pgAdmin III.

Otras cuestiones

1.- PostgreSQL sobre Cygwin sólo tolera la locale "C" porque el mismo Cygwin no las implementa completamente. Por eso, hay que definir la variable de entorno LANG como "C" o, simplemente, dejarla sin definir. Si no, initdb no funciona.

2.- PostgreSQL sobre Cygwin puede no arrancar o funcionar incorrectamente si determinados ficheros y directorios carecen de los permisos adecuados. El problema puede solucionarse habitualmente de la manera siguiente:

$ chmod a+rwx /tmp
$ chmod a+rx /usr/bin /usr/bin/*
$ chmod a+rw /var/log # esto podría afectar el funcionamiento de otros servicios (demonios)

3.- Podría ser necesario incrementar el número de semáforos (SEMMS) globales de cygserver. Para ello hay que editar el fichero /etc/cygserver.conf introduciendo en él una línea del tipo

kern.ipc.semmns 100

para, después, reiniciar cygserver. Si no, PostgreSQL podría no funcionar adecuadamente. Por ejemplo, initdb podría no arrancar si postmaster estuviese levantado.

¿Por qué no suena la alarma cuando paso el portátil por el escáner?

Pues porque es un escáner al servicio de la oligarquía cleptómana y yo, con gabardina, corbata y traje de saldo, parezco otro de los miembros del rapaz contubernio. Recuerdo que una vez, hace años, me sonaron las alarmas en el ayuntamiento por llevar una navajilla en el bolsillo. No quedó muy convencido el benemérito de mi excusa: que la necesitaba para trocear el pan de los bocadillos porque tenía un diente roto. Claro, entonces gastaba sandalias, pantalones cortos, camisetas del Ché y pocas cuchillas de afeitar. Pero no usaba la navaja para robar.

Para eso uso ahora, años más tarde, el portátil. Robo a un ladrón que merecido lo tiene, bien es cierto. Pero tampoco se me oculta que, aparte de los consabidos cien años de perdón, no me voy a llevar otra cosa que una palmadita en el hombro y un plus magro en febrero. El botín se lo repartirán los carroñeros habituales.

Si este mundo fuese distinto, ni se mofaría de mí el madero que tramitase la denuncia ni me considerarían un traidor los más allegados. Y me haría merecedor de una recompensa que me sacase de pobre en concepto de plusvalías no dilapidadas tontamente y de reputaciones no universalmente carcajeadas.

Pero todo es cual es y mañana, a las ocho, saldré de casa con mi portátil-navaja de filo sucio de sangre seca y cifras mendaces.

Dubitates nostras cottidianas danobis odie

Pues sí, ha sido un día de más dudas que certidumbres. Al cabo de tanto cavilar no he podido decidir si abundar sobre alguno de los siguientes puntos:

  • Que el gobierno pueda financiarse a tasas inferiores a la de la inflación, no lo haga y, además, no le dé vergüenza.
  • Que la actividad bancaria no se haya proletarizado definitivamente.
  • Que se toleren los planes de regulación de empleo en empresas en presuntos apuros económicos sin que hayan sustituido en todos sus equipos informáticos Windows por, por ejemplo, Debian.
  • Lo mismo, pero sin que el plan no se haga extensivo, y en las mismas condiciones, a alícuota proporción del consejo de administración.
  • Lo mismo, pero sin que se efectúe una expropiación sin derecho a compensación del correspondiente porcentaje del capital, sea en acciones, participaciones preferentes u otros efectos.
  • Que haya quien venga a pensar como si las cosas tuviesen alma y que en ella viniese grabado el nombre de su dueño.
  • Que los empleados de cierto operador de telefonía móvil llegasen a adquirir acciones de su propia empresa aun a sabiendas de que son una cuadrilla de vagos e ineptos.
  • Que las paradas del autobús, indefectiblemente, estén subestratégicamente emplazadas.

Son todos, como se aprecia, temas de muy jugoso desarrollo y a los que habré de dedicar alguna noche venidera.

Salvando los muebles

Tuve un dominio y lo perdí. Lo abandoné porque era más fuente de trabajos que de remuneraciones. Una fête nationale, la del 2002, colgué mi paginita de internet con más expectativas que cálculos. Otra fête nationale, la de dos años después y sin pena ni gloria, los DNS's devolvieron IP's en vano y ahora nada queda de www.consultoresestadisticos.com.

Lo peor de todo es que ahora que rebusco por entre mis ralos bacaps y de ella nada hallo. La copia que de su contenido guardaba queda en su contenedor: un disco duro que ahora se oxida muy lejos. Sólo me queda ver de salvar los pocos muebles que del poco prevenido, por más que anunciado, naufragio hayan perdurado varados en alguna playa recóndita del oceanoso internet.

Curiosamente, buscando "sigma consultores estadísticos" en Google he tropezado con un plagio escandaloso de algunos de mis parrafitos más difíciles de re-componer. Habían sido reeditados, pero conservaban algunas de esas peculiaridades sintácticas y léxicas que comparten los hijos de mi teclado y de los escasos claros de mi guadianizante ingenio. Y, afortunadamente, sumergido en la parte no visible de la página, su mismo código fuente, he encontrado un enlace a esto, una copia enteramente fidedigna —y, hecho curioso, exactísimamente atribuida a su legítimo dueño— al texto original. Más curioso todavía, está alojada en el servidor de una empresa que consideraba competencia y que, además, promueve el uso de un software estadístico que yo desaconsejaba más o menos explícitamente.

En fin, que lo que en mi día escribí es como sigue:

Análisis Comparativo de Paquetes Estadísticos

Muchas de las consultas que recibimos en Sigma Consultores Estadísticos se refieren a recomendaciones acerca de la idoneidad de uno u otro paquete estadístico para un usuario, aplicación o proyecto concreto. Por eso nos hemos sentido urgidos a hacer constar públicamente nuestra opinión al respecto.

En cualquier caso, tenemos que dejar claro por adelantado que todo lo que sigue no es sino una opinión particular, por más que cualificada por nuestra amplia experiencia, y desinteresada por nuestra desvinculación respecto a todo distribuidor comercial. Sabedores de que pueda estar en conflicto con muchas, le invitamos a leerla y, de estar en desacuerdo con nosotros, a transmitirnos sus comentarios.

Las variables que es necesario tener en cuenta para comparar adecuadamente unos paquetes estadísticos de otros son, esencialmente, las cinco que se discuten a continuación:

1.- Coste

Esta página no tendría apenas sentido de no existir en el mundo sino software libre: de tener SAS o SPSS en el disco duro quedarían satisfechas el 99.9% de las necesidades del 99% de los usuarios potenciales de los métodos estadísticos y el 90% del 1% restante. Desafortunadamente, el coste de sus licencias está fuera del alcance de la mayor parte de los usuarios y la obtención de copias subrepticias no es posible para muchos ni fácil en absoluto para ninguno.

2.- Nivel de sofisticación del usuario

Idealmente, éste debería ser un entendido en estadística y tener ciertos conocimientos de programación. En la medida que carezca de los segundos, tendrá que renunciar a realizar por su cuenta cierto tipo de análisis que vayan más allá de los más comunes; y en tanto que carezca de los primeros, será más dependiente de aquellos paquetes con un interfaz más informativo.

3.- Tamaño del conjunto de datos

En la mayor parte de los problemas —al menos, en lo que respecta a su número, no a su dificultad ni importancia— esta variable no supone ninguna restricción significativa. De hecho, cualquiera de los paquetes que se examinarán a continuación puede manejar sin mayores problemas conjuntos de datos no excesivamente grandes. Sólo cuando se rebasa cierto umbral es preciso considerar paquetes específicamente diseñados para hacer frente a este tipo de condicionantes.

De todos modos, los ordenadores modernos permiten manipular eficientemente conjuntos de datos cada vez más extensos. Por ejemplo, con un ordenador con 256 MB de RAM que en Agosto del 2002 costó 500 euros hemos podido ubicar simultáneamente en memoria casi 53 millones de números reales de doble precisión. Eso significa que, probablemente, cualquier paquete estadístico podría manipular eficientemente conjuntos de datos con algunos cientos de miles de entradas. Además, cualquier sistema operativo debería ser capaz de reubicar, en caso de necesidad, el exceso de la demanda de memoria en el disco duro; ciertamente, eso ralentizaría significativamente el proceso de manipulación de los datos, pero permitiría salir del paso en alguna situación puntual.

De hecho, el mayor de los conjuntos de datos que hemos analizado en Sigma Consultores Estadísticos consistía en una matriz de dimensión 7128x72, es decir, cosa de medio millón de números que, supuestos de doble precisión, apenas venían a ocupar un 1% de la capacidad teórica máxima del computador.

Los distribuidores de muchos paquetes estadísticos comerciales suelen hacer hincapié en la probada capacidad de sus productos para manipular grandes conjuntos de datos. Desafortunadamente para ellos, el rango de problemas en que estas virtudes son críticas se estrecha aceleradamente: por una parte, las ampliaciones de memoria son cada vez más económicas, elevando hasta niveles muy cómodos el umbral a partir del cual serían necesarios productos más sofisticados; por la otra, para los problemas en que los conjuntos de datos son verdaderamente grandes -bases de datos de corporaciones, información censal, etc.- pueden emplearse herramientas específicas como, por ejemplo, programas escritos en C que interactúen con el gestor de la base de datos.

4.- Grado de intensidad computacional

El incremento en la potencia computacional de los ordenadores permite hoy en día aplicar ciertas técnicas estadísticas impensables hace unos años y ampliar su campo de aplicación a ámbitos inasequibles para las tradicionales. Las técnicas de remuestreo o de validación cruzada, ciertos tests exactos y gran parte de las técnicas bayesianas exigen una enorme capacidad de cálculo.

No todos los paquetes estadísticos están igualmente adaptados para este tipo de problemas. Con muchos de ellos —por ejemplo, Minitab, Stata y gran parte de los paquetes gratuitos— resulta simplemente imposible porque fueron diseñados únicamente para implemementar técnicas tradicionales y carecen de un verdadero lenguaje de programación asociado que resulte eficiente.

Otros sí que cuentan con él. Por ejemplo, SAS permite realizar cierto número de manipulaciones no elementales en su data step, así como construir programas relativamente complejos usando su sistema de macros y gran número de operaciones matriciales, un poco al estilo de MatLab, usando las rutinas de su extensión IML. Además, es relativamente veloz en comparación con otros lenguajes de programación no compilados. Sin embargo, adolece de ciertas desventajas que dificultan su aplicación eficiente a cierto tipo de problemas y que tiene que ver con su misma estructura, un tanto desfasada. Así, SAS realiza la mayor parte de los cálculos estadísticos por medio de los llamados procedimientos, verdaderos programas independientes con un interfaz relativamente rígido. Los programas en que uno quiere acceder repetidamente —digamos, unas cuantas decenas de miles de veces— a uno sólo de los campos que calcula cualquiera de tales procedimientos puede convertirse en una tarea frustrante y extenuante. Las nuevas versiones de SAS incluyen, es cierto, mecanismos que agilizan estas tareas pero, incluso con su concurso, resulta, por ejemplo, que los procedimientos siguen empeñándose en escribir sus resultados en el fichero .log que enseguida se satura. Entonces, aunque se deje a SAS resolviendo automáticamente un problema cuyo cálculo se extienda durante cierto número de horas, todavía hay que estar pendiente de él borrando manualmente el fichero .log cada cinco o diez minutos so pena de que la ejecución del programa se interrumpa.

Sucede así porque SAS no fue concebido originalmente como un lenguaje de programación en sí, sino más bien como un conjunto de programas semi-independientes sobre el cual se ha construido después un lenguaje de macros. Por eso que recientemente le hayan comido terreno en ciertos campos que exigen de gran poder computacional otros paquetes estadísticos más próximos a lo que se entiende por un verdadero lenguaje de programación. Por ejemplo, S, un hermano de C en cuanto a su origen, los laboratorios Bell —muy aficionados a los nombres sucintos—.

S es un lenguaje de programación orientado a objetos, concebido originalmente para ser utilizado en aplicaciones estadísticas, por lo que cuenta, implementados en el mismo lenguaje, con gran número de procedimientos estadísticos y mecanismos para la manipulación de datos y matrices. Existen, sin perjuicio de otras, dos versiones disponibles de él. Una, S-Plus, es comercial e incluye un interfaz bastante completo y una nada desdeñable capacidad gráfica. Su principal contrapartida es el coste de sus licencias. Afortunadamente, existe otra versión gratuita, R, libremente diponible en internet y cuyas virtudes y limitaciones se analizarán sucintamente más adelante.

5.- Ergonomía

Curiosamente, el aspecto que tal vez más encarezca determinados paquetes estadísticos es el ergonómico: la posibilidad de contar con ayudas interactivas o tutoriales, de representar gráficamente datos con un golpe de ratón, de exportar automáticamente los resultados a formato .html o .pdf, etc. Bajo cierto punto de vista, el coste de las licencias es, de hecho, el coste de la impericia o la pereza. A la primera, en mercadotecnia, se la suele denominar productivity; a la segunda, learning curve. Es más productivo y exige menor esfuerzo mental un paquete estadístico en que para imprimir no haya sino que pulsar el icono de la impresora, en que para visualizar unos datos baste con visitar el menú Gráficos o el Importar para leer datos de un fichero con el formato de cierta hoja de cálculo. Este tipo de habilidades son realmente reduntantes si se cuenta con un mínimo de habilidad y no se pretende escatimar un adarme de esfuerzo: utilizando ficheros de texto como intermediarios, se pueden intercambiar datos con cualquier hoja de cálculo o con otros programas que permiten manipular datos o gráficos, gran parte de los cuales son de distribución gratuita.

Por ejemplo, Sigma Consultores Estadísticos se vio una vez necesitada de un mecanismo para representar gráficamente matrices de correlación entre cierto número relativamente grande de variables. Existen programas comerciales bastante costosos que permiten visualizar este tipo de información mediante códigos cromáticos. Ninguna hoja de cálculo incluía gráficos de esta naturaleza, dado que concernía a una aplicación un tanto específica que no tenía cabida en ningún programa genérico. ¿Cuál fue nuestra solución? Utilizando R -programa gratuito- calculamos la matriz de correlación, la exportamos a un fichero de texto y la insertamos en un fichero de extensión .htm, una página de internet, que contenía apenas 20 líneas de código en JavaScript, un lenguaje de programación gratuito incluido en todos los navegadores de internet modernos. Con un coste nulo y un esfuerzo mínimo, muy inferior al de adquirir la licencia del programa comercial, obtuvimos un resultado análogo.

Nuestra Recomendación

A la vista de lo discutido más arriba, nuestra recomendación es simple. A los usuarios que sólo se aproximan circunstancialmente a problemas de tipo estadístico y que sólo buscan soluciones poco sofisticadas y puntuales les invitamos a:


  • Reexaminar las rutinas estadísticas de cualquier hoja de cálculo, incluyendo, tal vez, algunos de los macros de libre distribución que pueden encontrar en internet.
  • Utilizar algún programa de propósito más general, como Mathematica, Maple, MatLab u otros.
  • Usar algún programa gratuito con un interfaz simple como los que pueden encontrarse acá.
  • Tal vez, buscar en internet alguna de las cada vez más numerosas páginas en las que es posible realizar interactivamente y en línea determinadas manipulaciones estadísticas.


Por otra parte, a aquellos usuarios que tengan que realizar análisis estadísticos más complejos y de una forma más regular les recomendamos, como primera opción R, programa gratuito que pueden descargarse acá. Usado en combinación con otro tipo de programas que extienden su capacidad gráfica -hojas de cálculo, procesadores de texto, programas específicos para la representación de datos, JavaScript, etc.- puede realizar con un coste nulo análisis sumamente sofisticados que, incluyen, tal vez, el 99% de los que precisan el 95% de los usuarios. Sólo un número pequeño de ellos echaría en falta alguna de las herramientas adicionales que incluye su versión comercial, S-Plus, o tal vez alguna de las de SAS o SPSS u otros.

De todos modos, incluso en tal caso, hay que tener en cuenta que o bien este tipo de herramientas adicionales —pensamos, por ejemplo, en las herramientas de S-Plus para ondículas (wavelets)— están presentes en otro tipo de paquetes más genéricos -MatLab, por ejemplo- y que sólo en contadísimas ocasiones, en problemas que realmente exigen de un elevadísimo poder computacional, tendría que recurrir a elaborar sus propios programas en un lenguaje genérico como C o C++. Más adelante hay una discusión al respecto.

Finalmente, grandes empresas, institutos estadísticos, centros de estudio y otros grandes usuarios de aplicaciones estadísticas que necesitan manipular grandes bases de datos y coordinar grupos de trabajo encargados específicamente de ellas, aparte de las soluciones antes mencionadas, válidas para tareas más rutinarias, tendrían que sopesar hasta qué punto les es ventajoso adquirir una licencia para usar uno de los grandes paquetes estadísticos, SAS o SPSS en lugar de, simplemente, utilizar su propio código, en C o C++ por ejemplo, para interactuar con los gestores de bases de datos y analizar de esta manera la información que contienen. Esta segunda opción podría resultarles, en los más de los casos, más económica. Además, como se verá en el último de los apartados de esta página, puede ser más barato adquirir determinadas librerías ya disponibles, tanto comercial como gratuitamente, que podrían potencialmente convertir cualquier compilador de C o C++ en un verdadero paquete estadístico de gran poder. Probablemente, además, les resulte más económico conseguir programadores en un lenguaje genérico que en otros específicos.

Comparación entre R y C++

Para manipulaciones estadísticas habituales —regresiones, análisis de la varianza, estadística descriptiva, series temporales, etc.— sobre conjuntos de datos de, por ejemplo, hasta 100 MB, R es tan eficiente como pudiera serlo cualquiera de los paquetes estadísticos comerciales —SAS, SPSS o, por supuesto, siendo básicamente, la misma cosa, S-Plus—. La principal de las limitaciones de R como lenguaje para realizar manipulaciones estadísticas más complejas que incluyen gran número de iteraciones y que van popularizándose dentro de la estadística aplicada conforme se abarata la capacidad de cálculo de los ordenadores, es consecuencia del hecho de ser un lenguaje interpretado y no compilado. De todos modos, el lenguaje incluye mecanismos que permiten sortear hasta cierto punto este tipo de dificultades.

Por ejemplo, para sumar los datos contenidos en una lista de valores puede utilizarse un bucle for o, como alternativa, el comando sum, que invoca una rutina precompilada; no obstante, la primera opción puede resultar del orden de 100 veces más lenta. Como consecuencia, programar R eficientemente en ciertas aplicaciones en que es necesario iterar determinados cálculos puede implicar recurrir a determinados trucos que serían tachados de malas prácticas de programación por los ortodoxos. Bajo este punto de vista sería preferible escribir programas en un lenguaje que permitiese compilar el código.

Bajo otro punto de vista, programar en C o C++ puede resultar ineficiente en el sentido de que determinadas operaciones, como el producto de matrices, la obtención de sus valores propios o el cálculo de los parámetros de una regresión, están implementados en R y se resumen en una sola línea de código, mientras que en C o C++ exigirían, posiblemente, varias decenas de ellas.

Existen tres alternativas para sacudirse esta disyuntiva:

  • Esperar a que surja un compilador de S -o R, o S-Plus-, cosa cuya dificultad técnica no nos atrevemos a pronosticar y que es probable que no ocurra jamás.
  • Explotar el interfaz de S -o R, o S-Plus, de nuevo- con rutinas externas escritas en otros lenguajes, cosa que conlleva ciertas dificultades debido a su complejidad y que implica un grado de sofisticación por parte del usuario que no es legítimo exigirle en todos casos.
  • Utilizar librerías que permitiesen utilizar cualquier compilador de C++, por ejemplo, en un verdadero paquete estadístico.


La tercera opción es, probablemente, la más factible a medio plazo y son numerosos los estadísticos que la contemplan, a la par que subrayan la complejidad de poder llevar a cabo un programa de tal tipo. Lo ideal sería poder contar con librerías en C++, por ejemplo, que simulasen los comandos estadísticos específicos de R o SAS y clases que permitiesen operar con matrices y otras estructuras de datos con la misma soltura que en MatLab, R o SAS-IML. Ya existen algunos intentos, parciales por el momento, para desarrollar dicho proyecto. Lamentablemente, el más avanzado, que sepamos, está patrocinado por una empresa comercial a la que no creemos dispuesta distribuir el código en un régimen abierto. Existen otros ensayos parciales por parte de programadores independientes alguno de los cuales querríamos ver fructificar pronto y que abriría la puerta a la democratización casi absoluta de los recursos computacionales en este área.

Al hilo de la discusión anterior, y como colofón, queríamos hacer constar el interés que tenemos en Sigma Consultores Estadísticos en aportar, como proyecto a medio plazo, nuestra colaboración en este sentido creando nuestras propias librerías en C++ estándar bajo una licencia de código abierto, libre distribución, etc. Para informarse acerca de la evolución del proyecto, sugerencias e, incluso, colaboraciones, invitamos a nuestros lectores a escribirnos.

Introito

Ésta es mi primera incursión en este mundo de las bitácoras. Me sorprendería —dada mi natural inconstancia— que deviniese decana de muchas otras. Es curioso: hasta no hace tanto había desconfiado de sus autores y de las intenciones que los animaban a dar a conocer al mundo irrelevancias de andar por casa o pensamientos que, de adocenados, ñoños o pueriles, no admitían más honroso acomodo.

Pero desde que perdí mi antiguo dominio y dejé de pagar alojamiento de la página que mantuve, quedé sin manera de comunicar a Google el contenido —presente y futuro— de mi directorio ~/doc para su adecuada indexación. Hay en él hay y habrá muchas cosas y de muy desigual calidad y naturaleza; advierto, no obstante, que las más serán técnicas, mías, muy sudadas y que conviene hacer saber por fomentar la eficiencia global de aquel subconjunto de la hispanidad que tropiece con dichas cuestiones.

Soy reacio a abundar en lo personal; me invitan a hacerlo, tanto por éste como por otros conductos, gentes que me quieren y que esperan que medite hasta qué punto es elegida la soledad en que me muevo, repiense las causas de mi asociabilidad y que me esfuerce por aprenderme, al menos, los nombres de las personas con quienes coincido más a diario.