Según Clauset et al., así es como se comprueba la cola de la ley de potencia con poweRlaw
paquete:
- Construir el objeto de distribución de la ley de potencia. En este caso, sus datos son discretos, así que utilice la versión discreta de la clase
data <- c(100, 100, 10, 10, 10 ...)
data_pl <- displ$new(data)
- Calcule el $x_{min}$ y el exponente $\alpha$ de la ley de potencias, y asignarlos al objeto ley de potencias
est <- estimate_xmin(data_pl)
data_pl$xmin <- est$xmin
data_pl$pars <- est$pars
las dos últimas líneas pueden reescribirse como una sola línea
data_pl$xmin <- est
Además, en este punto, puede ver la estadística KS:
est$KS
- El estadístico KS indica hasta qué punto la distribución de ley de potencias se ajusta a los datos, pero no indica la probabilidad de que los datos procedan de una ley de potencias. Así que también necesita un $p$ valor. Así se hace:
bs <- bootstrap_p(data_pl)
bs$p
Esto podría llevar algún tiempo, así que vete a tomar una taza de té...
- Suponiendo que obtenga un $p$ y es mayor que 0,05 o cualquiera que sea su nivel de significación, aún debe excluir la posibilidad de que ninguna otra distribución alternativa se ajuste a los datos mejor que la ley de potencias. En
poweRlaw
implementa otras 3 alternativas con las que puedes comparar. Por ejemplo, log-normal:
data_alt <- dislnorm$new(data)
data_alt$xmin <- est$xmin
data_alt$pars <- estimate_pars(data_alt)
comp <- compare_distributions(data_pl, data_alt)
Tenga en cuenta que el $x_{min}$ de la distribución log-normal se ajusta a la de la ley de potencia, porque compare_distributions
requieren la función $x_{min}$ s sea la misma para ambas distribuciones. La dirección comp
tiene dos campos interesantes: comp$test_statistic
indica cuál se ajusta mejor, con número positivo significa data_pl
es mejor, y negativo en caso contrario; comp$p_two_side
es decir, cuán significativa es la diferencia.
Repita este paso con disexp
, dispois
clases para comparar la ley de la potencia con esas alternativas.