DISEÑO DE TARJETAS PARA CBC CON R

AdministratorCONJOINT ANALYSIS, ESTADISTICA, MODELOS Y TECNICASLeave a Comment

¿Sabías que John Napier pasó 20 años de su vida desarrollando las tablas de logaritmos? Ese esfuerzo significó un ahorro de tiempo para miles de científicos, quienes se la pasaban gran parte de su vida haciendo cálculos. ¡Dios bendiga a San Napier! habrán dicho. Tal vez los que hacemos investigación hubiésemos tenido que cambiarle el nombre a Addelman1 por San Addelman debido a  los diseños experimentales que nos obsequió para nuestras investigaciones con conjoint analysis o análisis conjunto, pero no pudo ser, porque a diferencia de lo que pasó en la época de Napier, en la cual las reglas de cálculo y luego las calculadoras tardaron cientos de años en llegar, en nuestros tiempos, en cuestión de un par de décadas, ya teníamos varios programas para generar diseños experimentales.

Si un investigador de mercados quiere hacer un estudio utilizando la técnica de conjoint, hay tres cosas absolutamente indispensables que debe entender bien; la primera, obvio, es que necesita conocer qué es conjoint analysis, eso está fácil, basta con leer cualquier artículo en línea o la wikipedia, allí, con mucha probabilidad, desde el primer párrafo uno puede leer algo que dice más o menos así: “El conjoint analysis es una técnica que…bla,bla,bla…”. Como supongo que tú, yo, nosotros y todos ustedes, ya están cansado de ese tipo de artículos, qué tal si mejor vemos este vídeo (utiliza la configuración para la traducción automática en español).

Las dos restantes son mucho más complicadas, pero más interesantes. La segunda exige conocer qué son los diseños experimentales y estímulos o tratamientos o perfiles. Aunque todos estos términos significan lo mismo se utilizan en diferentes contextos: estímulos se utiliza más en psicología, tratamientos en el cultivo de elotes (agronomía) y perfiles en investigación de mercados, por lo que de aquí en adelante diremos perfiles. La tercera es cómo analizar los datos, esto se puede hacer a través de regresión lineal múltiple, regresión logística o multinomial, mejor conocidas como modelos logit, modelos jerárquicos bayesianos o hierarchical bayes models, entre otros menos famosos. Mi frustración se la debo a estos dos últimos temas y tal parece que no soy el único, pues todo nos llevaba a suponer que es difícil hacer conjoint analysis sin la paquetería comercial. Como verás más adelante, no es necesario contar con ella; ambas cosas se pueden hacer con R. En este post vamos a explicar como proceder para hacer un diseño para CBC y en otro haremos lo mismo con su análisis. Si no puedes esperarte hasta el segundo post, te sugiero que leas el artículo de Hideo Aizaki y Kazushi Nishimura quienes ilustran ambos procedimientos en R. Aclaro, hay muchos tipos de conjoint; en cuestión de diseño y análisis, cada cual va con su cada quién, es decir, tienen su forma particular de diseñar estímulos y analizar los resultados. Así que subrayo, en este artículo vamos a hablar únicamente de CBC; presumo que ya viste el video anterior.

perfilBueno, empecemos desde el génesis. Un perfil es una descripción del producto o servicio que se va a evaluar; del cual se quiere saber que atributos determinan su preferencia. En la imagen de la izquierda tenemos 3 perfiles: el perfil de un Mini Cooper de transmisión estándar y de alimentación a base de gasolina; los perfiles de un Beetle y Honda, cada uno de ellos con sus propias características. Eso estuvo muy fácil, ¿verdad? De lo anterior se deduce que para hacer un conjoint se necesita primeramente —como decía mi hijo pequeño— decidir que características o atributos del producto o servicio se van evaluar. En los perfiles anteriores se tomó la decisión de evaluar 3 atributos o factores, como también se les dice en la terminología del conjoint analysis:

  1. Marca del vehículo
  2. Tipo de transmisión
  3. Alimentación de combustible.

El primer razonamiento que deberías de hacer sobre lo anterior, es que para evaluar qué tanto impacta el tipo de transmisión (estándar o automático) a las ventas del Mini, el entrevistado tiene que calificar o evaluar una versión de esta marca con transmisión estándar y otra versión con transmisión automática; si no, ¿cómo vas a determinar cuánta gente prefiere un Mini con uno u otro tipo de transmisión? Lógico ¡¿no es así?! Sin embargo, la cosa se pone aún más interesante cuando también deseas saber qué tanto se afecta la preferencia por el Mini debido al tipo de combustible que usa. Vamos a decir que quieres saber en que situación el consumidor lo escoge más: cuándo es alimentado con gasolina, diesel, o mediante batería eléctrica y gasolina, o sea híbrido; como ya te lo imaginas, el consumidor tiene que evaluar al Mini con estas otras tres variantes. La misma situación se repite para conocer la preferencia por el Beetle y el Honda. Ten en cuenta que no  puedes evaluar parcialmente al Mini (al menos en nuestro tipo de conjoint); es decir, primero con la transmisión estándar y luego sólo con el tipo de combustible que usa, el perfil debe ser completo, o sea, pedirle al entrevistado que evalúe un Mini con transmisión estándar, alimentado con gasolina. En resumen, si quieres saber por cada variante que hay cómo se afecta la preferencia por cada automóvil, necesitas combinar todos las variantes: 3 marcas, 2 tipos de transmisión y 3 tipos de alimentación de combustible. Nota que estamos utilizando la marca del auto como otra variante más. En otras palabras, el auto que el consumidor (encuestado) escoja o prefiera va a depender de la marca, el tipo de transmisión y combustible. Siendo este el caso, ¿cuántos perfiles completos hay cuando hacemos todas las combinaciones posibles? El cálculo es simple: 3 X 2 X 3 = 18; dieciocho combinaciones en total. En concreto, hay 18 diferentes tipos de automóviles, de entre los cuales escoger.

¿Qué crees que pasaría si deseas evaluar otros atributos con más variantes? Tal vez quieres determinar como cambia la preferencia si el auto es convertible y/o si es totalmente eléctrico, en ese caso, los atributos o factores cambian de 3 hasta 5 y las variantes o niveles son ahora 4 más (2 más por ser convertible o no y otras 2 por ser totalmente eléctrico o manual). ¿Te das cuenta que entre más atributos y variantes haya el número de combinaciones va in crescendo? Efectivamente, ahora tienes 3 X 2 X 3 X 2 X 2 = 72; setenta y dos perfiles completos o tipos de automóviles. Mi primera pregunta es, ¿qué empresa armadora de autos se puede dar el lujo de fabricar 72 diferentes tipos de autos? None, isn’t it? Bueno, esto no es una limitante nada más para las armadoras, también lo es para los consumidores que entrevistamos, ¿qué consumidor está lo bastante chiflado como para aguantarte una entrevista donde le vas a preguntar su preferencia por 72 diferentes tipos de autos? ¿Lo ves?, el quid de la cuestión, y por la cual tenemos que usar una computadora para diseñar los perfiles de nuestro estudio, es que si el investigador lo hiciera a mano se pasaría gran parte de su vida combinando las variantes de cada atributo para ir armando perfiles; y así, como con las estampitas que jugábamos de niños, tendría que revisarlos uno a uno para hacer un reconocimiento sobre cuáles ya tiene y cuáles no: “Sí, sí, sí, a ver espérame…no, ese no lo tengo”, jajajajaja. La otra, naturalmente, es que ningún consumidor nos daría una entrevista si le decimos que necesitamos que nos diga su preferencia sobre 72 autos; sin embargo, en la práctica se hacen estudios que podrían llegar a miles de combinaciones.

Para conservar una relación cordial con el consumidor (entrevistado), el investigador decidió que lo más prudente era presentarle sólo una parte del total de los perfiles y así nació —es un decir pues estos diseños existen desde hace mucho— lo que en conjoint se llama diseño factorial fraccionado o incompleto; claro está que si éste se llama incompleto, el que contiene todos los perfiles se llama completo, elemental mi estimado lector. El problema con esta forma de diseñar los perfiles es que, como puedes suponer, algunas o más bien muchas combinaciones (tipos de auto) van a estar ausentes (Esto me recuerda a un jefe que tuve y su discusión con un tortero. Mi jefe le pedía al tortero que le hiciera una torta con jamón, pollo, huevo, chorizo, queso de puerco, pierna, salchicha, etcétera y el tortero no más no quería, argumentando que no tenía de ese tipo de tortas, que únicamente contaba con las que aparecían en el menú. No obstante, se podían divisar todos los ingredientes para preparar esa torta tan especial; fue tal la discusión que mi jefe, queriendo hacer valer su estatus, le gritaba totalmente histérico, que si no se había dado cuenta que estaba hablando con uno de los dueños de las agencias de investigación de mercados más grandes de México, jajajaja. ¡Qué tiempos aquellos!). ¿En qué íbamos? ¡Ah, sí!, el truco es que las combinaciones resultantes del diseño se hagan de tal forma que cada nivel (ya sabes, variante) de un atributo se aparee por lo menos el mismo número de veces con cada uno de los niveles de cualquier otro atributo; con eso nos aseguramos de que un nivel de un atributo no aparezca más veces con un nivel en particular. A eso se le denomina diseño ortogonal (independiente) pues se asegura que un nivel no se relacione con otro de forma ventajosa. Por ejemplo, ¿qué pasa si a ti te gusta mucho el Beetle y este auto aparece más de la cuenta con transmisión automática? Aunque a ti te gusten más los autos estándar, siempre que elijas el Beetle estarás escogiendo también la transmisión automática, es de puro sentido común que estas dos variantes no son independientes: si escoges a uno escoges al otro. Es como el compromiso matrimonial, pides la mano de la novia pero tu sabes que te la vas a llevar completa, ¿me captas?

La principal virtud de estos diseños es que con ellos se pueden estimar los efectos principales o generales, aunque San Addelman dice que no es una condición necesaria, pues basta con que las variantes de un atributo con otro se encuentren apareados en la misma proporción — recuerda que anteriormente dijimos mismo número de veces, no proporción; no es lo mismo 4 manzanas que un cuarto de manzana —. Los efectos principales te permiten determinar el valor que el consumidor le asigna a cada nivel, y por supuesto la importancia de cada atributo o factor; en otras palabras, ¿qué importa más: la marca, el tipo de transmisión, o el combustible?; y dentro de cada factor, qué nivel vale más para el consumidor: ¿cuál es la marca más rentable, el Mini, el Beatle, o el Honda? Sin embargo, derivado de la ausencia de otros perfiles, no es posible saber qué tanto impacta a la preferencia una combinación específica de esas variantes. En otras palabras, si hay una asociación o interacción que tendría un éxito inusitado, digamos el Mini con transmisión automática, no se sabe, lo único que se puede determinar es cuál marca y tipo de transmisión son los más preferidos. Parece que es lo mismo, ¿verdad?, pero no es así. Hay combinaciones mortales, sabes que Leo Messi es un gran jugador, pero no es lo mismo Leo Messi con el Barcelona que Leo Messi con la Selección Argentina, en un equipo es mortífero, en el otro es bueno, pero no letal. En general, la mayoría de los estudios de conjoint se hacen para estimar los efectos principales; por dicha razón es tan llevado y traído el famoso diseño ortogonal de factorial fraccionado. Espero que no te hayas perdido hasta este momento, como su nombre lo índica los diseños se llaman fraccionados porque sólo son una fracción del total de perfiles posibles; en nuestro caso tenemos 18 perfiles y podemos reducirlo hasta la mitad, es decir, 1/2 fracción que equivale a 9 perfiles. Algunos programas como el SPSS te dan por default el número mínimo, otros, como en el caso de R, se tienen que especificar.

Hacer diseños factoriales fraccionados es simple cuando el número de niveles de cada atributo o factor son iguales; esos diseños se conocen como diseños factoriales simétricos, la literatura está llena de ellos. Sin embargo, la cosa se complica cuando el número de niveles es distinto para cualesquiera de los atributos, en este caso se debe hacer un diseño factorial asimétrico. Si a todo eso le agregas que debe ser fraccionado, a nadie le debe de extrañar porque a muchos investigadores de mercado les cuesta trabajo conceptualizar y llevar a cabo un estudio de CBC (conjoint based choice). Ahora, perdóname por hacerte la vida un poco más complicada, tradicionalmente, se presentaba al entrevistado un perfil de un diseño fraccionado y se le pedía que dijera con qué probabilidad compraría ese producto o servicio, el entrevistado debía dar su respuesta en una escala de 0 a 10, donde 0 significaba que definitivamente no lo compraría y 10 que definitivamente sí lo compraría, o en cualquier otro tipo de escala. Tenía que hacer lo mismo con cada uno de los perfiles restantes y los resultados de esas evaluaciones se analizaban con el método de regresión lineal múltiple; ese fue el primer conjoint y por eso se le llama tradicional o de calificación, pero pronto apareció el CBC. La diferencia más importante del conjoint tradicional con el conjoint based choice es que éste no utiliza calificaciones para evaluar, sino que se basa en selecciones discretas, por eso también se le llama conjoint de modelos discretos; al encuestado se le pide que seleccione un perfil de un conjunto de ellos. Toma nota que esta forma de preguntar también es un cambio drástico con el conjoint tradicional, no le pides al entrevistado que evalúe un solo perfil a la vez, lo que haces es combinar varios perfiles y presentarlos al mismo tiempo para que el consumidor te diga cuál de todos ellos prefiere o compraría. ¡A T E N C I Ó N! porque este es el punto fino de la discusión, no ha cambiado nada, se sigue diseñando igual que en el conjoint tradicional, pero ahora hay que combinar los perfiles; sí, los mismos perfiles que siempre se han utilizado, ahora se evalúan en paquete, no uno por uno. Eso, en la práctica, es lo que hacen los programas comerciales (combinar los perfiles), además de darte unas estadísticas de la eficiencia del diseño resultante, pues como puedes comprender hay muchas formas de combinar los estímulos (perfiles), por lo que hay que buscar las que cumplan con principios que comentamos anteriormente: frecuencia y proporcionalidad.

Una disculpa si demoré tanto para explicarte como hacer el mismo truco de arriba en R; al fin tu paciencia será recompensada. Para empezar, tienes que bajar de la red el programa R y instalarlo en tu compu, luego instala el programa AlgDesign, estos procedimientos son muy sencillos, si no sabes cómo, empieza con estos tutoriales de R. Bueno, aquí los pasos que hay que seguir:

      1. Corre el diseño factorial completo con la ayuda del comando gen.factorial().
      2. Modifica este diseño factorial completo en uno fraccionado o incompleto con la ayuda del comando optFederov(); este comando emplea el algoritmo creado por Federov para obtener un diseño optimo fraccionado, de allí el prefijo opt.2
      3. Copia el diseño optimo cuantas veces lo requieras, en este caso tenemos planeado presentar tres autos en cada tarea, por lo que vamos a hacer 3 copias. Date cuenta que a partir de este paso todo lo que sigue lo puedes hacer en Excel y quizá sea hasta más fácil.
      4. Asígnale a cada uno de los nueve perfiles, de cada copia, un número aleatorio.
      5. Ordena al interior cada copia de perfiles con base a la columna de números aleatorios que generaste en el paso anterior.3
      6. Combina los perfiles de los diseños aleatorizados para generar 9 tareas que serán evaluadas por los entrevistados, cada una de ellas, con tres tipos de auto; si te encuentras con que hay dos perfiles iguales en una tarea vuelve a aleatorizar tus diseños y combínalos nuevamente.

Explicación general. El símbolo (>) lo pongo como referencia y guía de cada línea de comando en la consola de R, no es parte de tu programa. El código que te estoy pidiendo que escribas viene en negritas y cursivas para diferenciarlo del texto normal. Después de escribir el código en cada línea tienes que apretar la tecla enter para que se ejecute la función. R es sensible a las mayúsculas y minúsculas por lo que debes respetar la forma en que se escriben las funciones y en todo lo que programes; en R no es lo mismo “Gato” (con mayúscula) que “gato” (con minúscula).

Paso 1.

>library (AlgDesign)

>DFC <- gen.factorial(c(3,2,3), varNames=c(“MARCA”,”TRANSMISION”,”COMBUSTIBLE”), factors = “all”)

>DFC

La función library se utiliza para extraer de tu estante de programas el programa AlgDesign, el cual, obviamente, debes tener cargado.

DFC es un acrónimo que hace referencia a Diseño Factorial Completo. El símbolo (<-) significa igual a, y simplemente está indicando que el resultado de las funciones de la derecha serán guardadas con el nombre de la variable que aparece a la izquierda, en este caso DFC; toma en cuenta que este es un nombre para la variable arbitrario, puedes usar cualquier otro.

La función gen.factorial es la encargada de generar un diseño factorial completo, utilizando para ello la  cadena de números, por eso la letra c que significa concatenate (encadenar o combinar), de 3, 2, y 3 niveles. La instrucción varNames se usa para asignar los nombres a cada factor. Si la omites, el programa utilizará por default X1, X2 y X3; al igual que la función anterior, la letra c significa combinar. La instrucción factors está señalando que se utilizarán todos los factores en el diseño.

Para ver cualquier variable o matriz de datos que hayas creado sólo necesitas escribir el nombre y presionar enter, por eso hemos escrito DFC. Si todo lo hiciste bien, tu consola de R deberá verse como la de imagen de abajo.

diseño factorial completo

Paso 2.

>set.seed (1963)

>DFF <- optFederov(~.,DFC,9)

>DFF

La instrucción set.seed se utiliza para indicarle a la computadora cual será el número de arranque aleatorio que debe usar; este procedimiento es necesario para replicar tus diseños. No importa que número uses, siempre y cuando sea el mismo, ya que de otra forma el resultado será diferente aunque sigas el mismo procedimiento; en este caso yo he puesto la fecha en que nací, 1963. Ahora, estamos creando una nueva variable que hemos nombrado DFF  – de la misma forma que la variable anterior es solo un acrónimo conveniente para crear una variable nueva, llamada Diseño Factorial Fraccionado– en ella se depositará la salida de la función del diseño factorial fraccionado mediante el algoritmo de optFederov. El argumento ~. (un argumento es un valor que se le instruye a la función para que se ejecute) indica que se debe utilizar un modelo lineal, DFC es el diseño factorial completo que se va a usar para fraccionar (recuerda que éste se creó anteriormente, por lo cual está en la memoria de la computadora), y 9 es el número de perfiles que deseamos. Si recuerdas el diseño factorial completo es de 18 perfiles por lo que le estamos instruyendo al programa para que nos de una fracción de la mitad. Si todo salió como se planea, el resultado será algo así (depende de lo que hayas puesto en set.seed).

diseño factorial fraccionado

Detengámonos un momento. Hasta este paso, ya tienes un diseño factorial fraccionado, es decir, una muestra de todos los posibles estímulos (perfiles) que pueden existir; con base al número de factores y niveles que tiene el estudio. Si estuvieras haciendo un conjoint tradicional o clásico no necesitarías nada más y el procedimiento sería muy simple: muestras cada uno de los 9 perfiles (uno por uno) y le pides al entrevistado que responda en una escala del 1 al 5 (puede ser cualquier otro tipo de escala) qué tan dispuesto estaría en comprar el automóvil. Como dijimos, en CBC la cuestión es diferente, por lo que debes de presentar varios tipos de automóvil; el paso 3 en adelante, busca combinar los estímulos de manera aleatoria.

Paso 3.

>PERFIL1 <- DFF$design

>PERFIL1

Ahora estamos creando 1 copia del diseño factorial fraccionado, con el nombre de PERFIL1 que va a ser igual al objeto $design, del diseño DFF creado anteriormente. En R, el símbolo de moneda ($) se utiliza cuando quieres manipular un objeto en particular, en nuestro caso deseamos manejar el diseño o el objeto $design. Si este es otro caso de éxito, el resultado será muy parecido a este.

copias de perfiles

Haz lo mismo otras 2 veces pero ahora utiliza, PERFIL2 y PERFIL3. No te pido que veas nuevamente como quedaron tus copias pues confiamos en que serán iguales que la anterior.

>PERFIL2 <- DFF$design

>PERFIL3 <- DFF$design

Paso 4.

>PERFIL1 <- transform(PERFIL1, r1=runif(9))

>PERFIL1

La función general transform es utilizada para transformar la copia de matriz de perfiles 1, PERFIL1, agregándole una columna r1 con un número aleatorio uniforme, es decir, que va de 0 a 1 por cada renglón o perfil (9, en total) . El resultado quedaría así.

perfil aleatorio

Haz lo mismo otras 2 veces, pero ahora utiliza PERFIL2 y PERFIL3, y en lugar de r1 usa, r2 y r3, respectivamente. Ya sabes que puedes ver el resultado tecleando el nombre de la matriz transformada: PERFIL2 y PERFIL3.

Paso 5

>PER1_ORD <- PERFIL1[oder(PERFIL1$r1),]

>PER1_ORD

Aquí, estamos creando otra matriz (PER1_ORD) con los perfiles ordenados, que es lo que hace el argumento order y se hace con base al objeto $r1 del Data Frame o matriz PERFIL1, este es la salida en R, observa que los perfiles vienen ordenados ahora de menos a más por la columna r1.

perfiles ordenados

hagamos lo mismo con el PERFIL2.

>PER2_ORD <- PERFIL2[oder(PERFIL2$r2),]

>PER2_ORD

perfil2 odenado

Y también con el PERFIL3.

>PER3_ORD <- PERFIL3[oder(PERFIL3$r3),]

>PER3_ORD

perfil3 ordenado

Paso 6.

Pon los archivos resultantes uno al lado del otro, como en el archivo de Excel de abajo. Los perfiles que están sobre la misma línea van juntos en una tarjeta; por ejemplo, el perfil 15, 5 y 12.

perfiles en R

Suponiendo que tus niveles por cada atributo fueran:

  • MARCA: 1 = Mini, 2 = Beetle y 3 = Honda
  • TRANSMISIÓN: 1 = Estándar y 2 = Automático
  • COMBUSTIBLE: 1 = Gasolina, 2 = Diesel y 3 = Híbrido

Las tarjeta o tarea resultante de la combinación del perfil 15, 5 y 12 quedaría así:

tarea cbc

En el caso de las combinaciones del primer renglón, los perfiles 1 y 1 se traslapan por lo cual se aconseja hacer nuevamente el procedimiento aleatorio para evitarlo.

Si te gustó este post compártelo, hasta la próxima.

1. Addelman, Sidney (1962) . “Orthogonal Main Effects Plans for Asymmetrical Factorial Experiments”, Technometrics 4, 21-46.

2. En un comentario, en un artículo que publicamos sobre MaxDiff, alguien decía que era más fácil hacer los estímulos en SPSS con el subcomando orthoplans, en general, tiene razón, al menos en este caso, pues este programa te da un diseño mínimo de los perfiles requeridos, al final lo único que tienes que hacer es combinarlos para presentarlos en el formato de un CBC.

3. Otras estrategias de diseño sencillas como la nombrada “Shift” son presentadas por Keith Chrzan y Bryan Orme en la ponencia “OVERVIEW AND COMPARISON OF DESIGN STRATEGIES FOR CHOICE BASED CONJOINT ANALYSIS” en la Sawtooth Software Conference del 2000

¡Compártelo a tus amigos(as)!...Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someone
AdministratorDISEÑO DE TARJETAS PARA CBC CON R

Leave a Reply

Your email address will not be published. Required fields are marked *