Lo que le mostré en la unidad anterior
fue una manera de rescatar los modelos de máxima entropía
para describir la abundancia de lenguajes P(n)
en función de una variable escondida,
epsilon, que llamamos "tiempo del programador"
y asumimos que el sistema estaba
restringido de dos formas:
Estaba restringido no solo a tener
un cierto numero promedio de proyectos
por lenguaje, también fijamos la popularidad promedio
de los lenguajes, pero también fijamos
el promedio del tiempo del programador dedicado a los proyectos
en un lenguaje en particular.
Entonces esta distribución, aquí, se ve así,
en su forma funcional, y cuando integramos
en esta variable, epsilon, obtenemos algo que se ve como esto.
Así que obtenemos una predicción diferente
para le distribución de los lenguajes.
Obtenemos una predicción que, digo yo, se ve razonablemente bien.
Ciertamente se ve mejor que la distribución exponencial.
Me siento obligado comentarle acerca de la controversia
que hay cuando tratamos de hacer estos modelos… En particular
hay un modelo muy diferente que se ve bastante similar.
Es la serie de logaritmos de Fisher.
Y el argumento detrás de la serie de Fisher,
para explicar esta distribución,
implica la idea de una restricción adicional "oculta".
En la pregunta del código abierto, lo que e hecho es incluir esa
restricción adicional como "tiempo de programación", solo porque
parecía que seria una restricción en el sistema, ok? Que fijáramos el promedio del
tiempo de programación por lenguaje, no solo el numero promedio de proyectos.
Pero, y eso significa que los lenguajes pueden variar su popularidad, y también
su eficiencia, en el modelado ecológico, esto son especies
los lenguajes son especies, y esto es la abundancia de especies,
lo que se interpreta como la variedad de una especie en la naturaleza,
y también su metabolismo, cuanta energía consume una especie en particular.
Entonces en este caso, el sistema esta restringido al numero promedio
de abundancia de especies, y al promedio de energía consumida por especie.
Aquí los lenguajes están restringidos a una cierta abundancia, y a un cierto
consumo de energía de programador, esa es la analogía.
Así que también podemos construir un modelo de popularidad
de lenguajes de programación.
Y previamente cuando estudiamos el problema de los taxis, lo que hicimos fue
cuando construimos el modelo, encontramos uno muy simple era capaz de reproducir
las predicciones del modelo de máxima entropía.
Aquí, por el contrario, lo que vamos a ver es que el modelo va a producir
un comportamiento similar, pero la forma funcional sera ligeramente distinta.
Así que este es el modelo… imaginamos que
todos los lenguajes empiezan con una popularidad mínima,
el que inventa un lenguaje, por ejemplo,
tiene que escribir al menos un proyecto, hay al menos un programador
cuando un lenguaje es inventado, que sabe como programar en ese lenguaje,
por definición.
Entonces la popularidad puede crecer de dos formas.
Puede crecer, por ejemplo, linealmente,
así que en el día uno hay un programador,
en el día dos, se le uno otro programador a ese programador.
y en el día tres, se une un tercer programador,
y así, en el tiempo lo que obtiene
es una taza de crecimiento lineal…
Pero, quizás un modelo mas plausible
sobre como crece la popularidad
es que sea multiplicativamente…
en t 1, hay un programador, y tiene
una cierta eficiencia de convencer a otros
programadores para que se unan a la causa,
así que tal ves es capaz de duplicar el numero de programadores.
Si es capaz de duplicar el numero de programadores, porque
su lenguaje es particularmente bueno, y tal vez la que usa ese lenguaje,
por coincidencia, es particularmente persuasiva.
Así que en el segundo día, esos dos programadores, cada uno,
buscan y convierten a dos personas,
porque son tan efectivos como el programador original
y el lenguaje en si mismo es tan convincente como lo era antes.
Entonces cada uno de los programadores salen
y consiguen dos cada uno, y así tenemos cuatro,
y por un argumento similar, llegamos a 8,
y así este seria un modelo de crecimiento exponencial…
donde el numero de programadores en función del tiempo incrementa
multiplicativamente, en vez de aditivamente.
Así que, vamos a hacer este modelo un poco mas realista, en particular
permitamos al factor multiplicativo,
que en este caso lo ponemos en 2,
vamos a permitir que este factor varíe, de hecho, vamos a sacar
este factor multiplicativo, alfa, de una distribución,
de hecho, realmente no importa de que distribución sea
mientras que el alfa sea mayor que cero,
para que no sea posible que todos los programadores desaparezcan de repente.
así que es simple mayor que cero,
y esta limitada en algún punto,
para que sea imposible que un lenguaje
se vuelva infinitamente popular después de
un numero finito de repeticiones. Así que vamos a tomar…
Cada día vamos a tomar un numero, alfa, de esta distribución, esta de aquí.
Así, después de un día, hay alfa programadores,
después de dos días, hay alfa… Mas bien, alfa(1) programadores,
este es el numero del primer día, en el segundo día hay alfa(2) veces alfa (1)
programadores, y así, alpha(3) veces alpha(2) veces alpha(1).
Así que ahora crecimiento ocurre a travez
de un proceso multiplicativo aleatorio.
Es similar al crecimiento que ocurriría
a travez de un proceso aditivo aleatorio,
excepto que ahora en vez de sumar
un numero aleatorio de programadores cada día,
multiplica el numero total de programadores cada día,
por algún factor alfa
sacado de esta distribución.
Así, usted siempre pude convertir este proceso
multiplicativo en uno aditivo de una forma muy simple,
el truco es usar el logaritmo.
Con el tiempo, si contamos el numero de programadores
que estamos multiplicando, pero estamos trabajando en el espacio de logaritmos,
solo estamos sumando, estamos sumando un numero aleatorio
a la distribución, siempre que alfa
sea estrictamente mayor que cero, esto estará bien definido.
Ahora, de repente, en el espacio log. Se parece al modelo aditivo.
Y algo que sabemos del teorema del limite central es que si suma
muchos números aleatorios, esa distribución tiende
a una distribución Gaussiana,
con alguna media, mu, y una variancia, sigma, particulares.
No nos preocupemos acerca del valor particular de estas,
sino mas bien, note que el crecimiento ocurre en el espacio de logaritmo.
La distribución de estas sumas para
un largo tiempo terminara viéndose como una distribución Gaussiana.
El crecimiento diario promedio de un lenguaje
se ve en el espacio log. Como una distribución Gaussiana, lo que significa
es que el modelo de crecimiento exponencial
con empujones aleatorios, empujones multiplicativos aleatorios,
realmente se ve como una Gaussiana en el espacio log. O lo que llamamos log-normal
en el espacio de números.
Entonces, en cambio de ver el logaritmo de la popularidad de un lenguaje,
solo mire la popularidad total de un lenguaje,
y lo que eso significa es
que se ve como una exponencial del
log(n) menos alguna media al cuadrado sobre dos sigma cuadrado…
Y después usted solo tiene que ser cuidadoso al normalizar cosas aquí.
Entonces esta el la distribución log-normal,
(Falta signo menos)
y un modelo simple donde el crecimiento de un lenguaje ocurre multiplicativamente
donde un lenguaje gana nuevos adeptos
en proporción al numero de adeptos que ya tiene,
donde un lenguaje gana nuevos proyectos
en proporción al numero de proyectos que ya tiene, que ya
depende del ambiente, es de ahí que viene la aleatoriedad de la multiplicación,
alfa es un numero aleatorio, no una restricción,
no es 2, el lenguaje no necesariamente tiene que duplicarse siempre,
pero el hecho de que pase por
un proceso multiplicativo aleatorio
en cambio de un proceso aditivo,
significa que tiene tendrá un crecimiento log-normal,
y entonces puede decir, "Ok, entonces imaginemos
que el lenguaje crece a travez de este proceso log-normal,
y encontremos los parámetros que mejor se ajusten para
mu y sigma". Y si hace eso, encontrara
que el mecanismo del modelo log-normal
también se ve muy bien.
Estábamos impresionados por lo bien que la linea azul se ajustaba
a esta distribución al compararla con el modelo exponencial rojo,
el modelo de máxima entropía, restringiendo solo N,
ese era el modelo rojo. Aquí al modelo azul le va bien…
Este es el modelo de la serie de Fisher-log
Desafortunadamente, es un modelo simple…
Le he dado un resumen del modelo, aquí,
lo que pasa con este modelo es que
usted esta sumando muchos pequeños empujones multiplicativos,
el modelo simple funciona también.
Le diré que este se ajusta mejor,
si hace un análisis estadístico, ambos modelos tienen dos parámetros,
si hace un análisis estadístico, la serie Fisher-log en realidad se ajusta mejor
en particular, es capas de explicar estos lenguajes
de popularidad realmente alta,
estas desviaciones de aquí parecen mayores
que las desviaciones de aquí, pero tiene que recordar
que esto esta en una escala logarítmica,
así que esto se acerca mucho mas aquí arriba
que lo que este aquí.
Así que el modelo simple, al menos visualmente parece que es
extremadamente competitivo con el modelo de la serie de Fisher-log
derivada de un argumento de máxima entropía.
Estadísticamente hablando, si ve estas dos,
esta, de hecho esta es ligeramente menos preferible
Pero, como mucha gente, lo que quiere es
evidencia que refuerce esta contra esta,
y yo creo que la mejor forma de buscar
ese tipo de evidencia es averiguar
que, si existe, es este epsilon en el mundo real,
si fuéramos capases de construir una teoría solida
acerca de que es epsilon,
y como podríamos medirlo en los datos
entonces podríamos ver si esto de aquí, esta distribución conjunta,
estuviera bien recreada, si pudiéramos encontrar evidencia,
por ejemplo, el hecho de que estas dos co-varian,
de que aquí tenemos un termino que impulsa la popularidad
de un lenguaje si se vuelve mas eficiente.
Entonces, si esto baja, esto puede subir,
y el lenguaje puede aun tener la misma
probabilidad de de ser encontrado
con esas propiedades,
y claro, el problema es que no sabemos
como medir este, tipo de misterioso, tiempo de programador…
eficiencia de programador.
A los ecologistas les va mejor con esto,
porque los ecologistas saben cuanto es su epsilon,
ellos saben que su epsilon es la unidad de consumo de energía metabólica,
Así que es "cuanta energía consume una
cierta especie en un día, o en toda su vida",
y ellos son capases de medir eso, y
de hecho, son capases de medir
esta distribución conjunta.
Cuando estudiamos el ecosistema del código libre
hasta ahora, no tenemos una manera
de medir esto, y por eso somos incapaces de
medir esta distribución conjunta, entonces
acabamos con un modelo simplificado de incremento de la popularidad
y por aquí, este modelo que trata sobre
la existencia de dos restricciones en el sistema,
numero promedio y tiempo de programador promedio.