Introducción
Hacía tiempo que no escuchaba hablar de él, pero ha vuelto a mi. TURF es un acrónimo anglosajón para Total Unduplicated Reach and Frequency. Este análisis es ampliamente utilizado en el mundo del marketing desde hace años, ya que nos da pistas y respuestas a dos situaciones muy habituales en el análisis de cartera de productos, aunque su uso se puede extender a otros ámbitos muy diferentes:
Por un lado, cuando una compañía dispone de una cartera de productos que quiere extender, pero teniendo las limitaciones de producción o presupuestarias que le impiden desarrollar sólo algunos de ellos, TURF les ayudará a elegir cuáles son los más apropiados.
otro ámbito de trabajo podría ser en qué medios de comunicación debe enfocarse una empresa al distribuir contenido; ¿en qué redes publicitarias y medios debería centrarse?
otro ámbito podría ser el político; sabiendo que en un discurso de un líder político solo nos podemos centrar en 4 o 5 temas fundamentales de los 10 que podemos abordar, ¿con qué temas alcanzaríamos más a nuestro target?
Este documento intenta exponer un caso basado en una base de datos obtenida del sitio de displayR y cubre todo, desde la preparación de datos hasta la visualización e informes de datos.
Los paquetes que vamos a utilizar son básicos para cualquier analista de datos trabajando con R:
- readxl (carga de excel)
- expss (tablas)
- ca (análisis de correspondencias)
- psych (análisis multivariante clásico)
- ggplot2 (gráficos adaptables)
- turfR (análisis TURF)
Descripción de la base de datos
Un estudio TURF requiere un conjunto de datos que consiste en:
Datos de al menos 100 personas, e idealmente muchas más
Para cada persona, las mediciones del atractivo de tres o más alternativas diferentes, que generalmente son productos o contenido. Estas mediciones pueden ser de escalas de calificación, datos históricos de compra, MaxDiff o utilidades conjuntas o predicciones de preferencias.
En nuestro caso, la base de datos enlace es una hoja de cálculo EXCEL con 712 registros (713 filas) y dispone de 15 columnas (primera fila), donde la primera columna es el id (identificador) del individuo la segunda el peso del individuo en la muestra (representatividad de la población) y el resto son las diferentes alternativas de producto en la cartera de producto de una empresa fabricante de goma de mascar, las 11 siguientes son las diferentes alternativas testadas en un hall test y por último edad y género del individuo. En nuestro caso el peso es en todos los casos igual a 1, de forma que ningún individuo pondera más que otro. No ha existido equilibraje de la muestra.
Un fabricante de chicles estaba vendiendo dos sabores de chicle, Classic y Cola, y decide extender la gama a cuatro sabores. Se realizó una encuesta a 712 padres, donde los padres les preguntaron a sus hijos cuál de los 11 sabores les gustaba. Los porcentajes que gustan de cada uno de los sabores se muestran a la derecha. Esto se conoce como alcance total no duplicado, que es un término de la planificación de medios, donde el enfoque se centraba en comprender los medios de comunicación (por ejemplo, qué combinación de cuatro revistas llegaría al mayor número de personas). Por lo general, se llama simplemente “alcance” (reach) para abreviar.
Las diferentes alternativas son:
- classic
- strong
- grape
- sour
- orange
- strawberry
- cola
- apple
- chocolate
- peach
- watermelon
La preparación de datos consiste en convertir cada medida a una variable binaria, donde un 1 indica que a la persona le gusta lo que se está midiendo, un 0 indica lo contrario. Las columnas de las alternativas podrás por tanto ver que son binarias. Aquí te mostramos las 5 primeras observaciones de nuestra tabla de datos.
suppressPackageStartupMessages(library(readxl))
suppressPackageStartupMessages(library(turfR))
suppressPackageStartupMessages(library(expss))
suppressPackageStartupMessages(library(ca))
suppressPackageStartupMessages(library(psych))
suppressPackageStartupMessages(library(ggplot2))
suppressMessages(data <- read_excel("bubble_gum_flavors.xlsx"))
colnames(data)<- c('id','weight','classic','strong','grape','sour','orange','strawberry','cola','apple','chocolate','peach','watermelon','age','gender')
head(as.data.frame(data),5)
id weight classic strong grape sour orange strawberry cola apple chocolate peach watermelon age gender
1 1 1 1 0 1 1 1 0 1 0 0 0 0 13 or more Female
2 2 1 1 1 0 1 1 0 0 1 0 0 0 13 or more Female
3 3 1 1 1 1 1 0 0 1 0 0 0 0 13 or more Female
4 4 1 0 0 0 1 1 0 0 1 1 0 0 13 or more Female
5 5 1 1 1 0 0 1 1 0 0 1 1 1 Under 8 Female
Análisis
Análisis TURF (total unduplicated reach frequency)
Los datos pueden ser medidos de diferentes formas (que luego se binarizan).
Escalas de calificación como por ejemplo, la intención de compra, se usan comúnmente en los estudios TURF. Para usar estos datos, primero es necesario convertir los datos en formato binario. Por ejemplo, asignar un 1 a todos los que han dicho “Definitivamente comprará” y “Probablemente comprará” y un 0 a todos los demás.
Datos MaxDiff que también se pueden usar en TURF, pero es necesario convertirlos primero a un formato binario. Hay varias formas de hacerlo:
Alternativas mejor clasificadas. A las alternativas mejor clasificadas para cada observación se les asigna un valor de 1 y las demás un valor de 0.
Selección basada en el umbral. Se especifica algún umbral (por ejemplo, servicios públicos por encima del promedio del encuestado), y las alternativas con un servicio público por encima de este valor tienen asignado un valor de 1 y otras un valor de 0.
Las reglas basadas en probabilidad, como las alternativas con una probabilidad superior al 10% tienen un valor de 1. Este último enfoque no es aconsejable, ya que los factores de escala significan que el factor determinante clave de las probabilidades es la cantidad de ruido en sus datos, por lo que si Si utiliza un enfoque como éste, terminará sesgando el MaxDiff hacia las personas que fueron indecisas e inconsistentes en su MaxDiff.
Los datos de conjoint analysis también se pueden usar de la misma manera que con MaxDiff, utilizando niveles de un atributo o productos simulados.
En nuestro caso vamos a realizar un análisis TURF para portfolio de productos que tenga de 4 alternativas. De este modo, veremos que conceptos de resultado se manejan en un TURF. Solo mostraremos las cinco alternativas mejores en base a los resultados.
data <- as.data.frame(data[,1:13])
suppressMessages(turfprods <- turf(data, 11, 4))
4 of 11: 0.4012928 sec
total time elapsed: 0.403029 sec
turf <- turfprods[["turf"]][[1]]
colnames(turf)<- c('combo','rchX', 'frqX','classic','strong','grape','sour','orange','strawberry','cola','apple','chocolate','peach','watermelon')
La forma en que funciona un estudio TURF básico es que examina el alcance de todas las carteras (combos = combinaciones) posibles de los cuatro sabores (alternativas) y calcula el alcance de cada uno de ellos. Los resultados se muestran a la derecha. Cada combinación está numerada para su identificación, y la tabla se muestra ordenada por el alcance (reach).
Cartera de 4 sabores
turf
combo rchX frqX classic strong grape sour orange strawberry cola apple chocolate peach watermelon
1 38 0.9508427 2.0828652 1 0 1 1 0 1 0 0 0 0 0
2 71 0.9438202 1.8567416 1 0 0 1 0 1 1 0 0 0 0
3 50 0.9410112 2.0252809 1 0 1 0 0 1 1 0 0 0 0
4 10 0.9396067 1.8988764 1 1 0 1 0 1 0 0 0 0 0
5 44 0.9382022 2.0491573 1 0 1 0 1 1 0 0 0 0 0
6 46 0.9367978 1.9733146 1 0 1 0 1 0 0 1 0 0 0
7 47 0.9367978 1.9255618 1 0 1 0 1 0 0 0 1 0 0
8 86 0.9367978 1.8230337 1 0 0 0 1 1 1 0 0 0 0
9 45 0.9353933 2.0337079 1 0 1 0 1 0 1 0 0 0 0
10 51 0.9353933 1.9648876 1 0 1 0 0 1 0 1 0 0 0
11 40 0.9339888 2.0070225 1 0 1 1 0 0 0 1 0 0 0
12 41 0.9339888 1.9592697 1 0 1 1 0 0 0 0 1 0 0
13 52 0.9339888 1.9171348 1 0 1 0 0 1 0 0 1 0 0
14 3 0.9311798 2.0674157 1 1 1 0 0 1 0 0 0 0 0
15 122 0.9297753 1.8412921 0 1 1 1 0 1 0 0 0 0 0
16 72 0.9297753 1.7963483 1 0 0 1 0 1 0 1 0 0 0
17 73 0.9297753 1.7485955 1 0 0 1 0 1 0 0 1 0 0
18 48 0.9269663 1.8244382 1 0 1 0 1 0 0 0 0 1 0
19 37 0.9255618 2.0912921 1 0 1 1 1 0 0 0 0 0 0
20 42 0.9241573 1.8581461 1 0 1 1 0 0 0 0 0 1 0
21 74 0.9241573 1.6474719 1 0 0 1 0 1 0 0 0 1 0
22 2 0.9227528 2.0758427 1 1 1 0 1 0 0 0 0 0 0
23 39 0.9227528 2.0674157 1 0 1 1 0 0 1 0 0 0 0
24 16 0.9227528 1.8651685 1 1 0 0 1 1 0 0 0 0 0
25 23 0.9227528 1.7808989 1 1 0 0 0 1 0 1 0 0 0
26 101 0.9227528 1.7387640 1 0 0 0 0 1 1 1 0 0 0
27 65 0.9213483 1.8806180 1 0 0 1 1 1 0 0 0 0 0
28 211 0.9213483 1.7991573 0 0 1 1 0 1 1 0 0 0 0
29 102 0.9213483 1.6910112 1 0 0 0 0 1 1 0 1 0 0
30 49 0.9199438 1.8216292 1 0 1 0 1 0 0 0 0 0 1
31 88 0.9199438 1.7148876 1 0 0 0 1 1 0 0 1 0 0
32 1 0.9185393 2.1095506 1 1 1 1 0 0 0 0 0 0 0
33 43 0.9185393 1.8553371 1 0 1 1 0 0 0 0 0 0 1
34 53 0.9185393 1.8160112 1 0 1 0 0 1 0 0 0 1 0
35 59 0.9171348 1.8412921 1 0 1 0 0 0 0 1 1 0 0
36 87 0.9171348 1.7626404 1 0 0 0 1 1 0 1 0 0 0
37 91 0.9171348 1.7471910 1 0 0 0 1 0 1 1 0 0 0
38 75 0.9171348 1.6446629 1 0 0 1 0 1 0 0 0 0 1
39 54 0.9157303 1.8132022 1 0 1 0 0 1 0 0 0 0 1
40 128 0.9143258 1.8075843 0 1 1 0 1 1 0 0 0 0 0
41 24 0.9143258 1.7331461 1 1 0 0 0 1 0 0 1 0 0
42 5 0.9129213 1.9915730 1 1 1 0 0 0 0 1 0 0 0
43 55 0.9129213 1.9494382 1 0 1 0 0 0 1 1 0 0 0
44 92 0.9129213 1.6994382 1 0 0 0 1 0 1 0 1 0 0
45 226 0.9115169 1.7654494 0 0 1 0 1 1 1 0 0 0 0
46 22 0.9101124 1.8412921 1 1 0 0 0 1 1 0 0 0 0
47 134 0.9101124 1.7837079 0 1 1 0 0 1 1 0 0 0 0
48 135 0.9101124 1.7233146 0 1 1 0 0 1 0 1 0 0 0
49 131 0.9101124 1.6839888 0 1 1 0 1 0 0 0 1 0 0
50 105 0.9087079 1.6306180 1 0 0 0 0 1 0 1 1 0 0
51 18 0.9073034 1.7893258 1 1 0 0 1 0 0 1 0 0 0
52 95 0.9073034 1.6390449 1 0 0 0 1 0 0 1 1 0 0
53 93 0.9073034 1.5983146 1 0 0 0 1 0 1 0 0 1 0
54 76 0.9058989 1.7808989 1 0 0 1 0 0 1 1 0 0 0
55 80 0.9058989 1.6727528 1 0 0 1 0 0 0 1 1 0 0
56 66 0.9044944 1.8651685 1 0 0 1 1 0 1 0 0 0 0
57 19 0.9044944 1.7415730 1 1 0 0 1 0 0 0 1 0 0
58 60 0.9044944 1.7401685 1 0 1 0 0 0 0 1 0 1 0
59 212 0.9044944 1.7387640 0 0 1 1 0 1 0 1 0 0 0
60 130 0.9044944 1.7317416 0 1 1 0 1 0 0 1 0 0 0
61 89 0.9044944 1.6137640 1 0 0 0 1 1 0 0 0 1 0
62 56 0.9030899 1.9016854 1 0 1 0 0 0 1 0 1 0 0
63 68 0.9030899 1.7570225 1 0 0 1 1 0 0 0 1 0 0
64 77 0.9030899 1.7331461 1 0 0 1 0 0 1 0 1 0 0
65 213 0.9030899 1.6910112 0 0 1 1 0 1 0 0 1 0 0
66 12 0.9016854 1.8230337 1 1 0 1 0 0 0 1 0 0 0
67 205 0.9016854 1.8230337 0 0 1 1 1 1 0 0 0 0 0
68 13 0.9016854 1.7752809 1 1 0 1 0 0 0 0 1 0 0
69 62 0.9016854 1.6924157 1 0 1 0 0 0 0 0 1 1 0
70 136 0.9016854 1.6755618 0 1 1 0 0 1 0 0 1 0 0
71 94 0.9016854 1.5955056 1 0 0 0 1 0 1 0 0 0 1
72 98 0.9016854 1.4901685 1 0 0 0 1 0 0 0 1 1 0
73 6 0.9002809 1.9438202 1 1 1 0 0 0 0 0 1 0 0
74 61 0.9002809 1.7373596 1 0 1 0 0 0 0 1 0 0 1
75 63 0.9002809 1.6896067 1 0 1 0 0 0 0 0 1 0 1
76 232 0.9002809 1.6418539 0 0 1 0 1 0 1 0 1 0 0
77 90 0.9002809 1.6109551 1 0 0 0 1 1 0 0 0 0 1
78 104 0.9002809 1.5870787 1 0 0 0 0 1 1 0 0 0 1
79 125 0.8988764 1.7176966 0 1 1 1 0 0 0 0 1 0 0
80 103 0.8988764 1.5898876 1 0 0 0 0 1 1 0 0 1 0
81 83 0.8974719 1.5238764 1 0 0 1 0 0 0 0 1 1 0
82 121 0.8960674 1.8497191 0 1 1 1 1 0 0 0 0 0 0
83 67 0.8960674 1.8047753 1 0 0 1 1 0 0 1 0 0 0
84 129 0.8946629 1.7921348 0 1 1 0 1 0 1 0 0 0 0
85 124 0.8946629 1.7654494 0 1 1 1 0 0 0 1 0 0 0
86 241 0.8946629 1.6811798 0 0 1 0 0 1 1 1 0 0 0
87 69 0.8946629 1.6558989 1 0 0 1 1 0 0 0 0 1 0
88 78 0.8946629 1.6320225 1 0 0 1 0 0 1 0 0 1 0
89 99 0.8946629 1.4873596 1 0 0 0 1 0 0 0 1 0 1
90 17 0.8932584 1.8497191 1 1 0 0 1 0 1 0 0 0 0
91 208 0.8932584 1.6994382 0 0 1 1 1 0 0 0 1 0 0
92 206 0.8918539 1.8075843 0 0 1 1 1 0 1 0 0 0 0
93 57 0.8918539 1.8005618 1 0 1 0 0 0 1 0 0 1 0
94 58 0.8918539 1.7977528 1 0 1 0 0 0 1 0 0 0 1
95 231 0.8918539 1.6896067 0 0 1 0 1 0 1 1 0 0 0
96 20 0.8918539 1.6404494 1 1 0 0 1 0 0 0 0 1 0
97 26 0.8918539 1.6292135 1 1 0 0 0 1 0 0 0 0 1
98 82 0.8918539 1.5688202 1 0 0 1 0 0 0 1 0 0 1
99 9 0.8904494 1.9073034 1 1 0 1 1 0 0 0 0 0 0
100 31 0.8904494 1.6573034 1 1 0 0 0 0 0 1 1 0 0
101 25 0.8904494 1.6320225 1 1 0 0 0 1 0 0 0 1 0
102 235 0.8904494 1.5814607 0 0 1 0 1 0 0 1 1 0 0
103 106 0.8904494 1.5294944 1 0 0 0 0 1 0 1 0 1 0
104 109 0.8904494 1.4789326 1 0 0 0 0 1 0 0 1 0 1
105 227 0.8890449 1.7050562 0 0 1 0 1 1 0 1 0 0 0
106 228 0.8890449 1.6573034 0 0 1 0 1 1 0 0 1 0 0
107 79 0.8890449 1.6292135 1 0 0 1 0 0 1 0 0 0 1
108 220 0.8890449 1.6151685 0 0 1 1 0 0 0 1 1 0 0
109 214 0.8890449 1.5898876 0 0 1 1 0 1 0 0 0 1 0
110 81 0.8890449 1.5716292 1 0 0 1 0 0 0 1 0 1 0
111 96 0.8890449 1.5379213 1 0 0 0 1 0 0 1 0 1 0
112 97 0.8890449 1.5351124 1 0 0 0 1 0 0 1 0 0 1
113 107 0.8890449 1.5266854 1 0 0 0 0 1 0 1 0 0 1
114 108 0.8890449 1.4817416 1 0 0 0 0 1 0 0 1 1 0
115 14 0.8876404 1.6741573 1 1 0 1 0 0 0 0 0 1 0
116 21 0.8876404 1.6376404 1 1 0 0 1 0 0 0 0 0 1
117 111 0.8876404 1.6151685 1 0 0 0 0 0 1 1 1 0 0
118 215 0.8876404 1.5870787 0 0 1 1 0 1 0 0 0 0 1
119 7 0.8862360 1.8426966 1 1 1 0 0 0 0 0 0 1 0
120 217 0.8862360 1.6755618 0 0 1 1 0 0 1 0 1 0 0
121 242 0.8862360 1.6334270 0 0 1 0 0 1 1 0 1 0 0
122 132 0.8862360 1.5828652 0 1 1 0 1 0 0 0 0 1 0
123 138 0.8862360 1.5716292 0 1 1 0 0 1 0 0 0 0 1
124 84 0.8862360 1.5210674 1 0 0 1 0 0 0 0 1 0 1
125 207 0.8848315 1.7471910 0 0 1 1 1 0 0 1 0 0 0
126 8 0.8834270 1.8398876 1 1 1 0 0 0 0 0 0 0 1
127 70 0.8834270 1.6530899 1 0 0 1 1 0 0 0 0 0 1
128 155 0.8834270 1.6151685 0 1 0 1 0 1 1 0 0 0 0
129 216 0.8820225 1.7233146 0 0 1 1 0 0 1 1 0 0 0
130 15 0.8820225 1.6713483 1 1 0 1 0 0 0 0 0 0 1
131 64 0.8820225 1.5884831 1 0 1 0 0 0 0 0 0 1 1
132 133 0.8820225 1.5800562 0 1 1 0 1 0 0 0 0 0 1
133 137 0.8820225 1.5744382 0 1 1 0 0 1 0 0 0 1 0
134 233 0.8792135 1.5407303 0 0 1 0 1 0 1 0 0 1 0
135 85 0.8792135 1.4199438 1 0 0 1 0 0 0 0 0 1 1
136 234 0.8778090 1.5379213 0 0 1 0 1 0 1 0 0 0 1
137 11 0.8764045 1.8834270 1 1 0 1 0 0 1 0 0 0 0
138 127 0.8764045 1.6137640 0 1 1 1 0 0 0 0 0 0 1
139 143 0.8764045 1.5997191 0 1 1 0 0 0 0 1 1 0 0
140 100 0.8764045 1.3862360 1 0 0 0 1 0 0 0 0 1 1
141 123 0.8750000 1.8258427 0 1 1 1 0 0 1 0 0 0 0
142 126 0.8735955 1.6165730 0 1 1 1 0 0 0 0 0 1 0
143 244 0.8735955 1.5294944 0 0 1 0 0 1 1 0 0 0 1
144 239 0.8735955 1.4297753 0 0 1 0 1 0 0 0 1 0 1
145 4 0.8721910 2.0519663 1 1 1 0 0 0 1 0 0 0 0
146 238 0.8721910 1.4325843 0 0 1 0 1 0 0 0 1 1 0
147 209 0.8707865 1.5983146 0 0 1 1 1 0 0 0 0 1 0
148 27 0.8693820 1.7654494 1 1 0 0 0 0 1 1 0 0 0
149 229 0.8693820 1.5561798 0 0 1 0 1 1 0 0 0 1 0
150 33 0.8693820 1.5533708 1 1 0 0 0 0 0 1 0 0 1
151 113 0.8693820 1.5112360 1 0 0 0 0 0 1 1 0 0 1
152 245 0.8679775 1.5730337 0 0 1 0 0 1 0 1 1 0 0
153 219 0.8679775 1.5716292 0 0 1 1 0 0 1 0 0 0 1
154 230 0.8679775 1.5533708 0 0 1 0 1 1 0 0 0 0 1
155 112 0.8679775 1.5140449 1 0 0 0 0 0 1 1 0 1 0
156 114 0.8679775 1.4662921 1 0 0 0 0 0 1 0 1 1 0
157 224 0.8679775 1.4634831 0 0 1 1 0 0 0 0 1 0 1
158 243 0.8665730 1.5323034 0 0 1 0 0 1 1 0 0 1 0
159 222 0.8665730 1.5112360 0 0 1 1 0 0 0 1 0 0 1
160 117 0.8665730 1.4058989 1 0 0 0 0 0 0 1 1 1 0
161 223 0.8651685 1.4662921 0 0 1 1 0 0 0 0 1 1 0
162 210 0.8637640 1.5955056 0 0 1 1 1 0 0 0 0 0 1
163 218 0.8637640 1.5744382 0 0 1 1 0 0 1 0 0 1 0
164 32 0.8637640 1.5561798 1 1 0 0 0 0 0 1 0 1 0
165 156 0.8637640 1.5547753 0 1 0 1 0 1 0 1 0 0 0
166 118 0.8637640 1.4030899 1 0 0 0 0 0 0 1 1 0 1
167 34 0.8623596 1.5084270 1 1 0 0 0 0 0 0 1 1 0
168 237 0.8623596 1.4775281 0 0 1 0 1 0 0 1 0 0 1
169 170 0.8609551 1.5814607 0 1 0 0 1 1 1 0 0 0 0
170 35 0.8609551 1.5056180 1 1 0 0 0 0 0 0 1 0 1
171 115 0.8609551 1.4634831 1 0 0 0 0 0 1 0 1 0 1
172 110 0.8609551 1.3778090 1 0 0 0 0 1 0 0 0 1 1
173 251 0.8595506 1.5575843 0 0 1 0 0 0 1 1 1 0 0
174 236 0.8595506 1.4803371 0 0 1 0 1 0 0 1 0 1 0
175 221 0.8581461 1.5140449 0 0 1 1 0 0 0 1 0 1 0
176 28 0.8567416 1.7176966 1 1 0 0 0 0 1 0 1 0 0
177 157 0.8567416 1.5070225 0 1 0 1 0 1 0 0 1 0 0
178 149 0.8553371 1.6390449 0 1 0 1 1 1 0 0 0 0 0
179 139 0.8539326 1.7078652 0 1 1 0 0 0 1 1 0 0 0
180 147 0.8539326 1.4480337 0 1 1 0 0 0 0 0 1 0 1
181 140 0.8525281 1.6601124 0 1 1 0 0 0 1 0 1 0 0
182 145 0.8511236 1.4957865 0 1 1 0 0 0 0 1 0 0 1
183 246 0.8497191 1.4719101 0 0 1 0 0 1 0 1 0 1 0
184 247 0.8483146 1.4691011 0 0 1 0 0 1 0 1 0 0 1
185 146 0.8469101 1.4508427 0 1 1 0 0 0 0 0 1 1 0
186 185 0.8455056 1.4971910 0 1 0 0 0 1 1 1 0 0 0
187 249 0.8441011 1.4213483 0 0 1 0 0 1 0 0 1 0 1
188 144 0.8426966 1.4985955 0 1 1 0 0 0 0 1 0 1 0
189 186 0.8426966 1.4494382 0 1 0 0 0 1 1 0 1 0 0
190 225 0.8426966 1.3623596 0 0 1 1 0 0 0 0 0 1 1
191 159 0.8412921 1.4030899 0 1 0 1 0 1 0 0 0 0 1
192 116 0.8412921 1.3623596 1 0 0 0 0 0 1 0 0 1 1
193 240 0.8412921 1.3286517 0 0 1 0 1 0 0 0 0 1 1
194 276 0.8398876 1.5126404 0 0 0 1 0 1 1 1 0 0 0
195 158 0.8398876 1.4058989 0 1 0 1 0 1 0 0 0 1 0
196 119 0.8398876 1.3019663 1 0 0 0 0 0 0 1 0 1 1
197 29 0.8384831 1.6165730 1 1 0 0 0 0 1 0 0 1 0
198 171 0.8384831 1.5210674 0 1 0 0 1 1 0 1 0 0 0
199 175 0.8384831 1.5056180 0 1 0 0 1 0 1 1 0 0 0
200 30 0.8370787 1.6137640 1 1 0 0 0 0 1 0 0 0 1
201 248 0.8370787 1.4241573 0 0 1 0 0 1 0 0 1 1 0
202 255 0.8356742 1.4058989 0 0 1 0 0 0 1 0 1 0 1
203 120 0.8356742 1.2542135 1 0 0 0 0 0 0 0 1 1 1
204 142 0.8328652 1.5561798 0 1 1 0 0 0 1 0 0 0 1
205 176 0.8328652 1.4578652 0 1 0 0 1 0 1 0 1 0 0
206 253 0.8328652 1.4536517 0 0 1 0 0 0 1 1 0 0 1
207 36 0.8328652 1.4044944 1 1 0 0 0 0 0 0 0 1 1
208 152 0.8314607 1.5154494 0 1 0 1 1 0 0 0 1 0 0
209 172 0.8300562 1.4733146 0 1 0 0 1 1 0 0 1 0 0
210 179 0.8300562 1.3974719 0 1 0 0 1 0 0 1 1 0 0
211 261 0.8272472 1.5969101 0 0 0 1 1 1 1 0 0 0 0
212 141 0.8272472 1.5589888 0 1 1 0 0 0 1 0 0 1 0
213 277 0.8272472 1.4648876 0 0 0 1 0 1 1 0 1 0 0
214 252 0.8272472 1.4564607 0 0 1 0 0 0 1 1 0 1 0
215 254 0.8272472 1.4087079 0 0 1 0 0 0 1 0 1 1 0
216 258 0.8272472 1.3455056 0 0 1 0 0 0 0 1 1 0 1
217 150 0.8258427 1.6235955 0 1 0 1 1 0 1 0 0 0 0
218 164 0.8258427 1.4311798 0 1 0 1 0 0 0 1 1 0 0
219 151 0.8244382 1.5632022 0 1 0 1 1 0 0 1 0 0 0
220 257 0.8230337 1.3483146 0 0 1 0 0 0 0 1 1 1 0
221 160 0.8216292 1.5393258 0 1 0 1 0 0 1 1 0 0 0
222 189 0.8216292 1.3890449 0 1 0 0 0 1 0 1 1 0 0
223 161 0.8202247 1.4915730 0 1 0 1 0 0 1 0 1 0 0
224 148 0.8202247 1.3469101 0 1 1 0 0 0 0 0 0 1 1
225 296 0.8117978 1.4789326 0 0 0 0 1 1 1 1 0 0 0
226 188 0.8117978 1.3455056 0 1 0 0 0 1 1 0 0 0 1
227 250 0.8117978 1.3202247 0 0 1 0 0 1 0 0 0 1 1
228 266 0.8075843 1.5210674 0 0 0 1 1 0 1 1 0 0 0
229 297 0.8075843 1.4311798 0 0 0 0 1 1 1 0 1 0 0
230 306 0.8075843 1.3553371 0 0 0 0 1 0 1 1 1 0 0
231 278 0.8061798 1.3637640 0 0 0 1 0 1 1 0 0 1 0
232 177 0.8061798 1.3567416 0 1 0 0 1 0 1 0 0 1 0
233 267 0.8047753 1.4733146 0 0 0 1 1 0 1 0 1 0 0
234 279 0.8047753 1.3609551 0 0 0 1 0 1 1 0 0 0 1
235 178 0.8047753 1.3539326 0 1 0 0 1 0 1 0 0 0 1
236 256 0.8033708 1.3047753 0 0 1 0 0 0 1 0 0 1 1
237 286 0.8019663 1.3890449 0 0 0 1 0 0 1 1 1 0 0
238 173 0.8019663 1.3721910 0 1 0 0 1 1 0 0 0 1 0
239 174 0.8019663 1.3693820 0 1 0 0 1 1 0 0 0 0 1
240 153 0.8005618 1.4143258 0 1 0 1 1 0 0 0 0 1 0
241 187 0.8005618 1.3483146 0 1 0 0 0 1 1 0 0 1 0
242 154 0.7991573 1.4115169 0 1 0 1 1 0 0 0 0 0 1
243 166 0.7977528 1.3272472 0 1 0 1 0 0 0 1 0 0 1
244 163 0.7963483 1.3876404 0 1 0 1 0 0 1 0 0 0 1
245 181 0.7963483 1.2935393 0 1 0 0 1 0 0 1 0 0 1
246 191 0.7963483 1.2851124 0 1 0 0 0 1 0 1 0 0 1
247 182 0.7963483 1.2485955 0 1 0 0 1 0 0 0 1 1 0
248 183 0.7963483 1.2457865 0 1 0 0 1 0 0 0 1 0 1
249 162 0.7949438 1.3904494 0 1 0 1 0 0 1 0 0 1 0
250 167 0.7949438 1.2823034 0 1 0 1 0 0 0 0 1 1 0
251 168 0.7949438 1.2794944 0 1 0 1 0 0 0 0 1 0 1
252 195 0.7935393 1.3735955 0 1 0 0 0 0 1 1 1 0 0
253 316 0.7907303 1.3469101 0 0 0 0 0 1 1 1 1 0 0
254 259 0.7907303 1.2443820 0 0 1 0 0 0 0 1 0 1 1
255 180 0.7879213 1.2963483 0 1 0 0 1 0 0 1 0 1 0
256 190 0.7879213 1.2879213 0 1 0 0 0 1 0 1 0 1 0
257 260 0.7879213 1.1966292 0 0 1 0 0 0 0 0 1 1 1
258 193 0.7851124 1.2373596 0 1 0 0 0 1 0 0 1 0 1
259 165 0.7823034 1.3300562 0 1 0 1 0 0 0 1 0 1 0
260 268 0.7766854 1.3721910 0 0 0 1 1 0 1 0 0 1 0
261 299 0.7752809 1.3272472 0 0 0 0 1 1 1 0 0 0 1
262 192 0.7738764 1.2401685 0 1 0 0 0 1 0 0 1 1 0
263 269 0.7696629 1.3693820 0 0 0 1 1 0 1 0 0 0 1
264 298 0.7696629 1.3300562 0 0 0 0 1 1 1 0 0 1 0
265 288 0.7696629 1.2851124 0 0 0 1 0 0 1 1 0 0 1
266 309 0.7682584 1.2064607 0 0 0 0 1 0 1 0 1 1 0
267 310 0.7654494 1.2036517 0 0 0 0 1 0 1 0 1 0 1
268 280 0.7626404 1.4044944 0 0 0 1 0 1 0 1 1 0 0
269 289 0.7626404 1.2401685 0 0 0 1 0 0 1 0 1 1 0
270 287 0.7612360 1.2879213 0 0 0 1 0 0 1 1 0 1 0
271 308 0.7612360 1.2514045 0 0 0 0 1 0 1 1 0 0 1
272 262 0.7598315 1.5365169 0 0 0 1 1 1 0 1 0 0 0
273 307 0.7598315 1.2542135 0 0 0 0 1 0 1 1 0 1 0
274 169 0.7598315 1.1783708 0 1 0 1 0 0 0 0 0 1 1
275 197 0.7570225 1.2696629 0 1 0 0 0 0 1 1 0 0 1
276 318 0.7570225 1.2429775 0 0 0 0 0 1 1 1 0 0 1
277 290 0.7570225 1.2373596 0 0 0 1 0 0 1 0 1 0 1
278 263 0.7542135 1.4887640 0 0 0 1 1 1 0 0 1 0 0
279 199 0.7542135 1.2219101 0 1 0 0 0 0 1 0 1 0 1
280 202 0.7542135 1.1615169 0 1 0 0 0 0 0 1 1 0 1
281 184 0.7542135 1.1446629 0 1 0 0 1 0 0 0 0 1 1
282 270 0.7528090 1.4129213 0 0 0 1 1 0 0 1 1 0 0
283 198 0.7500000 1.2247191 0 1 0 0 0 0 1 0 1 1 0
284 320 0.7500000 1.1952247 0 0 0 0 0 1 1 0 1 0 1
285 317 0.7471910 1.2457865 0 0 0 0 0 1 1 1 0 1 0
286 196 0.7443820 1.2724719 0 1 0 0 0 0 1 1 0 1 0
287 201 0.7429775 1.1643258 0 1 0 0 0 0 0 1 1 1 0
288 282 0.7415730 1.3005618 0 0 0 1 0 1 0 1 0 0 1
289 319 0.7373596 1.1980337 0 0 0 0 0 1 1 0 1 1 0
290 194 0.7373596 1.1362360 0 1 0 0 0 1 0 0 0 1 1
291 281 0.7345506 1.3033708 0 0 0 1 0 1 0 1 0 1 0
292 284 0.7303371 1.2528090 0 0 0 1 0 1 0 0 1 0 1
293 265 0.7261236 1.3848315 0 0 0 1 1 1 0 0 0 0 1
294 283 0.7247191 1.2556180 0 0 0 1 0 1 0 0 1 1 0
295 264 0.7233146 1.3876404 0 0 0 1 1 1 0 0 0 1 0
296 291 0.7219101 1.1362360 0 0 0 1 0 0 1 0 0 1 1
297 273 0.7191011 1.2640449 0 0 0 1 1 0 0 0 1 1 0
298 327 0.7162921 1.1193820 0 0 0 0 0 0 1 1 1 0 1
299 311 0.7148876 1.1025281 0 0 0 0 1 0 1 0 0 1 1
300 300 0.7134831 1.3707865 0 0 0 0 1 1 0 1 1 0 0
301 272 0.7134831 1.3089888 0 0 0 1 1 0 0 1 0 0 1
302 274 0.7134831 1.2612360 0 0 0 1 1 0 0 0 1 0 1
303 326 0.7106742 1.1221910 0 0 0 0 0 0 1 1 1 1 0
304 271 0.7092697 1.3117978 0 0 0 1 1 0 0 1 0 1 0
305 293 0.7078652 1.1769663 0 0 0 1 0 0 0 1 1 0 1
306 200 0.7036517 1.1207865 0 1 0 0 0 0 1 0 0 1 1
307 292 0.6980337 1.1797753 0 0 0 1 0 0 0 1 1 1 0
308 285 0.6980337 1.1516854 0 0 0 1 0 1 0 0 0 1 1
309 203 0.6938202 1.0603933 0 1 0 0 0 0 0 1 0 1 1
310 204 0.6924157 1.0126404 0 1 0 0 0 0 0 0 1 1 1
311 321 0.6882022 1.0941011 0 0 0 0 0 1 1 0 0 1 1
312 313 0.6783708 1.1432584 0 0 0 0 1 0 0 1 1 0 1
313 275 0.6755618 1.1601124 0 0 0 1 1 0 0 0 0 1 1
314 302 0.6727528 1.2668539 0 0 0 0 1 1 0 1 0 0 1
315 304 0.6713483 1.2191011 0 0 0 0 1 1 0 0 1 0 1
316 312 0.6713483 1.1460674 0 0 0 0 1 0 0 1 1 1 0
317 301 0.6643258 1.2696629 0 0 0 0 1 1 0 1 0 1 0
318 294 0.6615169 1.0758427 0 0 0 1 0 0 0 1 0 1 1
319 303 0.6601124 1.2219101 0 0 0 0 1 1 0 0 1 1 0
320 295 0.6502809 1.0280899 0 0 0 1 0 0 0 0 1 1 1
321 329 0.6488764 0.9705056 0 0 0 0 0 0 1 0 1 1 1
322 328 0.6474719 1.0182584 0 0 0 0 0 0 1 1 0 1 1
323 323 0.6460674 1.1348315 0 0 0 0 0 1 0 1 1 0 1
324 322 0.6376404 1.1376404 0 0 0 0 0 1 0 1 1 1 0
325 315 0.6207865 0.9943820 0 0 0 0 1 0 0 0 1 1 1
326 305 0.6109551 1.1179775 0 0 0 0 1 1 0 0 0 1 1
327 314 0.6109551 1.0421348 0 0 0 0 1 0 0 1 0 1 1
328 324 0.5842697 1.0337079 0 0 0 0 0 1 0 1 0 1 1
329 325 0.5674157 0.9859551 0 0 0 0 0 1 0 0 1 1 1
330 330 0.5505618 0.9101124 0 0 0 0 0 0 0 1 1 1 1
La combinación ganadora es classic + grape + sour + strawberry con un reach de 95.1%, algo mayor que el 94.4% de la cartera número dos, que tiene cola apareciendo en lugar de grape. Este 0.7% no es una gran diferencia, representando solo 5 de las 712 personas.
Algunas personas se decepcionan cuando TURF no elige un ganador claro. Sin embargo, es una noticia extremadamente buena, ya que significa que hay mucha flexibilidad para tener en cuenta otros factores (es decir, la investigación no está cerrando oportunidades).
Por otro lado tenemos la columna con el dato de frecuencia de cada combinación. La frecuencia de 2,08 nos dice que si ofrecemos estos cuatro sabores, el número total de menciones en nuestra muestra a esas cuatro alternativas es 2,08 veces mayor que la muestra.
También, ten en cuenta que si bien las dos primeras carteras están muy cerca en términos de alcance, hay una gran diferencia en términos de frecuencia, con la segunda alternativa con una frecuencia 11% menor. Mirar la frecuencia hace que la primera, tercera y quinta combinación parezcan las más destacadas.
Tabla de duplicaciones
El siguiente paso en el análisis es la tabla de duplicaciones. dado que el conjunto de respuestas puede tratarse como una variable de tipo múltiple (binarizada) el cruce la variable por sí misma nos revelará todas las duplicaciones realizadas en la muestra entre todos los sabores.
tab1 <- data %>%
tab_cols(mdset(classic %to% watermelon)) %>%
tab_cells(mdset(classic %to% watermelon)) %>%
tab_stat_tpct(total_row_position='none') %>%
tab_pivot()
tab1
classic | strong | grape | sour | orange | strawberry | cola | apple | chocolate | peach | watermelon | |
---|---|---|---|---|---|---|---|---|---|---|---|
classic | 65.9 | 34.8 | 45.4 | 28.9 | 25.0 | 22.5 | 28.7 | 18.8 | 16.4 | 8.4 | 9.1 |
strong | 34.8 | 41.7 | 29.6 | 19.4 | 15.3 | 12.1 | 22.2 | 11.5 | 9.3 | 6.2 | 4.8 |
grape | 45.4 | 29.6 | 60.1 | 25.7 | 21.8 | 21.3 | 26.4 | 18.0 | 15.0 | 8.7 | 8.7 |
sour | 28.9 | 19.4 | 25.7 | 43.3 | 24.6 | 16.3 | 17.6 | 16.2 | 12.8 | 8.0 | 7.6 |
orange | 25.0 | 15.3 | 21.8 | 24.6 | 39.9 | 22.8 | 13.3 | 16.3 | 11.9 | 9.0 | 9.1 |
strawberry | 22.5 | 12.1 | 21.3 | 16.3 | 22.8 | 39.0 | 11.8 | 16.3 | 14.2 | 12.9 | 11.4 |
cola | 28.7 | 22.2 | 26.4 | 17.6 | 13.3 | 11.8 | 37.5 | 11.7 | 9.3 | 6.7 | 6.0 |
apple | 18.8 | 11.5 | 18.0 | 16.2 | 16.3 | 16.3 | 11.7 | 31.5 | 9.7 | 10.0 | 9.6 |
chocolate | 16.4 | 9.3 | 15.0 | 12.8 | 11.9 | 14.2 | 9.3 | 9.7 | 26.7 | 7.2 | 6.2 |
peach | 8.4 | 6.2 | 8.7 | 8.0 | 9.0 | 12.9 | 6.7 | 10.0 | 7.2 | 16.6 | 7.2 |
watermelon | 9.1 | 4.8 | 8.7 | 7.6 | 9.1 | 11.4 | 6.0 | 9.6 | 6.2 | 7.2 | 16.3 |
tab1 <- tab1[,-1]
Por otro lado, la diagonal principal de la tabla de duplicaciones, que como puede verse en la tabla inferior es el marginal de la variable múltiple (binarizada) muestra el alcance sobre la muestra de cada sabor por separado.
tab2 <- data %>%
tab_cells(mdset(classic %to% watermelon)) %>%
tab_stat_tpct(total_row_position='none') %>%
tab_pivot()
tab2
#Total | |
---|---|
classic | 65.9 |
strong | 41.7 |
grape | 60.1 |
sour | 43.3 |
orange | 39.9 |
strawberry | 39.0 |
cola | 37.5 |
apple | 31.5 |
chocolate | 26.7 |
peach | 16.6 |
watermelon | 16.3 |
Análisis de correspondencias de la tabla de duplicaciones
La tabla de duplicaciones muestra qué porcentaje de la muestra intersecciona o combina entre sí. Sin embargo, esta tabla de contingencia, puede analizarse con un análisis de correspondencias. Este análisis, revela la relaciones que existen entre los distintos sabores que se presentan. El gráfico resultante se muestra a continuación, con cada burbuja indicando el atractivo de cada alternativa. Cuanto más separadas están las burbujas, menos son sustitutos. Idealmente, queremos elegir alternativas que estén muy separadas. Esto plantea problemas con nuestra cartera actual preferida de Classic + Grape + Strawberry + Cola, con Classic y Grape superpuestos, y Cola está en la misma vecindad.
#analisis de correspondencias (ca)
caanalysis <- ca(tab1)
options(width=9999)
caanalysis
Principal inertias (eigenvalues):
1 2 3 4 5 6 7 8 9 10
Value 0.07027 0.019819 0.018315 0.011533 0.009891 0.009422 0.007307 0.005984 0.00359 0.003044
Percentage 44.15% 12.45% 11.51% 7.25% 6.21% 5.92% 4.59% 3.76% 2.26% 1.91%
Rows:
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]
Mass 0.143549 0.097711 0.132604 0.104013 0.098706 0.094726 0.090282 0.080000 0.065473 0.047629 0.045307
ChiDist 0.264729 0.414072 0.280244 0.316469 0.339850 0.399143 0.407249 0.416798 0.525572 0.620450 0.660193
Inertia 0.010060 0.016753 0.010414 0.010417 0.011400 0.015091 0.014973 0.013898 0.018085 0.018335 0.019747
Dim. 1 -0.828318 -1.305112 -0.761358 -0.131951 0.555813 1.174242 -1.025841 0.898100 0.750708 1.763769 1.823752
Dim. 2 0.007731 0.525009 0.227189 -1.540503 -1.614931 -0.148888 1.168586 0.442699 -0.782201 1.695505 1.782193
Columns:
classic strong grape sour orange strawberry cola apple chocolate peach watermelon
Mass 0.143549 0.097711 0.132604 0.104013 0.098706 0.094726 0.090282 0.080000 0.065473 0.047629 0.045307
ChiDist 0.264729 0.414072 0.280244 0.316469 0.339850 0.399143 0.407249 0.416798 0.525572 0.620450 0.660193
Inertia 0.010060 0.016753 0.010414 0.010417 0.011400 0.015091 0.014973 0.013898 0.018085 0.018335 0.019747
Dim. 1 -0.828318 -1.305112 -0.761358 -0.131951 0.555813 1.174242 -1.025841 0.898100 0.750708 1.763769 1.823752
Dim. 2 0.007731 0.525009 0.227189 -1.540503 -1.614931 -0.148888 1.168586 0.442699 -0.782201 1.695505 1.782193
tab3 <- as.data.frame(caanalysis[["colcoord"]])
tab4 <- cbind(tab2,tab3)
z <- as.numeric(round(tab4$'#Total'),0)
ggplot(tab4, aes(x=Dim1, y=Dim2, size = z)) +
geom_point(alpha=0.1) +
scale_size(range = c(5, 10), name="Atractivo")+
geom_label(label=tab4$row_labels, nudge_x = 0, nudge_y = 0.15, label.size = 0.1, na.rm = FALSE, show.legend = FALSE)+
theme_light()
Análisis de componentes principales
El análisis de correspondencias proporciona un gran resumen de los datos. Pero, lo obliga a una trama bidimensional, lo que significa que ofrece algo de información pero no de modo completo. Con un mayor número de alternativas, esto se convierte en un problema grave. De este modo, podemos obtener una comprensión con un enfoque más amplio de la sustitución mediante el uso de análisis de componentes principales.
#analisis de componentes principales (psych)
data <- data[,c(-1,-2)]
pcaanalysis <- principal(data, nfactors = 3, rotate='varimax')
pcaanalysis
Principal Components Analysis
Call: principal(r = data, nfactors = 3, rotate = "varimax")
Standardized loadings (pattern matrix) based upon correlation matrix
RC1 RC2 RC3 h2 u2 com
classic -0.17 0.64 0.04 0.43 0.57 1.2
strong -0.13 0.70 0.08 0.51 0.49 1.1
grape -0.03 0.57 -0.13 0.35 0.65 1.1
sour -0.03 0.09 0.83 0.70 0.30 1.0
orange 0.24 -0.13 0.75 0.63 0.37 1.3
strawberry 0.64 -0.22 0.09 0.47 0.53 1.3
cola 0.07 0.64 -0.01 0.42 0.58 1.0
apple 0.54 0.02 0.20 0.33 0.67 1.3
chocolate 0.36 -0.08 0.02 0.13 0.87 1.1
peach 0.75 0.03 -0.01 0.57 0.43 1.0
watermelon 0.68 -0.01 -0.01 0.47 0.53 1.0
RC1 RC2 RC3
SS loadings 1.98 1.72 1.32
Proportion Var 0.18 0.16 0.12
Cumulative Var 0.18 0.34 0.46
Proportion Explained 0.39 0.34 0.26
Cumulative Proportion 0.39 0.74 1.00
Mean item complexity = 1.1
Test of the hypothesis that 3 components are sufficient.
The root mean square of the residuals (RMSR) is 0.1
with the empirical chi square 821.53 with prob < 3.5e-157
Fit based upon off diagonal values = 0.57
Las cargas para los datos se muestran a continuación y sugieren que hay tres grupos básicos de sabores: ácidos, tradicionales y los sabores de fruta y chocolate. Esto sugiere que deberíamos considerar tener uno de Sour / Orange en nuestro portafolio. Como Sour está más lejos de Strawberry (ver el análisis de correspondencia). Esto respalda aún más la opinión de que Classic + Sour + Strawberry + Cola es la mejor cartera. Los gráficos derivados de este nuevo análisis, nos revelan la estructura subyacente de los datos analizados.
biplot.psych(pcaanalysis)
plot(pcaanalysis)
cor.plot(pcaanalysis, numbers=TRUE)
fa.diagram(pcaanalysis)
Tamaño de la cartera
¿Cuántos productos?
¿Debería el fabricante de chicles ofrecer 3, 4, 5 o 6 variantes diferentes de chicle?
La forma en que se hace esta pregunta es ejecutar TURF varias veces, y luego crear una gráfica que represente la aportación de cada nueva incorporación a la cartera de producto. Como regla general, la ganancia incremental en el alcance de cada nuevo producto en la cartera es mucho menor que la anterior.
Todo parece sugerir que tres o cuatro son probablemente la mayor cantidad de productos que tienen sentido en este ejemplo, pero en última instancia, esta es una compensación que necesita considerar los costos marginales de fabricación, comercialización y distribución de cada producto adicional.
De la misma forma, se debe pensar en las restricciones. No puede ser una combinación cualquiera, sino que los dos sabores básicos de la empresa Classic y Cola deben figurar sí o sí en la combinación, siendo irrenunciable su partcipación el portfolio de prodcutos de la empresa.
Iteración del TURF
Realizando el TURF y aplicando esta restricción, la tabla resultante es esta …
suppressMessages(data <- read_excel("bubble_gum_flavors.xlsx"))
colnames(data)<- c('id','weight','classic','strong','grape','sour','orange','strawberry','cola','apple','chocolate','peach','watermelon','age','gender')
data <- as.data.frame(data[,1:13])
turfprods <- turf(data, 11, 2)
2 of 11: 0.05734015 sec
total time elapsed: 0.05788016 sec
turf <- as.data.frame(turfprods[["turf"]][[1]])
colnames(turf)<- c('combo','rchX', 'frqX', 'classic','strong','grape','sour','orange','strawberry','cola','apple','chocolate','peach','watermelon')
turf <- where(turf, turf$classic==1 & turf$cola==1)
Warning: 'where' is deprecated and will be removed in the next version. Please, use 'rows' from maditr package.
turf.1a <- turf$rchX[[1]]
turf
combo rchX frqX classic strong grape sour orange strawberry cola apple chocolate peach watermelon
10 6 0.747191 1.033708 1 0 0 0 0 0 1 0 0 0 0
Podemos observar que el alcance de esa combinación es de 74.72% de la muestra. Veamos que sucedería si decidimos añadir un nuevo sabor, pero restringiendo esta combinación.
turfprods <- turf(data, 11, 3)
3 of 11: 0.148807 sec
total time elapsed: 0.1494651 sec
turf <- as.data.frame(turfprods[["turf"]][[1]])
colnames(turf)<- c('combo','rchX', 'frqX', 'classic','strong','grape','sour','orange','strawberry','cola','apple','chocolate','peach','watermelon')
turf <- where(turf, turf$classic==1 & turf$cola==1) #restringe a que solo saque la combinación classic+cola y otra.
Warning: 'where' is deprecated and will be removed in the next version. Please, use 'rows' from maditr package.
turf.1b <- round((turf$rchX[[1]]-turf.1a)*100,2)
turf
combo rchX frqX classic strong grape sour orange strawberry cola apple chocolate peach watermelon
6 31 0.8862360 1.424157 1 0 0 0 0 1 1 0 0 0 0
10 26 0.8750000 1.432584 1 0 0 0 1 0 1 0 0 0 0
21 20 0.8567416 1.466292 1 0 0 1 0 0 1 0 0 0 0
26 13 0.8539326 1.634831 1 0 1 0 0 0 1 0 0 0 0
41 36 0.8426966 1.348315 1 0 0 0 0 0 1 1 0 0 0
49 37 0.8258427 1.300562 1 0 0 0 0 0 1 0 1 0 0
61 38 0.8089888 1.199438 1 0 0 0 0 0 1 0 0 1 0
65 39 0.8047753 1.196629 1 0 0 0 0 0 1 0 0 0 1
75 5 0.7808989 1.450843 1 1 0 0 0 0 1 0 0 0 0
Podemos observar en la tabla anterior que la mejor alternativa para tener mayor alcance a elegir es incorporar al portfolio es Strawberry, con un alcance de 88.62%. Así hemos mejorado un alcance del 13.9%; ¿queremos sólo uno más o dos más?. Dando por buena esta combinación, ¿que aportaría más?
turfprods <- turf(data, 11, 4)
4 of 11: 0.379231 sec
total time elapsed: 0.3800201 sec
turf <- as.data.frame(turfprods[["turf"]][[1]])
colnames(turf)<- c('combo','rchX', 'frqX', 'classic','strong','grape','sour','orange','strawberry','cola','apple','chocolate','peach','watermelon')
turf <- where(turf, turf$classic==1 & turf$cola==1 & turf$strawberry==1)
Warning: 'where' is deprecated and will be removed in the next version. Please, use 'rows' from maditr package.
turf
combo rchX frqX classic strong grape sour orange strawberry cola apple chocolate peach watermelon
2 71 0.9438202 1.856742 1 0 0 1 0 1 1 0 0 0 0
3 50 0.9410112 2.025281 1 0 1 0 0 1 1 0 0 0 0
8 86 0.9367978 1.823034 1 0 0 0 1 1 1 0 0 0 0
26 101 0.9227528 1.738764 1 0 0 0 0 1 1 1 0 0 0
29 102 0.9213483 1.691011 1 0 0 0 0 1 1 0 1 0 0
46 22 0.9101124 1.841292 1 1 0 0 0 1 1 0 0 0 0
78 104 0.9002809 1.587079 1 0 0 0 0 1 1 0 0 0 1
80 103 0.8988764 1.589888 1 0 0 0 0 1 1 0 0 1 0
Ya podemos observar que la mejor alternativa sería Sour. Podríamos seguir hasta añadir las 11, pero la decisión de cuántos como ya indicamos anteriormente tiene ya que ver con otras consideraciones como los costos marginales de fabricación, comercialización y distribución de cada producto adicional.
Espero os haya gustado el post y os pueda ser de utilidad.
df <- data.frame(z=c(1,2,3,4,5), rchX=c(36.7, 2.9, 3.6, 7.8, 9.2))
library(highcharter)
Registered S3 method overwritten by 'quantmod':
method from
as.zoo.data.frame zoo
highchart() %>%
hc_title(text = "Incrementos de alcance",style = list(fontSize = "2em")) %>%
hc_chart(type = 'waterfall') %>%
hc_xAxis(categories = df$z) %>%
hc_yAxis(min=0,max=100) %>%
hc_add_series(df$rchX, name = "Incremento de alcance", showInLegend = TRUE, colorByPoint=TRUE)