Pruebas de hipótesis y puntuaciones z

Pruebas de hipótesis en Python

James Chapman

Curriculum Manager, DataCamp

Pruebas A/B

  • En 2013, Electronic Arts (EA) lanzó SimCity 5
  • Querían aumentar las preventas del juego
  • Usaron pruebas A/B para probar distintos anuncios
  • Esto implica dividir a los usuarios en grupos de control y tratamiento

Edificio de Electronic Arts

1 Crédito de la imagen: "Electronic Arts" por majaX1 CC BY-NC-SA 2.0
Pruebas de hipótesis en Python

Prueba A/B en página de retail

Control:

Página de SimCity con un banner que dice "reserva y obtén $20 de descuento en tu próxima compra"

Tratamiento:

Página de SimCity sin banner

Pruebas de hipótesis en Python

Resultados de la prueba A/B

  • El grupo de tratamiento (sin anuncio) tuvo un 43.4% más de compras que el de control (con anuncio)
  • La intuición de que "mostrar un anuncio aumenta ventas" era falsa
  • ¿Este resultado fue estadísticamente significativo o puro azar?
  • Hace falta ver los datos de EA para saberlo
  • Técnicas de Sampling in Python + este curso para hacerlo
Pruebas de hipótesis en Python

Encuesta de desarrolladores de Stack Overflow 2020

import pandas as pd
print(stack_overflow)
      respondent  age_1st_code  ...   age  hobbyist
0           36.0          30.0  ...  34.0       Yes
1           47.0          10.0  ...  53.0       Yes
2           69.0          12.0  ...  25.0       Yes
3          125.0          30.0  ...  41.0       Yes
4          147.0          15.0  ...  28.0        No
...          ...           ...  ...   ...       ...
2259     62867.0          13.0  ...  33.0       Yes
2260     62882.0          13.0  ...  28.0       Yes

[2261 rows x 8 columns]
Pruebas de hipótesis en Python

Hipótesis sobre la media

Una hipótesis:

La compensación anual media de la población de científicos de datos es de $110,000

La estimación puntual (estadístico muestral):

mean_comp_samp = stack_overflow['converted_comp'].mean()
119574.71738168952
Pruebas de hipótesis en Python

Generar una distribución bootstrap

import numpy as np

# Paso 3. Repite los pasos 1 y 2 muchas veces y añade a una lista so_boot_distn = [] for i in range(5000): so_boot_distn.append(
# Paso 2. Calcula la estimación puntual np.mean(
# Paso 1. Re-muestrea stack_overflow.sample(frac=1, replace=True)['converted_comp']
)
)
1 Las distribuciones bootstrap se tratan en el Capítulo 4 de Sampling in Python
Pruebas de hipótesis en Python

Visualizar la distribución bootstrap

import matplotlib.pyplot as plt
plt.hist(so_boot_distn, bins=50)
plt.show()

Histograma de la distribución bootstrap: con forma de campana y aprox. entre 110000 y 140000

Pruebas de hipótesis en Python

Error estándar

std_error = np.std(so_boot_distn, ddof=1)
5607.997577378606
Pruebas de hipótesis en Python

Puntuaciones z

$\text{valor tipificado} = \dfrac{\text{valor} - \text{media}}{\text{desviación estándar}}$

$z = \dfrac{\text{estad. muestral} - \text{valor param. hipotet.}}{\text{error estándar}}$

Pruebas de hipótesis en Python

$z = \dfrac{\text{estad. muestral} - \text{valor param. hipotet.}}{\text{error estándar}}$

stack_overflow['converted_comp'].mean()
119574.71738168952
mean_comp_hyp = 110000
std_error
5607.997577378606
z_score = (mean_comp_samp - mean_comp_hyp) / std_error
1.7073326529796957
Pruebas de hipótesis en Python

Probar la hipótesis

  • ¿1.707 es un valor alto o bajo?
  • ¡Ese es el objetivo del curso!
Pruebas de hipótesis en Python

Probar la hipótesis

  • ¿1.707 es un valor alto o bajo?
  • ¡Ese es el objetivo del curso!

 

Caso de uso de pruebas de hipótesis:

 

Determinar si los estadísticos muestrales están cerca o lejos de los valores esperados (o "hipotetizados")

Pruebas de hipótesis en Python

Distribución normal (z) estándar

Distribución normal estándar: normal con media = 0 y desviación estándar = 1

Gráfico de densidad de la PDF de la distribución normal estándar

Pruebas de hipótesis en Python

¡Vamos a practicar!

Pruebas de hipótesis en Python

Preparing Video For Download...