La solicitud

De Laura Bennett, Jefa de Finanzas
Tu objetivo
Paso 1 de 3. Asigna a result un diccionario con "sd", la desviación estándar de completed["order_value"] (.std() de pandas), y "se", el error estándar de la media para una muestra de 100 pedidos (sd dividida entre la raíz cuadrada de 100), ambos redondeados a 2 decimales. Calcula se con la sd sin redondear.
- Usa el DataFrame
orderspendiente - Usa el DataFrame
order_itemspendiente - Guarda un dict en
resultpendiente
Paso 2 de 3. Simula la distribución muestral. Con el rng y los values del código inicial, saca 1,000 muestras de 100 pedidos cada una con rng.choice(values, size=100, replace=False) (en un bucle, en ese orden) y toma la media de cada muestra. Asigna a result un diccionario con "mean_of_means" y "sd_of_means" (.mean() y .std() de pandas sobre las 1,000 medias), redondeados a 2 decimales.
- Usa el DataFrame
orderspendiente - Usa el DataFrame
order_itemspendiente - Guarda un dict en
resultpendiente
Paso 3 de 3. ¿Cuántos pedidos necesita una muestra para que su media quede a ±$25 de la media de la población, el 95% de las veces? Usa margen = 1.96 × sd / √n con sd = completed["order_value"].std(), despeja n y asigna a result n redondeado hacia arriba a un número entero (un int).
- Usa el DataFrame
orderspendiente - Usa el DataFrame
order_itemspendiente - Guarda un número en
resultpendiente
Paso 1 · tu código
Cargando el editor…
Solución de referencia
| order_id | customer_id | order_date | status | channel |
|---|---|---|---|---|
| 1001 | 125 | 2023-01-01 20:51:19 | completed | web |
| 1002 | 156 | 2023-01-02 07:58:46 | completed | web |
| 1003 | 22 | 2023-01-02 10:25:27 | completed | marketplace |
| 1004 | 48 | 2023-01-02 11:21:51 | completed | marketplace |
Mote revisa tu resultado
Presiona Ejecutar. Cada fila que cumple el objetivo se vuelve una luciérnaga en tu linterna.
Paso 2 · tu código
Cargando el editor…
Solución de referencia
| order_id | customer_id | order_date | status | channel |
|---|---|---|---|---|
| 1001 | 125 | 2023-01-01 20:51:19 | completed | web |
| 1002 | 156 | 2023-01-02 07:58:46 | completed | web |
| 1003 | 22 | 2023-01-02 10:25:27 | completed | marketplace |
| 1004 | 48 | 2023-01-02 11:21:51 | completed | marketplace |
Mote revisa tu resultado
Presiona Ejecutar. Cada fila que cumple el objetivo se vuelve una luciérnaga en tu linterna.
Paso 3 · tu código
Cargando el editor…
Solución de referencia
| order_id | customer_id | order_date | status | channel |
|---|---|---|---|---|
| 1001 | 125 | 2023-01-01 20:51:19 | completed | web |
| 1002 | 156 | 2023-01-02 07:58:46 | completed | web |
| 1003 | 22 | 2023-01-02 10:25:27 | completed | marketplace |
| 1004 | 48 | 2023-01-02 11:21:51 | completed | marketplace |
Mote revisa tu resultado
Presiona Ejecutar. Cada fila que cumple el objetivo se vuelve una luciérnaga en tu linterna.
Lo que recibe Laura, y por qué
DataFrames
Cargados como DataFrames de pandas, junto con pd y np.
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 |
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 |
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 |
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 |
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
El error estándar
En el nivel anterior, una muestra de 200 pedidos salió $28 por debajo de la media verdadera, y otras muestras cayeron entre $385 y $581. El error estándar (EE) le pone un solo número a esa oscilación: es la desviación estándar de la media muestral entre todas las muestras que podrías sacar.
sd = completed["order_value"].std() # 795.75, spread of single orders
se = sd / math.sqrt(100) # 79.57, spread of 100-order averages
La fórmula es EE = sd / √n. Dos cosas la determinan: qué tan dispersos están los valores (sd) y cuántos muestreas (n). Baja con la raíz cuadrada de n, así que una muestra cuatro veces mayor solo reduce el error a la mitad.
Comprobarlo con una simulación
Es más fácil confiar en una fórmula cuando la has visto funcionar. Con toda la población en memoria puedes sacar muchas muestras y mirar directamente sus medias:
rng = np.random.default_rng(42)
values = completed["order_value"].to_numpy()
means = pd.Series([rng.choice(values, size=100, replace=False).mean() for _ in range(1000)])
means.std() # close to the formula's 79.57
La lista de 1,000 medias es la distribución muestral de la media. Su centro cae sobre la media verdadera, y su dispersión es el error estándar. También tiene mucha más forma de campana que los propios valores de pedido (sesgo 0.38 contra 3.95): los promedios de muchos valores suavizan la cola. Es el teorema del límite central en acción, y por eso un multiplicador de 1.96 funciona para medias incluso cuando los datos están sesgados.
Del error estándar al margen de error
Cerca del 95% de las medias muestrales cae a menos de 1.96 errores estándar de la media verdadera, así que el margen de error al 95% de una media muestral es 1.96 × EE. Para 100 pedidos eso es 1.96 × 79.57 ≈ ±$156. Da vuelta a la fórmula para planificar una muestra:
n = math.ceil((1.96 * sd / 25) ** 2) # orders needed for ±$25
Redondea hacia arriba: una muestra de 3,892.1 pedidos no existe, y redondear hacia abajo no alcanzaría la meta.
Lo que el error estándar no cubre
El error estándar mide solo el error de muestreo aleatorio. Una muestra elegida de mala manera (los visitantes de email del nivel anterior) tiene un error estándar pequeño y un sesgo grande. Úsalo con muestras aleatorias.
Errores comunes
- Confundir sd y EE. La sd describe valores individuales y no se reduce con más datos; el EE describe un promedio y sí.
- Esperar ganancias lineales. Duplicar la muestra reduce el error solo un 29%.
- Mezclar
ddof..std()de pandas divide entre n − 1,np.stdde numpy entre n. Elige uno y dilo; aquí todo usa pandas. - Redondear n hacia abajo. Los tamaños de muestra siempre se redondean hacia arriba.
¡Linterna encendida!
Practicaste: standard errorsampling distributionsimulationsample sizemargin of error
- Resuelto
- Sin pistas
- Al primer intento
