Tutorial formr

Fecha de publicación

15 de septiembre de 2022

Contexto

Actualmente, el diseño de cuestionarios e instrumentos de medición en el contexto del desarrollo de encuestas sociales se implementa principalmente en formato web. Incluso cuando la aplicación es cara-a-cara, crecientemente las entrevistas se encuetran mediadas por un dispositivo electrónico tipo tablet o teléfono donde se registran las respuestas. Por lo tanto, la elección de la plataforma en la cual diseñar y programar la encuesta cobra cada vez más importancia.

La plataforma utilizada por defecto por el público general al momento de diseñar encuestas actualmente es Google Forms, que tiene la ventaja de ser fácil de diseñar, administrar y registrar respuestas. Sin embargo, carece de funcionalidades necesarias en investigaciones sociales (como seguimiento, aleatorización de preguntas y módulos, etiquetado, reproducibilidad, etc.). Para encuestas con funciones más avanzadas existen servicios como Qualtrics y Surveymonkey, que poseen muchas ventajas en diseño de cuestionario pero que poseen limitaciones en términos de licencias pagadas y propiedad del trabajo realizado. Por ejemplo, si se deja de pagar Qualtrics, todo el trabajo de programación de la encuesta en la plataforma ya no es accesible y es difícilmente transferible a otras plataformas.

formr es a la vez una plataforma y una librería de R que permite desarrollar y administrar encuestas en un entorno caracterizado por:

  • código abierto
  • amplia variedad de funcionalidades como aleatorización de módulos y preguntas, encuestas longitudinales, experimentos, etc.
  • programación en un entorno simple (planilla de cálculo)
  • propiedad de los contenidos (a diferencia de plataformas donde la programación de la encuesta es accesible mediante licencia pagada)
  • reproducibilidad
  • vínculo expedito con R, tanto para análisis de los datos como también para incorporar en la encuesta elementos generados mediante R / Rmarkdown

Los pasos para poder utilizar formr son los siguientes:

1- generar una cuenta 2- crear encuesta 3- publicar encuesta 4- monitoreo de respuestas 5- obtener datos desde R

1. Generar cuenta

  1. abrir una cuenta en formr.org (en ocasiones puede que las cuentas para usuarios nuevos estén temporalmente suspendidas, en ese caso abrir una cuenta en https://workshops.formr.org/, que se utiliza para fines de aprendizaje)

  2. confirmar el mail enviado al correo con el que se abrió la cuenta y hacer login.

  1. enviar un correo a accounts@formr.org para obtener una cuenta de administrador. En el asunto escribir: administratior account request, y en el cuerpo del correo: Dear formr team, I would like to request an administrator account as well as API keys for my account [aquí el correo con el que se creó la cuenta]. Best regards [nombre].

En general la respuesta es rápida.

  1. Una vez recibido el correo autorizando la cuenta como administrador, al ingresar nuevamente a formr se muestra un panel (dashboard) con distintas opciones:

Las principales opciones son:

  • Create survey: es el diseño del cuestionario
  • Create run: es la implementación de la encuesta

Además, hay un link a Documentation, que es el manual de formr y se recomienda leer. En este tutorial cubriremos solo algunos aspectos contenidos en el manual.

2. Crear encuesta

  • botón create survey en el dashboard: aparecen dos formas de ingresar la información, desde un archivo local o una Googlesheet, que es un simil de excel en los archivos de Drive de google.

  • en general se recomienda vincular a una hoja de Googlesheets

  • la planilla donde se ingresa la información posee ciertas columnas específicas que luego son leídas por formr:

  • las columnas principales de la planilla son:

    • type: tipo de item (se especifica con un código que se detalla abajo)
    • name: es el nombre del item y también será el nombre de la variable en la base de datos. Considerar: minúsculas, breves, sin caractéres especiales, sin espacios
    • label: es el texto del item o pregunta
    • choice: son las opciones de respuesta
  • las otras columnas son:

    • class: opciones adicionales de la pregunta, como por ejemplo formato de las opciones, utilización de lista recurrente de opciones de respuesta, etc.
    • optional: si la pregunta es opcional o no. Si se ingresa un asterisco en esta casilla la pregunta correspondiente es opcional, es decir, se puede seguir avanzando en el cuestionario a pesar de no responder ninguna opción.
    • showif: es la manera de especificar filtros. Se utilizan operadores lógicos haciendo referencia al nombre de la pregunta (columna name) . Por ejemplo: pregunta1==3; se mostrará esta pregunta solamente a aquellos que hayan respondido 3 en la pregunta 1.

La columna explanations no es considerada en la lectura de la planilla desde formr, se utiliza solo para comentarios en relación a la pregunta (por ejemplo: “corregir pregunta antes del piloto”)

Creando la planilla

  • hay una planilla modelo de forms que se encuentra disponible aquí. Para poder generar un archivo propio y editable a partir de este modelo se debe hacer una copia en el drive personal: ir a archivo > hacer una copia, y se sugiere dar un nombre que permita su clara identificación (ej: probandoencuesta). Evitar espacios y caracteres especiales

  • una vez creado el archivo se debe generar permiso para que pueda ser accesible desde formr: en compartir > cualquier persona con el enlace > editor.

  • copiar la dirección de la planilla y pegar en la ventana de formr sheet link. Además, dar un nombre a la encuesta (survey name).

  • Tener en cuenta las restricciones para el nombre de la encuesta: debe comenzar con una letra, entre 2 y 64 caracteres, sin caracteres especiales (tildes, eñes, espacios). Para este tutorial le daremos el nombre “prueba1”

  • con esto la información de la planilla debería cargarse y así se puede acceder a la encuesta desde el menú superior (Surveys). Al hacer click en la encuesta se abre la siguiente plataforma de diseño:

  • si se presiona la opción test survey se puede visualizar (renderizar) la encuesta creada, y al comparar planilla con la visualización se puede tener una idea de cómo se especifican los distintos tipos de ítems e información que aparece en la encuesta

  • modificaciones e incorporación de nuevos items: cada vez que se realiza una modificación en la planilla se debe actualizar la encuesta en formr (no es automático). Para ello hay que ir a import items y presionar el botón al final (Upload new items). En caso que items anteriores hayan sido borrados o que la etiqueta se haya modificado (name en la planilla ), mostrará una advertencia y hay que escribir el nombre de la encuesta para modificar esto.

Tipos de items y campos

El aspecto central del cuestionario sin duda se realaciona con el diseño de items. En la planilla, el tipo de item se especifica en la columna type. Los principales son:

  • Texto:

    • text: campo de texto para respuesta breve
    • textarea: campo respuesta amplia
    • note: solo texto (por ejemplo encabezados, instrucciones), no solicita respuesta
  • Botón de salto de página:

    • submit, y darle un label para poder avanzar
  • Selección múltiple

    type descripción
    mc lista_de_elección opción múltiple (botones de radio), puede elegir solo uno.
    mc_button lista_elección como mc pero en lugar de que el texto aparezca junto a un botón pequeño, un botón grande contiene cada etiqueta de opción
    mc_multiple opción múltiple múltiple (casillas de verificación), puede elegir varios. Opciones definidas como arriba.
    mc_multiple_button como mc_multiple y mc_button controlar una sola casilla de verificación para la confirmación de una declaración.
    check un botón más grande para comprobar.
    rating_button; min, max, step Esto muestra la etiqueta de elección 1 a la izquierda, la etiqueta de elección 2 a la derecha y una serie de botones numerados definidos por min, max, step en el medio. Los valores predeterminados son 1,5,1.
    sex abreviatura de mc_button con los símbolos ♂, ♀ como opciones
    select_one un menú desplegable, puede elegir solo uno select_multiple
    select_or_add_one, choice_list, maxType como select_one, pero permite a los usuarios elegir una opción no dada. Utiliza Select2. se puede usar para establecer un límite superior en la longitud de la opción agregada por el usuario. El valor predeterminado es 255.
    select_or_add_multiple, choice_list, maxType, maxChoose como select_multiple y select_or_add_one, permite a los usuarios agregar opciones no proporcionadas. Se puede usar para colocar un límite superior en la cantidad de opciones seleccionables.
    mc_heading, choice_list Este tipo le permite mostrar las etiquetas para las opciones mc o mc_multiple solo una vez. Para obtener el aspecto tabular necesario, asigne un ancho constante a las opciones (usando, por ejemplo, mc-width100), asigne al encabezado las mismas opciones que a los mcs y asigne a los siguientes mcs (o mc_multiples) las mismas clases + hide_label. En pantallas pequeñas, mc_heading se ocultará y las etiquetas se volverán a mostrar automáticamente, ya que, de lo contrario, el diseño tabular se rompería.

Un ejemplo de encuesta con estas opciones se puede ve aquí. El archivo de origen se puede acceder aquí

3. Generar y publicar encuesta (Runs)

En formr hay una diferencia importante entre la encuesta ingresada (cuestionario o survey) y la encuesta administrada, que se denomina Run. Un Run consiste en montar la o las encuestas de manera que puedan ser luego respondidas en la plataforma online. Esta distinción hace sentido ya que permite la creación de cuestionarios independientes (por ejemplo, por módulos a cargo de distintos equipos) y que luego se pueden combinar en un mismo Run. Esto además da la posibilidad de filtrar módulos completos según respuestas anteriores y de aleatorizar los módulos. Con el Run además se genera una dirección web que será luego la que se puede distribuir en el trabajo de campo de la encuesta.

Generación de un Run

  • desde el dashboard o el menú superior: Create run, y dar un nombre con las restricciones habituales, aparece lo siguiente:

  • un Run es el diseño del estudio propiamente tal. Para ello se pueden ingresar items de distintas encuestas presentes en la cuenta, ordenar, introducir elementos adicionales como pausas, tiempos, mensaje final, etc. también desde el Run se puede visualizar la encuesta con Test run.

4.Obtención de datos

Exportar desde formr

  • Directamente desde la página de formr, ir a la encuesta -> show results -> export, y exportar como csv. Luego leer desde r con data<-read.csv(nombre del archivo)

Leer desde R con la librería formr

  • instalar la librería formr (advertencia: en mi caso requirió actualizar bioconductor , lo que a su vez actualiza varias librerías y tomó un rato largo. Mejor dejarlo corriendo durante la noche)

  • cargar librería Cargar/instalar librería

pacman::p_load(formr)
  • ingresar credenciales:
formr_store_keys("encuestas.sociales.facso@gmail.com")
  • ingresar cuenta gmail y password de formr en ventana emergente

  • luego pide otra cosa (keyring), invesar un password y memorizarlo/guardarlo para una siguiente ocasión

  • la conexión queda hecha y se pueden obtener los datos, por ejemplo:

results <- formr_results(survey_name = 'caracterizacion')
Advertencia

Bugs: Problemas de conexión:

  • en ocasiones he tenido problemas a la hora de re-conectar con formr, aparece el error (pero tal vez sea una cosa de mi sistema operativo, Linux-Ubuntu):
Error: lexical error: invalid char in json text.
                                       <!DOCTYPE html> <html>     <hea
                     (right here) ------^

Pero en realidad ese error ocurre porque no reconoce las credenciales, si pongo una password aleatoria también aparece el error. Mi impresión es que es algún error de la librería keyring. Por lo tanto, ingresar de esta manera (que no utiliza librería keyring):

formr_connect(
  email = "encuestas.sociales.facso@gmail.com",
  password = "aqui_password",
)

Arroja un warning, pero de todas maneras queda conectado.

  • tener en cuenta que los datos se obtienen de cada una de las encuestas por separado, entonces si se necesita información de otro(s) módulo(s) para el análisis se deben juntar (merge) las bases de datos. Para ello, la variable que identifica a cada caso es la sesión (session), ejemplo:
df1 %>%
  left_join(df2
, by='session') %>%  left_join(df3, by='session')