DCEtool: una herramienta visual para diseñar, encuestar y analizar experimentos de elección discreta

  1. Sobre la herramienta
  2. Instalación
  3. Creando un experimento de elección discreta
    • La selección de atributos y niveles
    • La elección del número de alternativas
    • La elección del número de choice sets
    • La elección de coeficientes previos
  4. Procesamiento del diseño experimental
  5. Generación de una encuesta local
    • Nombre de las alternativas
    • Texto introductorio y final
    • Diseño secuencial de Bliemer y Rose
  6. Análisis de los resultados
    • Regresión logística condicional
    • Regresión logística condicional con precio lineal
    • Regresión logística de parámetros aleatorios

1. Sobre la herramienta

DCEtool es una herramienta visual pensada para la creación, simulación y análisis de experimentos de elección discreta. Está basada en el paquete de R idefix (https://cran.r-project.org/package=idefix) y su interfaz visual ha sido programada en Shiny. DCEtool pretende simplificar al máximo el proceso de creación de un experimento de elección discreta, simplificando los aspectos más difíciles de proceso de creación (generación de un experimento eficiente, codificación del diseño, incorporación de información previa). Asímismo, DCEtool permite la puesta en práctica del experimento recién creado a través de una encuesta local que, si es respondida, puede ser analizada a través de una regresión logística condicional o una regresión logística de parámetros aleatorios.

2. Instalación

El paquete DCEtool requiere tener instalados R y RStudio. Ambos programas son gratuítos y están disponibles para Windows, Linux y Mac. Si no tenemos ambos programas instalados, primero descargamos e instalamos R (https://cran.r-project.org/) y después RStudio (https://www.rstudio.com/products/rstudio/). El programa funciona correctamente para las versiones 4.1.0 de R y 1.4.1717 de RStudio, por lo que es probable que funcione en versiones futuras pero no en versiones más antiguas.

Para instalar DCEtool podemos optar por el repositorio oficial de CRAN o por el repositorio de GitHub. Generalmente, es probable que la versión subida a GitHub se encuentre más actualizada, por lo que preferiblemente realizaremos la descarga de aquí. Para ello, en RStudio ejecutamos el siguiente código:

install.packages("devtools")
library(devtools)
install_github("danielpereztr/DCEtool")

Si queremos instalar la versión del repositorio CRAN, podemos hacerlo de la siguiente forma:

install.packages("DCEtool")

Una vez hayamos instalado el programa de uno de los dos repositorios, debemos llamar a la librería y ejecutarlo. Podemos hacer esto de la siguiente forma:

library(DCEtool)
DCEtool()

Una vez se abra la interfaz visual del programa, ya podemos continuar al paso siguiente.

3. Creando un experimento de elección discreta

Al iniciar la aplicación, se mostrará una interfaz visual con una barra de navegación en la parte superior. Cada pestaña está ordenada de forma lógica (salvo por la pestaña instructions) por lo que es importante que el usuario vaya trasladandose a la siguiente pestaña sólo si ha terminado con la anterior.

La primera pestaña, «Parameters», permite la introducción de los datos que darán forma al experimento de elección discreta. Los parámetros deben ser introducidos en el menú de la parte izquierda y los resultados relevantes aparecerán en la derecha.

El primer paso será la selección de atributos y niveles. Una vez seleccionados, debemos introducirlos en las tres casillas del apartado «Attributes and Levels» y pulsar el botón «Add». Como ejemplo, introduciremos la selección de atributos y niveles del experimento de elección discreta en Pérez-Troncoso, D., Epstein, DM., y Castañeda-García, JA. (2021).

Comenzando por el atributo «Personalisation level», introduciremos los datos de la siguiente forma:

Nótese que como en este caso se trata de un atributo con cuatro niveles, en en el último recuadro tendremos que introducir cuatro nombres separados por tres comas. Una vez pulsemos el botón «Add», la tabla en la parte central derecha de la aplicación se actualizará con los valores que acabamos de introducir:

Una vez introduzcamos todos los atributos y niveles, la tabla debe ser igual a la siguiente:

Si se introduce un atributo precio, es conveniente que los niveles sólo contengan el valor numérico para que el programa reconozca los valores después.

Cuando la selección de atributos y niveles se haya completado, podemos pasar a determinar el resto de características de la encuesta. Ahora es el momento de decidir cuantas alternativas por choice set queremos emplear, el número de choice sets que responderá cada encuestado y si queremos usar o no una alternativa nula. Nótese que en un diseño en el que elijamos dos alternativas y decidamos añadir una alternativa nula, tendremos un total de tres alternativas.

Para este ejemplo, usaremos unos parámetros bastante estándares: 2 alternativas por choice set, 12 choice sets por encuestados, y una alternativa nula en cada choice set:

Para confirmar los parámetros que hemos introducido, deberemos pulsar en «Save inputs». Antes de confirmar los inputs cabe mencionar que podemos establecer unos coeficientes previos para adaptar el diseño a las preferencias de los futuros encuestados. Estos coeficientes previos, extraídos de un logit condicional de un experimento anterior, aumentarán la D-eficiencia del diseño, reduciendo la muestra requerida. En la mayoría de ocasiones, no contaremos con esta información previa por lo que podemos dejar la opción «Zero». La opción cero equivale a utilizar un vector de ceros como coeficientes previos. Tras pulsar el botón «Save inputs» nos moveremos a la pestaña «Design matrix».

4. Procesamiento del diseño experimental

Si todo es correcto, una animación circular de color rojo se ejecutará hasta que aparezca una tabla:

La tabla resultado contiene la matriz de diseño del experimento de elección discreta. Llamamos matriz de diseño a una matriz cuyas filas representan a cada alternativa del diseño (nótense sus nombre en la columna de la izquierda) y cuyas columnas representan a los niveles de los atributos presentes en cada alternativa. Ya que la presencia de un nivel en una alternativa está denotada con una variable dummy, el primer nivel de cada atributo está omitido. Esto significa que cuando el resto de niveles del mismo atributo tomen el valor cero (por ejemplo en el atributo Personalisation level en el set1.alt1), el nivel presente será el omitido (en el caso mencionado, el nivel 1 de personalización).

Sin embargo, para conocer cuáles son las alternativas dentro de cada choice set no es necesario descifrarlo, el programa puede hacerlo automáticamente pulsando el botón «Decode the design matrix»

Una vez pulsado el botón, bajo la tabla aparecerán decodificados los 12 choice sets que le hemos indicado al programa que queríamos crear:

5. Generación de una encuesta local

Ahora podemos probar cómo sería la encuesta de cara a nuestros encuestados. Para ello, podemos avanzar hacia la pestaña «Survey wizard» y para elegir las características de que tendrá la encuesta. Primero elegimos el nombre de cada una de las alternativas. Por ejemplo, en este caso, Alternativa 1, Alternativa 2 y Alternativa 3 (los nombres deben ser escritos separados por comas):

A continuación puedes escribir un texto introductorio y un texto final que aparecerán, respectivamente, al comenzar y al terminar el cuestionario. El texto introductorio puede ser escrito en Markdown, por lo que es posible variar el formato del texto de una forma sencilla. Algunas reglas básicas de Markdown pueden encontrarse aquí https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet

Finalmente, podemos decidir si queremos usar la estrategia secuencial de Bliemer y Rose. La estrategia secuencial (https://doi.org/10.1108/9781849507738-006) se basa en mejorar el siguiente diseño a través de las respuestas dadas anteriormente. Para ello, cada vez que una nueva respuesta es registrada (cada vez que un nuevo encuestado finaliza de responder todos los choice sets que le han sido asignados) se estima una regresión logística condicional (con la nueva respuesta registrada y las anteriores) y con los coeficientes se mejora la eficiencia del siguiente diseño. Esto se realiza a través de un procedimiento de optimización llamado algoritmo de Fedorov modificado, que busca, en cada caso, el diseño más eficiente. Esto implicará que la encuesta a la que responderá el encuestado x no será la misma a la que responderá el encuestado x+1.

Si decidimos emplear la estrategia secuencial, la siguiente pestaña nos preguntará a partir de cuántas respuestas queremos empezar a usar la estrategia. Si introducimos un dos, por ejemplo, tras la segunda encuesta completada se recalculará un diseño basado en los coeficientes calculados con las encuestas anteriores. Así, el nuevo diseño aparecerá automáticamente en la siguiente encuesta.

Finalmente, podemos continuar, pulsar en el botón «Create the survey» y pasar a la pestaña «Survey». Lo primero que nos aparecerá es el texto introductorio que hemos escrito con anterioridad. Esta pestaña está pensada para programar una encuesta localmente y pedir a los encuestados que hagan sus elecciones en un mismo equipo. Es por este motivo que, aunque en la mayoría de ocasiones esta pestaña sólo sea usada por los investigadores para comprobar cómo responde su experimento de elección discreta, la encuesta contiene introducción y final para que se pueda contextualizar al encuestado.

Pulsando el botón «OK» aparecerá el primer choice set. Al elegir una de las tres opciones, la encuesta avanzará automáticamente al siguiente choice set, por lo que el encuestado estará forzado a responder a todas los choice sets si quiere continuar.

Una vez se hayan registrado varias respuestas, cuando se muestre el texto final o el texto introductorio, podemos avanzar a la pestaña «Results» para analizar los resultados de la encuesta.

6. Análisis de los resultados

Al acceder a la pestaña «Results», debe aparecer una tabla con los resultados del experimento de elección discreta ya codificados. Como vemos, en la tabla se encuentran presentes todas las variables de los niveles de los atributos, más cuatro variables necesarias para la estimación. Estas son:

  • bin.responses: columna dummy que indica la alternativa escogida por el encuestado.
  • gid: identificador único de cada choice set.
  • alt: número de alternativa.
  • pid: identificador único de cada encuestado.

Una vez esta tabla se presente, podemos estimar una regresión logística condicional automáticamente pulsando en el botón «Estimate a conditional logit». Tras pulsar este botón, bajo la tabla, aparecerá una salida de texto con los resultados del modelo.

Como vemos, la primera tabla donde aparecen los coeficientes, contiene sólo una variable significativa. Esto es normal pues la respuesta ha sido aleatoria, por lo que es común que los coeficientes presentes no tengan sentido. También podemos codificar la variable precio como una variable lineal. Podemos hacer esto dando click en la casilla «Price as linear variable», seleccionamos (de entre las variables que aparezcan en el desplegable) aquellas que hagan referencia al precio, y, en omitted price, añadimos el nivel omitido (en este caso 10). Esto sólo es posible si los niveles del precio han sido añadidos como un valor numérico (sin ninguna clase de símbolo como € o $).

Finalmente, podemos pulsar en «Code the price attribute», que creará una columna con el valor numérico del precio de cada alternativa, y «Conditional logit with linear price», que otorgará el resultado del logit condicional con el atributo precio codificado linealmente.

Por último, en «Estimate a mixed (random parameters) logit» podemos calcular un logit mixto. Debe tenerse en cuenta que si no han sido registradas las suficientes respuestas, el logit mixto no podrá ser estimado y es muy probable que el programa se bloquee.