Saltar a contenido

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:

  1. Los evaluadores NO usaron el nombre exacto "Punto Sacro"
  2. Usaron: "Espina Ilíaca Posterosuperior", "Espina Ilíaca Posteroinferior"
  3. El código MATLAB espera exactamente case 'Punto Sacro'

  4. 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
    

  5. Si el nombre no coincide, Xsacro queda en 0, causando:

  6. Lordosis = FC × (X_ApexLumbar - 0) = FC × X_ApexLumbar
  7. 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

  1. NO es un error de software ni de evaluador
  2. Es una limitación del algoritmo que depende de comparaciones X < Y muy sensibles
  3. 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 legible
  • validation/crazy_data_analysis.json - Análisis en JSON
  • datos-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

  1. Los "datos locos" son errores de cálculo del software, no de entrada manual:
  2. El código MATLAB espera nombres exactos de marcadores ("Punto Sacro")
  3. Los evaluadores usaron nombres anatómicos alternativos ("Espina Ilíaca Posterosuperior")
  4. Esto causó que Xsacro = 0, inflando las mediciones

  5. La corrección de ÷10 es una aproximación válida, confirmada por la Dra. Oleari

  6. Las inconsistencias de signo son por convención no uniforme entre evaluadores

  7. Los valores 0.0 para puntos no visibles son comportamiento correcto

  8. 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)