3 - Especificación de Variables eMAPS

Para facilitar el procesamiento planteamos un protocolo de especificación para procesamiento de las variables de la metodología que consiste en definir un lenguaje de procesamiento que permita representar el valor en el que cada variable afecta el score de caminabilidad en el segmento de calle, permitiendo así abstraer del lenguaje de programación o software utilizado para el cálculo del score.

El lenguaje de procesamiento consiste en un archivo de texto plano separado por comas (CSV) que puede ser editado fácilmente en un software de hoja de cálculo como LibreOffice Calc, Microsoft Excel, Google Sheets, etc.

La estructura del archivo de texto es la siguiente.

Estructura
Columna Descripción Dato Observación      
variable Código de la variable Texto Debe coincidir con la codificación de la pregunta en el formulario KoboToolBox      
desc Descripción de la variable Texto        
alias Alias para describir la variable Texto Alias que será utilizado para nombrar las variables en archivos de salida de resultados      
level Nivel de la pregunta segment / parcel Indica si la pregunta corresponde a nivel de Segmento o Parcela      
section Sección de la variable Texto Indica la sección a la que pertenece la variable      
scale Escala de la variable Texto Indica la escala a la que pertenece la variable      
subscale Sub-escala Texto Indica la sub-escala a la que pertenece la variable      
aggregate Agregación TRUE / FALSE indica si la pregunta es agregada desde otras preguntas      
aggregate_ref Referencia de agregación variable Inidca el código de la pregunta a la que se agrega la variable actual      
type Tipo de cálculo TIPO Indica el tipo de calculo sobre la variable      
    bool Asigna un valor de acuerdo al valor booleano de la variable: ej True=1 False=0    
    formula Asigna un valor de acuerdo a una fórmula ([value]/[segment_length])*100    
    max En preguntas de agregación, indica que asigna el máximo valor de las preguntas agregadas      
    min En preguntas de agregación, indica que asigna el mínimo valor de las preguntas agregadas      
    avg En preguntas de agregación, indica que asigna el valor promedio de las preguntas agregadas      
    count En preguntas de agregación, indica que asigna número de preguntas agregadas      
    num_in_parcels Asigna el valor agregado de número de parcelas que tienen la variable, se procesa como una pregunta numérica      
    numeric Asigna un valor de acuerdo a reglas aplicadas al valor numérico de la variable ej: (>=0, <0.9)=0 (>=0.9)=1 *=0
    option Asigna un valor de acuerdo a reglas sobre cadena de texto de la variable ej: A=0:En acera B=1:En calzada C=0:No existe
    proportion_building Asigna un valor de acuerdo a la proporción de la ocurrencia de la variable en las parcelas construidas, para el número de parcelas construidas, se calcula como un valor numérico (>0, <=0.25)=0 (>0.25, <=0.75)=1 *=0
    slope Aplica reglas de valor numérico sobre el valor de porcentaje de la pendiente del segmento de calle (>=0, <=0.05)=0 (>0.05, <=0.1)=-1    
required Requerido TRUE / FALSE Indica si la pregunta es obligatoria para el cálculo      
sum_type Tipo de operación POSITIVE / NEGATIVE Indica el tipo de operación de suma que realiza el cálculo      
option_1 Configuración del cálculo de acuerdo al tipo de cálculo de cada pregunta Texto Indican las reglas de cálculo para cada pregunta      

Para la construcción de las condiciones y reglas de cada variable se han establecido reglas de sintaxis para cada tipo de pregunta, y otras de carácter general, como se describe a continuación

NOTA: el protocolo evaluará todas las preguntas especificacas en el archivo CSV, se recomienda que en la especificación de variables consten todas las preguntas del formulario de levantamiento de información par facilitar modificaciones o variaciones en la asignación de puntajes, para las preguntas que se desea excluir en el cálucolo utilizar la opción «required=FALSE» .

Reglas de sintaxis generales:

  • Todas las reglas se evalúan de izquierda a derecha,
  • El valor se asigna al segmento una vez cumpla una condición,
  • Una vez se cumple una condición se ignoran las siguientes reglas
  • Si no cumple ninguna condición y no existe una regla para cualquier otro valor (*=N) se asignará el valor 0
  • Si una pregunta está presente en el protocolo de calificación y no en los datos de entrada se producirá un error de sintaxis.

Comentarios:

# Representa el inicio de una línea de comentario, no será interpretada en el análisis.

Regla cualquier otro valor.- aplica la puntuación para cualquier valor que no ha cumplido las reglas previamente establecidas:

*={PUNTUACION}

ejemplo:

Reglas de puntajes:

Las reglas para asignación de puntajes tienen el siguiente formato:

{VALOR}:{PUNTUACION}:[{DESCRIPCION}]

Donde {VALOR} representa el valor que puede tener la pregunta evaluada, {PUNTUACION} representa el valor que se asignará si la respuesta de la pregunta evaluada es igual a {VALOR} y {DESCRIPCION} es una descripción de la regla y es de carácter opcional

Una pregunta puede tener una o mas reglas de puntuación de acuerdo al tipo de pregunta y a los posibles valores de acuerdo a la configuración de la pregunta en el formulario de evaluación.

Pregunta de tipo Bool

Representa a preguntas de tipo verdadero/falso ejemplo:

{TRUE | FALSE} = {PUNTUACION} {:[COMENTARIO]}

ejemplo:

variable Q_008a
desc Semáforo vehicular - inicial
alias seg_semaforo_vehicular_ini
level segment
section building
scale intersections
subscale intersections_positive
aggregate  
aggregate_ref Q_008
type bool
required TRUE
sum_type positive
option_1 True=1:Verdadero
option_2 False=0:Falso

Para la variable de ejemplo Q_008a se evaluará cada encuesta asignando el puntaje 1 cuando la respuesta es Verdadero y 0 cuando la respuesta es Falso

Pregunta de tipo Numérico:

Evalúa una expresión numérica mediante reglas de comparación utilizando los operadores (<, >, <=, >=):

En éste tipo de preguntas opcionalmente puede utilizar paréntesis para agrupar las condiciones y facilitar la lectura de la expresión

La condición para tipo numérico tiene la siguiente sintaxis:

[(] {>|<|>=|<}={VALOR}, {>|<|>=|<=}={VALOR},    [)] = {PUNTUACIÓN} [:{COMENTARIO}]

variable Q_008
desc Semáforo - inicial
alias seg_semaforo_ini
level segment
section building
scale intersections
subscale intersections_positive
aggregate TRUE
aggregate_ref  
type numeric
required TRUE
sum_type positive
option_1 (>=1, <=6)=1
option_2 (>=7)=2
option_3 *=0

Para la variable de ejemplo Q_008 se evaluará cada encuesta asignando el puntaje 1 si la respuesta a la pregunta en la encuesta es >=1 y <=6, obtendrá un valor de 2 cuando la respuesta cumple >=7 y se asignará 0 en cualquier otro caso.

Pregunta de tipo Texto:

Evalúa una expresión de cadena de texto, su seintaxis es:

{VALOR}={PUNTUACION} [:{DESCRIPCION}]

Ejemplo:

variable Q_023
desc Construcciones bien mantenidas
alias build_maintenance
level parcel
section building
scale building_positive
subscale building_maintenance
aggregate  
aggregate_ref Q_023_SEG
type option
required TRUE
sum_type positive
option_1 A=1:Bueno (76-100%)
option_2 B=0:Regular (51-75%)
option_3 C=0:Malo
option_4 D=0:Precario
option_5 E=0:N/S o N/A

Para la variable de ejemplo Q_023 se evaluará cada encuesta asignando el puntaje: 1 si la respuesta es A, 0 si las respuestas son B o C o D o E

NOTA: en éste caso se podría haber utilizado la regla «cualquier otro valor» para indicar las opciones que asignan ``0`` al puntaje, sin embargo para mejor legibilidad se recomienda que consten todas las opciones de respuesta del formulario de levantamiento.

Pregunta de tipo Fórmula

Evalúa una pregunta aplicando una fórmula sobre el valor de la respuesta en el formulario.

la fórmula puede contener operadores matemáticos:

Operador Descripción Ejemplo
«+» Suma 3+2 # r es 5
«-» Resta 4-7 # r es -3
«-» Negación -7 # r es -7
«*» Multiplicación 2*6 # r es 12
«**» Exponente 2**6 # r es 64
«/» División 3.5/2 # r es 1.75
«//» División Entera 3.5//2 # r es 1.0
«%» Módulo 7%2 # r es 1

y las siguientes variables:

Variable Descripción
[value] Expresa el valor que se está evaluando
[segment_length] Expresa la longitud del segmento de calle que se está evaluando
[segment_slope] Expresa la pendiente del segmento que se está evaluando

Ejemplo:

variable Q_040_l
desc Luminarias - Lado izquierdo
alias seg_acera_luminarias_izq
level segment
section streetscape
scale streetscape_positive
subscale lighting
aggregate  
aggregate_ref Q_040
type formula
required TRUE
sum_type positive
option_1 ([value]/[segment_length])*100

Pregunta de tipo Slope (Pendiente)

Aplica reglas de valor numérico sobre el valor de porcentaje de la pendiente del segmento de calle evaluado, ejemplo:

variable Q_SLOPE
desc Pendiente
alias seg_pendiente
level segment
section streetscape
scale streetscape_negative
subscale slope
aggregate  
aggregate_ref  
type slope
required TRUE
sum_type negative
option_1 (>=0, <=0.05)=0
option_2 (>0.05, <=0.1)=-1
option_3 (>0.1, <=0.15)=-2
option_4 (>0.15)=-3
option_5 *=0

Para la variable de ejemplo Q_SLOPE se evaluará el porcentaje de pendiente del segmento de calle y asignará el valor de acuerdo a la evaluación de las reglas, en el ejemplo asignando un valor negativo para pendientes mayores a 0.05

Preguntas Agregadas

Aplica a todas las preguntas cuyo parámetros aggregate sea TRUE y realiza el procesamiento de la siguiente manera:

  • Realiza el cálculo para todas las preguntas que tiene relación de agregación, ésta relación de agregación se establece en el parámetro aggregate_ref de la pregunta, y deberá contener el código de la pregunta a la que se agregará el resultado.

  • Obtiene el valor agregado de las preguntas hijas, aplicando las siguientes condiciones que puede establecer el parámetro “type” de la pregunta:

    • «sum» aplica como resultado la suma de las preguntas hijas evaluadas
    • «max» aplica como resultado el valor máximo de las preguntas hijas evaluadas
    • «min» aplica como resultado el valor mínimo de las preguntas hijas evaluadas
    • «count» aplica como resultado el valor del número de preguntas hijas evaluadas
    • «avg» aplica como resultado el valor promedio de las preguntas hijas evaluadas
    • «Numeric» aplica las reglas de tipo “numérico” a la suma de las preguntas hijas evaluadas
    • «Formula» aplica las reglas de tipo formula a la suma de las preguntas hijas evaluadas

Ejemplo:

Pregunta de agregación:

variable Q_037
desc Basureros Públicos en Acera
alias seg_acera_basureros
level segment
section streetscape
scale streetscape_positive
subscale trash_cans
aggregate TRUE
aggregate_ref  
type numeric
required TRUE
sum_type positive
option_1 (>0)=1
option_2 *=0

Preguntas agregadas o hijas:

variable Q_037_l
desc Basureros Públicos en Acera - Lado izquierdo
alias seg_acera_basureros_izq
level segment
section streetscape
scale streetscape_positive
subscale trash_cans
aggregate  
aggregate_ref Q_037
type numeric
required TRUE
sum_type positive
option_1 (>0)=1
option_2 *=0
variable Q_037_r
desc Basureros Públicos en Acera - Lado derecho
alias seg_acera_basureros_der
level segment
section streetscape
scale streetscape_positive
subscale trash_cans
aggregate  
aggregate_ref Q_037
type numeric
required TRUE
sum_type positive
option_1 (>0)=1
option_2 *=0

En el ejemplo con la propiedad aggregate = TRUE definimos la pregunta de agregación Q_037 y mediante la propiedad aggregate_ref relacionamos las preguntas Q_037_l y Q_037_r.

Interpretamos el resultado de la suma de puntajes de las preguntas hijas mediante evlauación tipo «Numeric», es decir, si en el segmento de calle hay al menos un elemento «Basurero público en acera» el segmento de calle obtiene un puntaje de 1 caso contrario 0.

NOTA: Para casos que se requiera, se pueden anidar las agregaciones en varios niveles