# 07 · Cotejo de la segunda implementación impl1 = DuckDB SQL (ventanas `rank`/`count … RANGE`, Gini por pares, mediana `median`) + Python puro (AUC por grupos de empates, bootstrap con `randrange`). impl2 = Python puro desde la base `b` (población, PBL fiable, mercados y etiqueta recalculados; Gini por la fórmula ordenada; AUC por conteo explícito de pares; bootstrap con `choices` y bisect sobre pesos acumulados). Limitación: las dos las escribe el mismo ejecutor; impl2 se escribió desde el texto sellado sin copiar código de impl1. ## 1. Por lote (PC) | Variable | lotes impl1 | lotes impl2 | casan | ambos nulos | uno nulo | máx \|Δ\| | ¿≤ 1e−9? | |---|---|---|---|---|---|---|---| | rango | 164700 | 164700 | 164700 | 0 | 0 | 0.0 | sí | | sep | 164700 | 164700 | 164700 | 0 | 0 | 0.0 | sí | | baja_cond | 164700 | 164700 | 164700 | 20188 | 0 | 0.0 | sí | | rep_igual | 164700 | 164700 | 164700 | 126194 | 0 | 5.773159728050814e-15 | sí | | estab | 164700 | 164700 | 164700 | 77160 | 0 | 0.0 | sí | | ute_rivales | 164700 | 164700 | 164700 | 0 | 0 | 0.0 | sí | | pnc | 164700 | 164700 | 164700 | 4729 | 0 | 0.0 | sí | | p_rango | 164700 | 164700 | 164700 | 8792 | 0 | 0.0 | sí | | p_sep | 164700 | 164700 | 164700 | 8792 | 0 | 0.0 | sí | | p_baja | 164700 | 164700 | 164700 | 20774 | 0 | 0.0 | sí | | p_rep | 164700 | 164700 | 164700 | 128532 | 0 | 0.0 | sí | | p_est | 164700 | 164700 | 164700 | 79018 | 0 | 0.0 | sí | | s3 | 164700 | 164700 | 164700 | 8792 | 0 | 2.220446049250313e-16 | sí | | s5 | 164700 | 164700 | 164700 | 8792 | 0 | 2.220446049250313e-16 | sí | | pct_s3 | 164700 | 164700 | 164700 | 8792 | 0 | 0.0 | sí | ## 2. AUC puntual (tolerancia 1e−9) | Candidato | Grupo | impl1 | impl2 | \|Δ\| | ¿ok? | |---|---|---|---|---|---| | S3 | alimentos | 0.5130140202589387 | 0.5130140202589387 | 0.0 | sí | | S3 | militar | 0.4593328335832084 | 0.4593328335832084 | 0.0 | sí | | S3 | carreteras | 0.625 | 0.625 | 0.0 | sí | | S3 | conjunto | 0.505137666761283 | 0.505137666761283 | 0.0 | sí | | S5 | alimentos | 0.5175420943181056 | 0.5175420943181056 | 0.0 | sí | | S5 | militar | 0.506184407796102 | 0.506184407796102 | 0.0 | sí | | S5 | carreteras | 0.625 | 0.625 | 0.0 | sí | | S5 | conjunto | 0.516065852966222 | 0.516065852966222 | 0.0 | sí | | RANGO | alimentos | 0.5164687730596365 | 0.5164687730596365 | 0.0 | sí | | RANGO | militar | 0.46570464767616193 | 0.46570464767616193 | 0.0 | sí | | RANGO | carreteras | 0.575 | 0.575 | 0.0 | sí | | RANGO | conjunto | 0.5089128583593528 | 0.5089128583593528 | 0.0 | sí | | SEP | alimentos | 0.4837660159656537 | 0.4837660159656537 | 0.0 | sí | | SEP | militar | 0.4883808095952024 | 0.4883808095952024 | 0.0 | sí | | SEP | carreteras | 0.575 | 0.575 | 0.0 | sí | | SEP | conjunto | 0.4846721544138518 | 0.4846721544138518 | 0.0 | sí | | BAJA_COND | alimentos | 0.5555026656511804 | 0.5555026656511804 | 0.0 | sí | | BAJA_COND | militar | 0.4718772826880935 | 0.4718772826880935 | 0.0 | sí | | BAJA_COND | carreteras | 0.775 | 0.775 | 0.0 | sí | | BAJA_COND | conjunto | 0.53963368863534 | 0.53963368863534 | 0.0 | sí | | PNC | alimentos | 0.4989086833411987 | 0.4989086833411987 | 0.0 | sí | | PNC | militar | 0.6770334928229665 | 0.6770334928229665 | 0.0 | sí | | PNC | carreteras | 0.5 | 0.5 | 0.0 | sí | | PNC | conjunto | 0.5730748093700625 | 0.5730748093700625 | 0.0 | sí | | REP_IGUAL | alimentos | 0.5608493555884217 | 0.5608493555884217 | 0.0 | sí | | REP_IGUAL | militar | 0.875 | 0.875 | 0.0 | sí | | REP_IGUAL | carreteras | None | None | None | sí | | REP_IGUAL | conjunto | 0.5681114551083591 | 0.5681114551083591 | 0.0 | sí | | ESTAB | alimentos | 0.34388859322334575 | 0.34388859322334575 | 0.0 | sí | | ESTAB | militar | 0.8055925432756325 | 0.8055925432756325 | 0.0 | sí | | ESTAB | carreteras | None | None | None | sí | | ESTAB | conjunto | 0.3981684408265498 | 0.3981684408265498 | 0.0 | sí | | UTE_RIVALES | alimentos | 0.5 | 0.5 | 0.0 | sí | | UTE_RIVALES | militar | 0.5 | 0.5 | 0.0 | sí | | UTE_RIVALES | carreteras | 0.5 | 0.5 | 0.0 | sí | | UTE_RIVALES | conjunto | 0.5 | 0.5 | 0.0 | sí | ## 3. IC95 bootstrap de S3 (tolerancia 0,02 por extremo; generadores distintos) | Grupo | impl1 | impl2 | máx \|Δ\| | ¿ok? | |---|---|---|---|---| | alimentos | [0.3270; 0.6532] (2000 válidas) | [0.3451; 0.6431] (2000 válidas) | 0.0180 | sí | | militar | [0.1266; 0.7955] (1992 válidas) | [0.1298; 0.8028] (1998 válidas) | 0.0073 | sí | | carreteras | [0.2500; 0.9091] (1344 válidas) | [0.2500; 0.9000] (1356 válidas) | 0.0091 | sí | | conjunto | [0.3369; 0.6333] (2000 válidas) | [0.3485; 0.6357] (2000 válidas) | 0.0116 | sí | ## 4. D2 Cantabria: cifras agregadas impl2: {"ambito": 870, "senal_ambito": 128, "doce": 275, "senal_doce": 55, "ctl": 37776, "senal_ctl": 7656, "lics_senal": 125} impl1: {"ambito_lotes": 870, "ambito_senalados": 128, "ambito_licitaciones": 802, "ambito_licitaciones_senaladas": 125, "doce_lotes": 275, "doce_senalados": 55, "doce_licitaciones": 266, "otros_cantabria_lotes": 585, "otros_cantabria_senalados": 73, "controles_lotes": 37776, "controles_senalados": 7656, "auc_exploratorio_doce_vs_controles": 0.47404864944616915} **Por lote y AUC: todo dentro de tolerancia.**