La solicitud

De Jordan Reyes, Director de Marketing
Tu objetivo
Asigna a result un diccionario: "ci_low" y "ci_high", el intervalo de confianza del 95% para la tasa B menos la tasa A (error estándar sin agrupar, ±1.96 EE), "z", el estadístico z de dos proporciones con el error estándar agrupado, y "p_value", su valor p de dos colas. Redondea el intervalo y el valor p a 4 decimales y z a 3.
- Usa el DataFrame
web_sessionspendiente - Guarda un dict en
resultpendiente
Tu código
Cargando el editor…
Solución de referencia
| session_id | customer_id | started_at | device | source |
|---|---|---|---|---|
| 1 | NaN | 2023-01-01 23:02:24 | mobile | paid |
| 2 | 18 | 2023-01-01 15:07:49 | desktop | paid |
| 3 | NaN | 2023-01-01 16:55:46 | desktop | direct |
| 4 | NaN | 2023-01-01 12:43:28 | mobile | organic |
Mote revisa tu resultado
Presiona Ejecutar. Cada fila que cumple el objetivo se vuelve una luciérnaga en tu linterna.
Lo que recibe Jordan, y por qué
DataFrames
Cargados como DataFrames de pandas, junto con pd y np.
web_sessions40,000 filas · 7 columnas
session_idintegercustomer_idintegerstarted_attimestampdevicevarcharsourcevarcharpages_viewedintegerconvertedboolean
| session_id | customer_id | started_at | device | source | pages_viewed | converted |
|---|---|---|---|---|---|---|
| 1 | NaN | 2023-01-01 23:02:24 | mobile | paid | 1 | false |
| 2 | 18 | 2023-01-01 15:07:49 | desktop | paid | 1 | false |
| 3 | NaN | 2023-01-01 16:55:46 | desktop | direct | 7 | false |
| 4 | NaN | 2023-01-01 12:43:28 | mobile | organic | 3 | false |
| 5 | NaN | 2023-01-01 13:06:21 | mobile | social | 2 | false |
customers2,018 filas · 9 columnas
customer_idintegerfirst_namevarcharlast_namevarcharemailvarcharcityvarcharstatevarcharsignup_datedatesegmentvarcharreferral_sourcevarchar
| customer_id | first_name | last_name | city | state | signup_date | segment | referral_source | |
|---|---|---|---|---|---|---|---|---|
| 1 | Owen | Hudson | owen.hudson@icloud.com | San Francisco | CA | 2022-06-02 | consumer | search |
| 2 | Douglas | Mendoza | dmendoza69@gmail.com | Atlanta | GA | 2022-06-02 | consumer | NaN |
| 3 | Henry | Brooks | hbrooks@lakesidecafe.com | Los Angeles | CA | 2022-06-04 | business | NaN |
| 4 | Brian | Graham | bgraham@bluecedarhomes.com | Seattle | WA | 2022-06-06 | business | |
| 5 | Kyle | Jimenez | kjimenez27@yahoo.com | Indianapolis | IN | 2022-06-07 | consumer | NaN |
products120 filas · 8 columnas
product_idintegernamevarcharcategoryvarcharsubcategoryvarcharunit_pricedecimalunit_costdecimallaunched_ondateis_activeboolean
| product_id | name | category | subcategory | unit_price | unit_cost | launched_on | is_active |
|---|---|---|---|---|---|---|---|
| 101 | Vale Velvet Loveseat | Furniture | Sofas | 1659.00 | NaN | 2023-09-11 | true |
| 102 | Alder Oak Coffee Table | Furniture | Tables | 919.00 | 503.50 | 2024-05-16 | true |
| 103 | Orchard Rattan Dining Chair | Furniture | Chairs | 789.00 | 429.87 | 2023-05-27 | true |
| 104 | Upland Oak Bookcase | Furniture | Storage | 429.00 | 214.70 | 2022-12-20 | true |
| 105 | Avery Leather Bed Frame | Furniture | Beds | 449.00 | 232.70 | 2021-08-31 | true |
orders12,000 filas · 7 columnas
order_idintegercustomer_idintegerorder_datetimestampstatusvarcharchannelvarcharshipping_feedecimalcoupon_codevarchar
| order_id | customer_id | order_date | status | channel | shipping_fee | coupon_code |
|---|---|---|---|---|---|---|
| 1001 | 125 | 2023-01-01 20:51:19 | completed | web | 0.00 | NaN |
| 1002 | 156 | 2023-01-02 07:58:46 | completed | web | 0.00 | NaN |
| 1003 | 22 | 2023-01-02 10:25:27 | completed | marketplace | 4.99 | WELCOME10 |
| 1004 | 48 | 2023-01-02 11:21:51 | completed | marketplace | 4.99 | WELCOME10 |
| 1005 | 82 | 2023-01-02 11:43:36 | completed | web | 0.00 | WELCOME10 |
order_items30,338 filas · 6 columnas
order_item_idintegerorder_idintegerproduct_idintegerquantityintegerunit_pricedecimaldiscount_pctdecimal
| order_item_id | order_id | product_id | quantity | unit_price | discount_pct |
|---|---|---|---|---|---|
| 1 | 1001 | 121 | 9 | 31.99 | 0.00 |
| 2 | 1001 | 154 | 3 | 11.99 | 0.00 |
| 3 | 1002 | 154 | 4 | 11.99 | 0.00 |
| 4 | 1002 | 194 | 1 | 149.00 | 0.00 |
| 5 | 1002 | 193 | 2 | 19.99 | 0.00 |
returns1,673 filas · 5 columnas
return_idintegerorder_item_idintegerreturned_ondatereasonvarcharrefund_amountdecimal
| return_id | order_item_id | returned_on | reason | refund_amount |
|---|---|---|---|---|
| 1 | 14 | 2023-01-10 | damaged | 83.69 |
| 2 | 42 | 2023-01-10 | wrong_item | 19.99 |
| 3 | 105 | 2023-01-14 | wrong_item | 10.99 |
| 4 | 24 | 2023-01-16 | changed_mind | 26.99 |
| 5 | 126 | 2023-01-16 | late | 20.99 |
employees60 filas · 8 columnas
employee_idintegerfirst_namevarcharlast_namevarchardepartmentvarchartitlevarcharmanager_idintegerhire_datedatesalaryinteger
| employee_id | first_name | last_name | department | title | manager_id | hire_date | salary |
|---|---|---|---|---|---|---|---|
| 1 | Catherine | Hale | Executive | Chief Executive Officer | NaN | 2016-03-01 | 285000 |
| 2 | Robert | Kim | Executive | Chief Operating Officer | 1 | 2017-01-09 | 235000 |
| 3 | Megan | Collins | Sales | Head of Sales | 1 | 2018-04-16 | 172000 |
| 4 | Chloe | Gutierrez | Sales | Account Executive | 3 | 2020-01-21 | 72000 |
| 5 | Frank | Bell | Sales | Account Executive | 3 | 2023-05-21 | 73000 |
marketing_spend3,276 filas · 3 columnas
spend_datedatechannelvarcharamountdecimal
| spend_date | channel | amount |
|---|---|---|
| 2023-01-01 | paid | 492.99 |
| 2023-01-01 | 37.38 | |
| 2023-01-01 | social | 200.53 |
| 2023-01-02 | paid | 709.13 |
| 2023-01-02 | 64.13 |
La lección
La pregunta detrás de la prueba
Aunque el banner no hiciera nada, los dos grupos no convertirían exactamente a la misma tasa. Quién cae en cada grupo es aleatorio, y con unas 100 conversiones por grupo, la suerte sola mueve las tasas décimas de punto. Así que la pregunta real es: ¿la diferencia es mayor de lo que suele producir la suerte? Dos herramientas la responden, y quieres ambas en un informe.
El intervalo de confianza
El error estándar (EE) de una diferencia entre dos tasas es
se = math.sqrt(p_a * (1 - p_a) / n_a + p_b * (1 - p_b) / n_b) # 0.0054
y un intervalo de confianza del 95% es la diferencia ± 1.96 errores estándar:
diff - 1.96 * se, diff + 1.96 * se # (-0.0078, 0.0132)
Léelo así: los valores de −0.78 a +1.32 puntos porcentuales son todos coherentes con lo que vimos. El intervalo contiene el cero, así que “sin efecto” es coherente con los datos. También contiene +1 punto, una gran victoria, así que “sin efecto” tampoco queda demostrado. La prueba simplemente no fue lo bastante precisa para decirlo.
El valor p
La prueba z hace la misma pregunta desde el otro lado. Supón que no hay efecto: entonces ambos grupos comparten una sola tasa de conversión, la tasa agrupada (203 conversiones de 5,208 sesiones). Mide a cuántos errores estándar de distancia están los grupos bajo ese supuesto:
pooled = arms["conv"].sum() / (n_a + n_b)
se0 = math.sqrt(pooled * (1 - pooled) * (1 / n_a + 1 / n_b))
z = diff / se0 # 0.50
p = 2 * (1 - NormalDist().cdf(abs(z))) # 0.62
“De dos colas” significa que una diferencia así de grande en cualquier dirección cuenta, porque también querrías saber si el banner perjudicó. Un valor p de 0.62 significa: si el banner no hiciera nada, una diferencia al menos así de grande ocurriría el 62% de las veces. No sorprende en absoluto.
Decirlo con honestidad
Lo que p = 0.62 no significa: un 62% de probabilidad de que el banner no haga nada, ni una prueba de que no tiene efecto. La frase honesta es: “El grupo del banner convirtió 0.27 puntos mejor, pero el intervalo del 95% va de −0.78 a +1.32 puntos (p = 0.62). No encontramos evidencia de que el banner cambie la conversión.”
Errores comunes
- Usar el EE agrupado para el intervalo. El EE agrupado supone que no hay diferencia, lo cual es correcto para la prueba e incorrecto para un intervalo alrededor de la diferencia que observaste.
- Valores p de una cola elegidos después de ver el resultado. Dividir p a la mitad porque el aumento salió positivo es una decisión que debes tomar antes de la prueba, no después.
- “No significativo” como “sin efecto”. La ausencia de evidencia no es evidencia de ausencia, sobre todo en una prueba pequeña. Qué tan pequeña fue esta es el tema del desafío final.
¡Linterna encendida!
Practicaste: confidence intervalp valuez testtwo proportion test
- Resuelto
- Sin pistas
- Al primer intento
