Skip to content

Instantly share code, notes, and snippets.

@mauroeparis
Last active June 17, 2020 02:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mauroeparis/1604d1277412cba1725c3b02e6fe6ae2 to your computer and use it in GitHub Desktop.
Save mauroeparis/1604d1277412cba1725c3b02e6fe6ae2 to your computer and use it in GitHub Desktop.
# %%
"""
3. Distribuciones
-----------------
Realizar una prueba de Kolmogorov-Smirnof para comprobar analíticamente
si estas variables responden la distribución propuesta en el ejercicio
anterior. Hint: podés usar
https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.stats.kstest.html
pero hay que tener en cuenta que si la distribución es "norm",
entonces va a comparar los datos con una distribución normal con media
0 y desviación estándar 1. Se puede utilizar la distribución sobre todos
los datos o sólo sobre Latinoamérica.
"""
# %%
from scipy import stats
la_dist = dataset['Latin America & the Caribbean' == dataset['region']]['pf_identity']
la_dist = la_dist.dropna() # Remove missing values.
la_dist = la_dist.subtract(la_dist.mean()) # Center data around 0 (zero)
# %%
# lambda function to center the distribution around zero
center_zero = lambda x: x-x.mean()
# scipy provides us with funtions to make samples of diferent distributions
# we can see them here:
# https://docs.scipy.org/doc/scipy-0.14.0/reference/stats.html#continuous-distributions
r = center_zero(stats.beta.rvs(0.2, 0.5, size=1000))
# stats.beta.rvs(0.2, 0.5, size=1000) means that we will create a Beta
# distribution with a=0.2, b=0.5 and it will have 1000 samples.
# r = stats.norm.rvs(size=1000) Normal
# r = stats.norm.rvs(size=1000) Normal
# We can now compare the distributions like so:
seaborn.kdeplot(la_dist, label="LA distribution")
seaborn.kdeplot(r, label="Beta distribution")
# %%
stats.norm.rvs(size=1000)
# %%
# Run K-S test with the latinoamerica distribution and beta distribution
print(stats.kstest(la_dist, 'beta', args=[0.2, 0.5]))
# %%
"""
La prueba K-S compara la distribucion acumulada de una distribución con otra.
En nuestro ejemplo comparamos a de Latinoamerica con `pf_identity` con
una distribución Beta. El valor que nos da la celda anterior podemos ver que
el p-value es muy grande lo que quiere decir es que es muy poco confiable decir
que las distribuciones son parecidas.
No tenemos la comparacion para `hf_score` (no sé si deberiamos adivinar primero
y despues fijarnos en las posibilidades de scipy) y para `pf_identity` global
elegimos una distribucion bimodal pero en scipy no tenemos distribuciones
bimodales. solo hay algunas distribuciones "dobles" (`dgamma`, `dweibull`).
Probé con varias distribuciones pero no pude hacer que verdaderamente se
parezcan.
Acá estan todas:
https://docs.scipy.org/doc/scipy-0.14.0/reference/stats.html#continuous-distributions
"""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment