Documentación: Datos Locos - EPPA¶
Fecha de análisis: 2025-12-24 Fuente: Dra. Cristina Oleari (datos-labis/) Base analizada: 3,648 registros de 8 evaluados x 8 evaluadores
Resumen Ejecutivo¶
Se analizaron 3,648 registros de la base completa de evaluaciones posturales y se encontraron:
| Tipo de Problema | Cantidad | Estado |
|---|---|---|
| Errores de coma decimal (x10) | 4 | ✅ CORREGIDOS |
| Inconsistencias de signo | 19 | ⚠️ Documentados |
| Puntos no visibles (0.0) | Variable | ✅ Comportamiento correcto |
1. ERRORES DE COMA DECIMAL (x10) - CORREGIDOS¶
Descripción¶
La Dra. Oleari identificó: "debe ser un tema de la coma, porque la medición está cerca a 4 o 5 cm"
Se confirmaron 4 casos donde el valor fue multiplicado por 10 (error de entrada decimal):
Análisis Técnico: ¿Cómo se Calcula la Lordosis Lumbar?¶
La Lordosis Lumbar NO es un dato ingresado manualmente - es calculado automáticamente por el software MATLAB:
% Archivo: InterfazMedicionPerfilDerechoJulio2024.m, línea 672
DistanciaApexSacro = handles.FC * (XAPEXLUMBAR - handles.Xsacro);
Donde:
- FC = Factor de Calibración = 10 / D12 (cm/pixel)
- XAPEXLUMBAR = Coordenada X del marcador "Apex Lumbar"
- Xsacro = Coordenada X del marcador "Punto Sacro"
Causa Técnica del Error¶
Al analizar los archivos .mat de los casos con error, encontramos:
- Los evaluadores NO usaron el nombre exacto "Punto Sacro"
- Usaron: "Espina Ilíaca Posterosuperior", "Espina Ilíaca Posteroinferior"
-
El código MATLAB espera exactamente
case 'Punto Sacro' -
El código tiene un switch case estricto:
switch handles.lista case 'Punto Sacro' handles.Xsacro = x1; % Solo se asigna si el nombre es EXACTO -
Si el nombre no coincide,
Xsacroqueda en 0, causando: - Lordosis = FC × (X_ApexLumbar - 0) = FC × X_ApexLumbar
- Combinado con un FC atípico → valores 10x mayores
Validación: Otras Mediciones del Mismo Evaluador¶
| Variable | Evaluador 4 | Otros Evaluadores | ¿Inflado? |
|---|---|---|---|
| Ubicación sagital cabeza | 8.40 cm | 8.28-8.97 cm | ❌ Normal |
| Lordosis cervical | 8.44 cm | 10.22-10.95 cm | ❌ Normal |
| Tangentes Dorso-Sacro | 45.73 cm | -5.08 a -1.92 cm | ✅ 10x |
| Lordosis lumbar | 51.35 cm | 2.77-6.01 cm | ✅ 10x |
Solo las variables que usan Xsacro están afectadas.
Casos Corregidos¶
| Evaluado | Evaluador | Vista | Variable | Original | Corregido |
|---|---|---|---|---|---|
| 3 | 4 | Perfil derecho | Tangentes Dorso-Sacro | 45.73 cm | 4.57 cm |
| 3 | 4 | Perfil derecho | Lordosis lumbar | 51.35 cm | 5.14 cm |
| 6 | 8 | Perfil derecho | Tangentes Dorso-Sacro | 43.48 cm | 4.35 cm |
| 6 | 8 | Perfil derecho | Lordosis lumbar | 49.13 cm | 4.91 cm |
Evaluadores Afectados¶
- Evaluador 4: 2 errores
- Evaluador 8: 2 errores
Archivo Corregido¶
datos-labis/Base completa- CORREGIDA.xlsx
2. INCONSISTENCIAS DE SIGNO ENTRE EVALUADORES¶
Descripción¶
La Dra. Oleari mencionó: "distintos evaluadores midieron parecido pero con signos distintos, entonces se da una diferencia importante"
Se encontraron 19 casos donde diferentes evaluadores registraron el mismo paciente/variable con signos opuestos.
Análisis Técnico: ¿Cómo se Calcula el Signo?¶
Los signos son CALCULADOS automáticamente basándose en la posición relativa de los marcadores:
% Ángulo de Rodilla (líneas 1436-1443)
if anguloRodilla < 178
if XTROCANTER < XCONDILO % ← Esta comparación determina el signo
anguloRodilla = -anguloRodilla; % NEGATIVO = Recurvatum
else
anguloRodilla = +anguloRodilla; % POSITIVO = Flexo
end
end
% Ángulo Calcáneo (líneas 1516-1522)
if anguloCalcaneo < 178
if XAQUILES < XCALCANEO % ← Esta comparación determina el signo
anguloCalcaneo = -anguloCalcaneo; % NEGATIVO = Varo
else
% POSITIVO = Valgo
end
end
Causa Raíz: Ambigüedad en Ángulos Cercanos a 180°¶
Cuando el paciente tiene una alineación casi perfecta (ángulo ≈ 175-178°):
Evaluador A marca: Evaluador B marca:
┌──────────────────┐ ┌──────────────────┐
│ T ← X=150 │ │ T ← X=152 │
│ ║ │ │ ║ │
│ C ← X=151 │ │ C ← X=151 │
└──────────────────┘ └──────────────────┘
150 < 151? → SÍ 152 < 151? → NO
→ Resultado: -175° → Resultado: +175°
¡MISMO ÁNGULO REAL, SIGNOS OPUESTOS!
Ejemplos con Datos Reales¶
Caso 1: Evaluado 1 - Ángulo de rodilla (Perfil Izquierdo)¶
Evaluador 4: -175.83° (Genu Recurvatum) ← X_Trocánter < X_Cóndilo
Evaluador 1: +174.54° (Genu Flexo) ← X_Trocánter > X_Cóndilo
Desviación real de 180°: ambos ≈ 5° (clínicamente equivalentes)
Caso 2: Evaluado 2 - Ángulo Calcáneo Derecho (Posterior)¶
Evaluador 3: -177.57° (Calcáneo varo) ← X_Aquiles < X_Calcáneo
Evaluador 2: +174.40° (Calcáneo valgo) ← X_Aquiles > X_Calcáneo
Desviación real de 180°: ambos ≈ 3-6° (clínicamente equivalentes)
Conclusión Técnica¶
- NO es un error de software ni de evaluador
- Es una limitación del algoritmo que depende de comparaciones X < Y muy sensibles
- Clínicamente, +175° y -175° representan la misma desviación de 5° respecto a 180°
Recomendaciones para el Software¶
% Opción 1: Umbral de tolerancia en pixeles
if abs(XTROCANTER - XCONDILO) < 5 % pixeles
diag = 'Alineación borderline - signo indeterminado';
end
% Opción 2: Reportar desviación absoluta de 180°
desviacion = abs(180 - abs(anguloRodilla)); % Siempre positivo
% Opción 3: Flag de advertencia
if abs(anguloRodilla) > 175
diag = strcat(diag, ' [BORDERLINE]');
end
3. PUNTOS NO VISIBLES (Valor 0.0)¶
Comportamiento Correcto¶
Según la Dra. Oleari en la conversación:
"Si el punto no es visible, que marque cero la medición, pero que no se cuelgue"
Los valores 0.0 con diagnóstico "Punto no visible" son comportamiento esperado, no errores.
Ejemplo¶
Evaluado 6, Evaluador 8, Perfil Izquierdo
Variable: Ángulo de rodilla [°]
Valor: 0.0
Diagnóstico: "Punto no visible"
Validaciones Implementadas¶
Script de Detección¶
python validation/fix_crazy_data.py
Script de Corrección¶
python validation/fix_crazy_data.py --fix
Archivos Generados¶
validation/crazy_data_report.txt- Reporte legiblevalidation/crazy_data_analysis.json- Análisis en JSONdatos-labis/Base completa- CORREGIDA.xlsx- Base con correcciones
Rangos de Validación Implementados¶
Variables en Centímetros¶
| Variable | Rango Normal | Rango Sospechoso |
|---|---|---|
| Rotación | -8 a 8 cm | > 15 cm |
| Distancia | 0 a 12 cm | > 20 cm |
| Tangentes | -8 a 8 cm | > 15 cm |
| Lordosis | 0 a 10 cm | > 20 cm |
Variables en Grados¶
| Variable | Rango Normal | Comportamiento Especial |
|---|---|---|
| Inclinación cabeza | -20° a 20° | - |
| Inclinación hombros | -20° a 20° | - |
| Ángulo Calcáneo | 150° a 210° | Negativo = Varo |
| Ángulo Rodilla | 150° a 200° | Negativo = Recurvatum |
Conclusiones¶
- Los "datos locos" son errores de cálculo del software, no de entrada manual:
- El código MATLAB espera nombres exactos de marcadores ("Punto Sacro")
- Los evaluadores usaron nombres anatómicos alternativos ("Espina Ilíaca Posterosuperior")
-
Esto causó que
Xsacro = 0, inflando las mediciones -
La corrección de ÷10 es una aproximación válida, confirmada por la Dra. Oleari
-
Las inconsistencias de signo son por convención no uniforme entre evaluadores
-
Los valores 0.0 para puntos no visibles son comportamiento correcto
-
Recomendación para el software: Agregar alias de nombres de marcadores:
case {'Punto Sacro', 'Espina Ilíaca Posterosuperior', 'EIPS'} handles.Xsacro = x1;
Referencias¶
- Video conversación:
conversaciones-dra-oleari/imput.webm - Transcripción:
conversaciones-dra-oleari/transcripcion-2.txt - Script de análisis:
validation/fix_crazy_data.py - Base original:
datos-labis/Base completa- revisada 2 veces.xlsx - Base corregida:
datos-labis/Base completa- CORREGIDA.xlsx
Última actualización: 2025-12-24 Responsable: Luis Arancibia (análisis automático con Claude)