Hace un par de años, en los primeros días del blog, intenté comprobar si las visitas a Analytics Lane seguían la ley de la potencia. Sin obtener en aquel momento un resultado claro. La ley de la potencia es una relación entre magnitudes que se puede observar en múltiples fenómenos de carácter físico, biológico o debido a la actividad humana. Ahora, una vez han aumentado el númoro de páginas y visitas en el blog es un buen momento para revisar si esta ley se verifica o existen otras alternativas más adecuadas como una distribución lognormal.
Paquete para trabajar con la ley de la potencia
En PyPI existe un paquete que facilita con el que se pueden automatizar el análisis de datos para comprobar si estos siguen una ley como la de la potencia o son mejores otras alternativas. Un paquete que se llama y se puede instalar simplemente con el siguiente comando
pip install powerlaw
Datos de visitar a Analytics Lane
Para el análisis se van a utilizar los datos de visitas únicas a las 500 páginas más populares durante el pasado mes. Evitando de esta manera el error que puede introducir las búsquedas u otras visitas a las páginas inexistentes.
Ajustando los datos a la ley de la potencia
Al ajustar el número de visitas con la ley se obtiene una gráfica como la siguiente. Una gráfica en la que se ve como los datos no siguen perfectamente la ley, especialmente en las páginas menos visitadas.
Distribución Lognormal
Una alternativa para explicar las visitas al blog es una distribución Lognormal. Lo que se puede comparar en la siguiente gráfica.
En este caso se puede ver claramente que los datos se ajustan mejor a una distribución Lognormal. Lo que se puede comprobar mediante el método distribution_compare()
del paquete powerlaw
.
Ley de la potencia truncada
Otra alternativa es la ley de la potencia truncada, una modificación en la que se tiene en cuenta el hecho de usar datos truncados, como es el caso. Solamente se usan las visitas a las 500 primeras páginas. En este caso el resultado con los tres modelos se puede ver en la siguiente gráfica.
En este caso es dificil apreciar, pero el modelo basado en la versión truncada es ligeramente mejor que la Lognormal. Algo que también se puede validar con el método distribution_compare()
.
Los resultados que se muestran en la entrada se pueden conseguir con el siguiente código
import pandas as pd import powerlaw from matplotlib.pyplot import legend visitas = pd.read_excel('visitas.xlsx') fit = powerlaw.Fit(visitas.Unicas) fig = fit.plot_ccdf(linewidth = 2) fit.power_law.plot_ccdf(ax = fig, color = 'r', linewidth = 2, linestyle = '--') fit.lognormal.plot_ccdf(ax = fig, color = 'g', linewidth = 2, linestyle = '--') fit.truncated_power_law.plot_ccdf(ax = fig, color = 'b', linewidth = 2, linestyle = '--') legend(['Visitas', 'Power Law', 'Lognormal', 'Truncate Power Law'])
Conclusiones
En esta ocasión se ha podido comprobar que las visitas a una web, por lo menos en el caso de Analytics Lane, cumple la ley. Aunque para validarlo hay que tener en cuenta que los datos empleados para el análisis suelen estar truncados para evitar ruido causado por visitas que no deberían tenerse en cuenta.