lunes, 19 de septiembre de 2016

Concurso Dpto Computacion/Exactas: predicción de orden de mérito


En la facultad de Ciencias Exactas y Naturales de la Universidad de Buenos Aires existen concursos docentes. Para conseguir un cargo los aspirantes luego de juntar ciertos requisitos compiten contra otros candidatos. El concurso se basa en cuantificar distintas categorías de la experiencia del aspirante (antecedentes docentes, de extensión, científicos, calificaciones, etc) y una prueba de oposición donde el concursante debe performar alguna tarea establecida por el jurado. Dependiendo del cargo que se concursa dicha tarea va desde presentar la resolución de un ejercicio hasta presentar el plan de práctica de una materia.

El cargo de ayudante de 2da tiene dos particularidades: los aspirantes deben ser alumnos y la duración del cargo es de 1 año por lo que para sostener el mismo deben concursar anualmente. En el departamento de computación los concursos están separados en 3 áreas con aproximadamente 45 cargos regulares en total. En el 2015  quedaron los distintos órdenes de mérito aproximadamente 140 personas. Teniendo en cuenta que la prueba de oposición más la discusión del jurado dura al menos 15-20 minutos y que en cada concurso hay 3 jurados, se dedicaron entre 100 y 140 hs hombre (sin contar el extenso trabajo previo de cuantificar los antecedentes), 3.5 semanas laborables completas (40 hs semanales).

Como la información de los concursos es pública nos preguntamos si existe alguna regularidad en los dictámenes entre aspirantes y año tras año.

Distribución en el orden de mérito de concursantes con y sin experiencia en concursos previos.


Tomando como ejemplo el concurso de ayudante de 2da área algoritmos para 2013, 2014 y 2015 se puede medir cómo se distribuye el orden de mérito en función a si el concursante tiene experiencia en concursos del área o concursa por primera vez.  En principio las tasas de concursantes nuevos, es decir sin experiencia, es la siguiente:



Año
Tasa de concursantes sin experiencia
2013
0.3606
2014
0.5571
2015
0.4492


Teniendo en cuenta esto y que dicho concurso hay 20 cargos podemos separar el orden de mérito en los que obtienen un cargo regular (los primeros 20) y los que no (desde la posición 21 en adelante). Cabe aclarar que después terminan obteniendo cargo más aspirantes ya sea por renuncias o por nominaciones interinas.

Los nuevos candidatos se distribuyen muy distinto en los dos grupos (los que obtienen cargo vs los que no) acorde a lo esperado.

Sobre aspirantes sin experiencia

Obtuvieron cargo
No obtuvieron cargo
2013
12%
88%
2014
10%
90%
2015
14%
86%

Esto confirma  lo esperado, ingresantes nuevos se distribuyen no uniformemente quedando más atrás en el orden de méritos de los concursos.

¿Somos consistentes en el tiempo? ¿Mejoramos?


Otra pregunta que nos preguntamos fue si existe una correlación en cada aspirante entre concursos consecutivos. Es decir, si en el 2013 un concursante salio ultimo ¿Es esperable que en el siguiente salga primero? Si otro salió 5to en el 2013 ¿Es esperable que salga en la posición 70 en el 2014? Para contestar esto armamos la relación <posicion concurso anterior, posición concurso actual> para todos los sujetos (a su vez armamos la misma relación pero normalizando la posición en el concurso por la cantidad de concursantes)


Los datos muestran que existe una correlación positiva (pearson rho >0.68, pval<10^-15) indicando que se mantiene cierto orden en el tiempo. Esto significa que si en un un concurso un aspirante quedó en la posición 10 es en el próximo probablemente quede cerca de la misma posición y lo mismo ocurriría para aquel que quedó al final del orden. Sin embargo, si bien el comportamiento tiene esta pinta también muestra que los aspirantes mejoran con el tiempo (más antecedentes y/o mejoran en la prueba de oposición) . De hecho la recta que mejor fitea los datos de ay2 algoritmos tiene  es:

posicion_nuevo_concurso = posicion_concurso_anterior * .72 + 1.98

Suponiendo que tenemos 70 inscriptos en el concurso constantemente para los dos años.
Si en el 2013 un aspirante salió en la posición 60 (osea casi a lo último), este modelo predice que en el 2014 el mismo aspirante saldrá (o salió) en la posición 45. Si otro salió, en el 2013, en la posición 20 el modelo propone que en el 2014 el aspirante saldría en la posición 16/17.

Para testear la validez de este “modelo” performamos validación cruzada de 5 folds reportando un r^2 promedio es 0.46 con una varianza de 0.07.

Para analizar cómo mejoran los concursantes en el tiempo, tomamos todos los aspirantes a concursos de ayudante de 2da con 4 concursos en el mismo área (15).

Tomando la media por concurso por sujeto podemos caracterizar la curva promedio de mejora donde se aprecia lo esperado, inicialmente mejoramos rápidamente y luego disminuye la velocidad, lo que es esperable pues el top10 del ranking tiene mucho menos rango que las últimas 10 posiciones.

Automatización de orden de mérito


Dada las regularidades que ya reportamos nos preguntamos que resultaría de ordenar los aspirantes automáticamente.

La primera prueba que hicimos fue preguntarnos cómo nos va seleccionando a los ganadores. Para eso definimos la siguiente estrategia: Tomamos la lista de aspirante del concurso actual sin orden e  intersecamos con la lista con el concurso anterior respetando el orden del concurso anterior. Devolvemos como nuevo orden esta lista y luego los restantes en cualquier orden. Esta idea trivial genera los siguiente resultados para los concursos de ayudante de 2da algoritmos.

Sobre los 20 ganadores
Año
Precisión
Chance
2013
65%
28%+-4%
2014
60%
29%+-4%
2015
80%
33%+-4%

Los valores de chance son los obtenidos al comparar nuestra estrategia con distintos órdenes al azar. Esta comparación la reportamos para tener idea de cuán bien funciona nuestra estrategia.

La siguiente prueba que hicimos fue intentar regresionar la posición de cada concursante en el orden de mérito.  Para eso enriquecimos un poco más cada aspirante con los siguientes atributos:

  • Cantidad de concursos anteriores (en cualquier área)
  • Si ya concurso como ayudante de primera
  • La media en las posiciones relativas en concursos anteriores
  • El desvío estándar en la posición relativa en concursos anteriores
  • La media de la derivada de las posiciones relativas en concursos anteriores
  • La posición en el concurso inmediatamente anterior

Tomando estos atributos haciendo una regresión no lineal en el mismo esquema de validación cruzada de 5 folds obtenemos un r^2 de 0.6145, mucho mejor que con el modelo lineal y más simple.

En resumen, tener bien formateados los datos para hacer análisis de este tipo puede resultar interesante. Lamentablemente no contábamos con los valores para cada categoría del concurso (antecedentes docentes, extensión, etc…) , con esto podría haberse estudiando el efecto de sobre ajustar la performance de la prueba de oposición al jurado, práctica que se ejerce comúnmente. A su vez, estudiar el sesgo que ponen los jurados al usar distintos rangos para cada categoría.

Algunas ideas de que mirar y cómo medirlo fueron pensadas y discutidas con Edgar Altszyler


jueves, 2 de junio de 2016

Estadística Exactas-UBA: alumnos y examenes finales

Hace algunos años con Pablo Zivic (@ideasrapidas) analizamos los datos de los alumnos / cursadas / finales de la facultad de Ciencias Exactas y Naturales de la Universidad de Buenos Aires disponibles en materias.fcen.uba.ar. Dichos datos contienen información de alumnos (nombre, libreta universitaria, email) , cuándo cursaron cada materia y cuándo rindieron los finales con su resultado, entre otras cosas.


Encontramos algunas cosas interesantes... primero describimos los datos, luego planteamos 3 preguntas que intentamos responder:

1 - ¿(des) aprobamos igual durante toda la carrera?
2 - ¿Hay relación entre el resultado de un final y el tiempo que tardamos en rendirlo?
3 - ¿Los alumnos del primer cuatrimestre desaprueban menos que los del segundo?

Finalmente tomamos los alumnos de una carrera en particular y miramos cómo es el orden de cursada real en comparación con el plan de estudio




Datos




La distribución de alumnos por el año de su libreta muestra valores coherentes para cierto rango de años. Se ve notoriamente un pozo en 1985 debido al inicio de la puesta en marcha del ciclo básico común (CBC) en remplazo del examen de ingreso. A su vez se ve un pico positivo para el año 1973 (desconocemos el motivo, tal vez el contexto argentino). Lo datos de los alumnos más antiguos probablemente no estén completos en el sistema por eso también vemos muy pocos datos previos a 1960.


Los alumnos con libretas posteriores al 2005 no terminaron su carrera (para el momento que obtuvimos los datos) por lo que para contestar las preguntas que nos planteamos, filtramos algunos datos.


Recién a partir (aproximadamente) de 1985 los finales parecen estar todos cargados y empieza a bajar el promedio a partir de 1992 con una abrupta caída desde el 2003. Esta última caída es fácilmente explícame, pues es producto de la gente aun no recibida. Sin embargo la caída de finales para los alumnos que ingresaron a partir del 1992 y hasta el 2003 se debe a alumnos que bien se les alargo mucho la carrera o más posiblemente abandonaron lo estudios.



La distribución de finales por mes no es uniforme, probablemente porque las materias promocionadas que en actas aparecen como finales y ocurren a fin de cuatrimestre. En cuanto a la distribución por días, están más concentrados en Martes y Viernes (>51%)




Finales desaprobados

En exactas muchas veces no se pasan finales (cuando la nota es mala o baja) esto podría explicarse, en parte, por qué solo el 5% de todos los finales en el sistema están desaprobados. Históricamente la tasa de finales desaprobados fue bajando hasta el 2006 (llegando a 3%) donde empieza a subir al 5%.


Es interesante la distribución de finales desaprobados agrupados por mes. Los finales rendidos en marzo tienen una tasa de desaprobación del 7% cuando en Julio tan solo de 2.5%. En cuanto a los dias de la semana de distribuyen uniformemente.



Pregunta 1: ¿(des) aprobamos igual durante toda la carrera?


Tomando alumnos con al menos 15 finales (para descartar aquellos que abandonaron tempranamente la carrera) calculamos la tasa de finales aprobados en función al inicio de su carrera. Los datos muestran que al principio de la carrera desaprobamos más finales relativamente y a medida que avanzan los años crece la tasa de aprobación. A partir del quinto año la tasa se estabiliza pero lo cierto es que disminuye fuertemente la cantidad de alumnos con finales a medida que pasan los años.



Pregunta 2: ¿Hay relación entre el resultado de un final y el tiempo que tardamos en rendirlo?


Tomando, nuevamente, alumnos con mas de 15 finales medimos el efecto de "colgar un final". Vemos que hay una correlación negativa en la tasa de aprobación y el tiempo que esperamos para rendir el final. Es decir, a medida que demoramos más en rendir un final después de haber aprobado la cursada, la tasa de aprobación del final baja. Si bien el primer punto de la figura (0-5 meses) debe corresponder a las materias promocionadas, el efecto mencionado se conserva para los demás puntos también.




Pregunta 3: ¿Los alumnos del primer cuatrimestre desaprueban menos que los del segundo?


Podríamos estimar cuales alumnos ingresaron el primer cuatrimestre y cuales el segundo en cada camada. Sin embargo decidimos ir por otro lado... normalizamos la primera parte del numero de libreta XXX (para una libreta XXX/YY) por la cantidad de alumnos en esa camada. Por lo que el primer alumno con libreta 1/YY va a tener orden 1 / #camada y el último 1. Teniendo en cuenta esto, agrupamos todas las camadas filtrando como mencionamos varias veces (más de 15 finales). Lo que vemos inicialmente que el primer 68% de lo alumnos tienen un orden promedio de aprobación separado (y superior) del otro restante. No sabemos bien cual es la distribución de alumnos en primer cuatrimestre con respecto al segundo, pero si fuera constante a lo largo de los años, esta separación podría explicar bien los dos cuatrimestres. Al menos podríamos decir hay una diferencia con los últimos alumnos en anotarse en las carreras, estos tienen menor tasa de aprobación que los primeros (68%) en anotarse (p<10^-11).



Comparación plan de estudio de computación con el plan de estudio real

La carrera de computación consta de 5 años donde se deben cursar por lo general dos materias por cuatrimestre. En promedio, la diferencia en fechas de inscripción de un cuatrimestre a otro son 6 meses. Por lo cual, si los alumnos siguieran el plan de estudio propuesto la cursada se vería así:



Cada circulo representa una materia, dos materias con el mismo color se deben cursar el mismo cuatrimestre según el plan. Existen flechas entre materias cuando una materia sigue a la otra según el plan y el número  de la flecha corresponde a la cantidad de meses que separan las materias.

Teniendo en cuenta este plan, tomamos varios alumnos de computación (con al menos 15 finales, en total 650) y medimos la mediana de los tiempos para todos los alumnos para cada flecha. De esta manera, tenemos un plan de estudios real poblacional.  

Dibujamos, de la misma forma, solo anotamos los links donde la mediana difiere al menos en 3 meses con el plan de estudios.


El tamaño de los nodos representa  el nivel de distorsión que reciben en cuanto al tiempo que tardan en cursarse. El primer año y medio de carrera los alumnos siguen el plan bastante ordenadamente pero al llegar a métodos numéricos empiezan a cambiarlo. Si se ve el árbol de correlativas (de cubawiki.com.ar), parece lógico que métodos numéricos sea dejado un poco de lado. A su vez también corresponde con el momento en que los alumnos empiezan a conseguir buenos trabajos pues ya tienen un nivel de formación interesante para algunas tareas de la industria. También teoría de lenguajes  recibe alumnos tardíamente, junto con Base de datos y Paradigmas de Lenguajes de Programación. Casi todas estas materias son materias que no habilitan a cursar ninguna otra materia obligatoria (es decir hojas en el árbol de correlatividad) por lo que tiene sentido que sean las más demoradas. 








lunes, 9 de mayo de 2016

Infracciones de tránsito de la Provincia de Buenos Aires


Queria averiguar si el auto de un amigo tenia infracciones y como está radicado en la provincia de Buenos Aires me fijé en la web de INFRACCIONESBA. Encontré un sistema para evitar pedidos masivos que implementa una especie de captcha muy particular...




Un captcha es básicamente un mecanismo que permite diferenciar entre una computadora y un ser humano, haciéndolo resolver una tarea trivial para este último pero compleja para una maquina. Sin embargo, en este caso, el mecanismo implementado por la web INFRACCIONESBA era todo excepto complejo.


Mirando un poco más, me di cuenta (viendo lo que hace cuando lo lleno y pongo una patente) que la web nunca chequea que esté resolviendo el captcha que me había pasado, por lo que pasando siempre el mismo captcha (y su solución) se pueden hacer tantos accesos como uno quiera. Habiéndome topado con esta situación, no pude contenerme e hice algunos pedidos con otros DNIs aparte del de mi amigo...


Le pregunté a INFRACCIONESBA si ciertos DNIs poseían multas (2 millones de pedidos, uniformemente distribuidos en el rango 10 y 33 millones). Obtuve 21.133 multas,  de 18931 patentes, correspondientes a 18675 personas distintas (1.13 multas por persona)


A continuación una descripción de lo que encontré…

Genero


La distribución en cuanto al género corresponde parcialmente con la estimación de la Dir. de Licencias del Gob. de la Ciudad de Bs. As sobre el resto del país, que reporta 25% de mujeres al volante. Si la estimación es buena significa que las mujeres tienen una mayor tasa de infracciones de tránsito que los hombres (suponiendo que el titular del auto es quien maneja, hipótesis que supongo a lo largo del post que podría no ser cierta).  Sin embargo, si miramos el promedio del importe de las multas, las mujeres tienen en promedio multas de menor importe que los hombres (pval < 10^-6), el importe en teoría correlaciona con la severidad de la infracción por lo que las mujeres cometerían más multas pero de menor severidad.



Edad

Como el DNI  correlaciona (negativamente) con la edad, es decir DNI numéricamente más chicos corresponden a personas con más años, podríamos usar este dato como proxy para estudiar las infracciones por edad, sin embargo se presenta un problema:

Si miramos la tasa de DNIs con multas respecto a los consultados, se ve la siguiente distribución

Los datos que se obtienen fitean muy bien con un comportamiento cuadrático, pero dada la falta de conocimiento del dominio podría estar pasando alguna de estas tres cosas (al menos):

  • Las multas se distribuyen uniformemente en la edad de la gente con licencia. De este modo, como los DNIs consultados fueron pedidos uniformemente, la figura solo muestra la distribución población de la edad con gente con licencia.
  • La gente que empieza con DNIs 20 millones, comete más infracciones y a medida que se aleja de este centro van bajando
  • Una mezcla de ambas

El observatorio de seguridad vial nacional no parece reportar estadísticas de la población con habilitación para manejar, ni así tampoco la provincia. Otros municipios del mundo, reportan estadísticas sobre la distribución de edad de los conductores y  se parecen bastante al comportamiento de los datos fiteados por la cuadrática, sin embargo también otros trabajos muestran que la distribución de infracciones tiene un pico en conductores más jóvenes y va bajando a medida que pasan los años.  Por lo que, los datos que tenemos no alcanzan para explicar la prominencia en las infracciones por algún grupo etario en particular :(

Antigüedad del auto

Con la patente del auto se puede estimar bien de que año es el auto (para autos posteriores a 1994 link). Para los autos más viejos no se puede saber el año exacto a partir de la patente. Teniendo en cuenta los que si sabemos, la distribución de años de los autos multados correlaciona (rho 0.94, tabla data patentados ) con la cantidad de autos patentados por año, por lo que el año del auto no influiría en la tasa/cantidad de multas registrada, pues probablemente solo estemos capturando la distribución subyacente.

Tabla patentes por año de infracciones bajadas


Teniendo en cuenta lo anterior, podemos usar el dataset como muestra bastante uniforme de la población que maneja, en términos de año de patentamiento.


Relación antiguedad del auto - edad dueño

En la distribución conjunta entre el año de patentamiento y el DNI (como proxy de la edad) se ve algo interesante.


Hay una correlación negativa (pval < 10^-4) entre la edad y el año del patentamiento. Es decir que gente más vieja tiene autos mas nuevos. Este mismo análisis se puede hacer separando por género. Es interesante porque el efecto se incrementa tomando solo la población masculina pero desaparece con la femenina.


A su vez, en total analizando por género, las mujeres tienen autos más nuevos que los hombres (pval<10^-14), el promedio (y ste) es de 2006.2  +-0.058 para hombres y 2007.68+-0.07 para mujeres.

Distribución de las multas según locación

La distribución por locación en la provincia es rara… pero cuando se miran los motivos de las multas tienen un poco mas de sentido.  El top 3 de multas (y 94% de las multas) son:

  • 89% Por no respetar los límites reglamentarios de velocidad previstos. 
  • 3% Por no detenerse antes de la línea marcada o senda peatonal
  • 2% No observar las reglas previstas para el uso de las luces

Es decir, la mayoría de las multas corresponden a fotomultas automáticas.





Resumen


Accidentalmente me topé con unos datos que eran fácilmente scrapeables y bastante estructurados. Se me ocurrieron algunas preguntas y las intenté contestar...  Me quedé con ganas de cruzar los DNIs de los sujetos con algún padrón para tener domicilio y armar algún índice de poder adquisitivo por la zona. ¿Acaso hay alguna relación entre el precio del auto y el tipo de infracción? También en armar un buen modelo para predecir dado año del auto, del dueño, etc, el tipo de multa (probando algo rápido parecería andar...)

Dato de color: Hay una sola multa (con varios motivos) por 107.4 K pesos en Chivilcoy en Marzo del 2016 de un auto  menor a 1995, obviamente no paga :p