Advertencias
Lo más importante es que muchas cosas podrían haber cambiado desde que usted hizo la actualización. Por ejemplo, si un competidor importante cerró el negocio y la Navidad llegó a tiempo para el cambio, su prueba estará confundiendo el efecto positivo de esos factores con las mejoras del sitio. Incluso podrían enmascarar que la nueva versión es mala. Habría sido un diseño experimental mucho mejor dividir alguna fracción del tráfico de su sitio en la nueva versión al azar, y luego comparar los resultados de los que vieron el sitio nuevo y el viejo durante el mismo período. Esto mantiene constantes la estacionalidad y la competencia, por lo que no se están comparando manzanas con orangutanes. No se puede hacer mucho al respecto (al menos con los datos que has proporcionado).
También vamos a suponer que los clientes no interactúan entre sí (no es posible que se agoten las existencias, por ejemplo) y que no se repiten las visitas. También asumimos que la gente no puede saltarse pasos en el embudo y que no puede entrar en el embudo en cualquier lugar que no sea el principio. Estas suposiciones pueden ser poco realistas para algunos sitios web, pero relajarlas complica las cosas.
Transformación de modelos y datos
Si está dispuesto a ignorar estas preocupaciones, puede intentar utilizar un modelo logit secuencial para analizar el flujo a través del embudo. Este enfoque se denomina a veces modelo de respuesta secuencial, logit de relación de continuación, modelo de dicotomías anidadas o modelo de Mare (por el sociólogo de la UCLA). Tiene más nombres que un suplantador de identidad.
Este enfoque requiere datos a nivel de cliente individual, que puedo sacar de la tabla que has proporcionado diferenciando. Esto manejará el hecho de que el tráfico es mayor en el nuevo sitio. Utilizaré Stata y Maarten Buis seqlogit
comando . Parte de esto se puede manejar con una serie de comandos logit* (que cualquier software estadístico avanzado debería poder manejar), pero seqlogit
le permite hacer una "descomposición" muy interesante del efecto total de la versión sobre el resultado final (como la probabilidad de compra o incluso una cantidad de dólares).
Ya he cambiado sus datos de un La campaña de Napoleón al resultado final diferenciando las celdas adyacentes a lo largo de cada columna:
. /* Set Up The Data */
. set more off
. clear
. input str10 finstat byte version int n
finstat version n
1. "Browsed" 1 89
2. "Clicked" 1 3
3. "Step3" 1 1
4. "Step4" 1 2
5. "Step5" 1 7
6. "Purchased" 1 19
7. "Browsed" 2 937
8. "Clicked" 2 21
9. "Step3" 2 5
10. "Step4" 2 15
11. "Step5" 2 26
12. "Purchased" 2 345
13. end
. sencode finstat, replace
. lab define version 1 "Old" 2 "New"
. lab val version version
. expand n
(1458 observations created)
. sort version finstat
. drop n
Esto nos da 1470 observaciones/filas (también podría haber utilizado ponderaciones de frecuencia en lugar de ampliar los datos). Por ejemplo, para la versión antigua, tenemos 89 personas que sólo navegaron y 19 que completaron una compra y 13 que abandonaron en algún punto intermedio.
. tab finstat version
| version
finstat | Old New | Total
-----------+----------------------+----------
Browsed | 89 937 | 1,026
Clicked | 3 21 | 24
Step3 | 1 5 | 6
Step4 | 2 15 | 17
Step5 | 7 26 | 33
Purchased | 19 345 | 364
-----------+----------------------+----------
Total | 121 1,349 | 1,470
Logit secuencial para cada paso del embudo de pedidos
Ahora ajustamos el logit secuencial del resultado final en versión binaria. El tree()
especifica la estructura del árbol de decisión (las opciones disponibles en el $6$ coyunturas), y el levels()
especifica los efectos en los ingresos de la detención en cada etapa. Aquí asumo que sólo te importa la compra completada. Esta suposición no altera la estimación, pero se utilizará en la descomposición. Las estimaciones son:
. /* Sequential Logit */
. seqlogit finstat i.version, ///
> tree(1: 2 3 4 5 6, 2: 3 4 5 6, 3: 4 5 6, 4: 5 6, 5: 6) ///
> levels(1=0,2=0,3=0,4=0,5=0,6=1) ///
> or robust ///
>
Transition tree:
Transition 1: 1 : 2 3 4 5 6
Transition 2: 2 : 3 4 5 6
Transition 3: 3 : 4 5 6
Transition 4: 4 : 5 6
Transition 5: 5 : 6
Computing starting values for:
Transition 1
Transition 2
Transition 3
Transition 4
Transition 5
Iteration 0: log pseudolikelihood = -1204.027
Iteration 1: log pseudolikelihood = -1204.027
Number of obs = 1470
Wald chi2(1) = 0.88
Log pseudolikelihood = -1204.027 Prob > chi2 = 0.3482
------------------------------------------------------------------------------
| Robust
finstat | Odds Ratio Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
_2_3_4_5_6v1 |
version |
New | 1.222919 .2623202 0.94 0.348 .8031785 1.862015
_cons | .3595506 .0741362 -4.96 0.000 .2400212 .538605
-------------+----------------------------------------------------------------
_3_4_5_6v2 |
version |
New | 1.926108 1.245698 1.01 0.311 .5422151 6.842106
_cons | 9.666667 5.86462 3.74 0.000 2.943511 31.74591
-------------+----------------------------------------------------------------
_4_5_6v3 |
version |
New | 2.757144 3.069166 0.91 0.362 .3111206 24.43376
_cons | 27.99999 28.50525 3.27 0.001 3.807117 205.9299
-------------+----------------------------------------------------------------
_5_6v4 |
version |
New | 1.902564 1.483801 0.82 0.410 .412564 8.773792
_cons | 13 9.542633 3.49 0.000 3.08404 54.79825
-------------+----------------------------------------------------------------
_6v5 |
version |
New | 4.888664 2.379981 3.26 0.001 1.882756 12.69365
_cons | 2.714286 1.200506 2.26 0.024 1.140713 6.458546
------------------------------------------------------------------------------
Para cada paso del embudo, tenemos un modelo logit en el que los coeficientes estimados se transforman en cocientes de probabilidades . Por ejemplo, la primera opción es si se limita a hojear (1) o continúa más allá en el embudo (2-6). Las probabilidades de base dadas por el coeficiente _cons, que corresponde a la versión antigua del sitio, son $0.3595506$ . Esto significa que mucha gente abandona en esta fase en el antiguo sitio: aproximadamente un tercio de un cliente va más allá por cada persona que se limita a mirar el escaparate (o uno por cada tres si el concepto de personas fraccionadas evoca inquietantes visiones de amputados). Esto equivale a las cifras brutas de $(19+13)/89$ .
El nuevo coeficiente le da la multiplicativo efecto sobre las probabilidades de base. Es $1.222919$ , así que eso es $22\%$ aumento de las probabilidades de continuar. Así que para el nuevo sitio, las probabilidades deberían ser $1.222919 \cdot 0.3595506=0.43970126$ que coincide con los datos reales de $(67+345)/937=0.4397$ bastante bien ya que no tenemos covariables. En el nuevo sitio, casi la mitad de los usuarios pasan de la fase de simple navegación. Es hora de que tus desarrolladores reciban una pizza y una caja de cerveza.
Sin embargo, el valor p es $0.348$ y el $95\%$ El intervalo de confianza es $[.8031785,1.862015]$ que incluye $1$ . Contener 1 es desafortunado porque multiplicar por uno deja la línea de base sin cambios; menos de uno significa que la nueva versión es peor. Esto significa que la aparente mejora con respecto al sitio antiguo no es estadísticamente significativa, al menos para esta etapa del flujo de pedidos. En otras palabras, podría ser real o podría ser suerte. Si tuviéramos más datos (una muestra mayor para el sitio antiguo), podríamos haber sido capaces de notar la diferencia. También podría considerar añadir datos demográficos y de comportamiento (o incluso sus segmentos) sobre sus clientes a este tipo de modelo como covariables. Puede ayudar a la significación.
Si observamos el resto de etapas de decisión, vemos que los efectos multiplicativos sobre las probabilidades de base suelen ser mayores que 1, pero suelen ser insignificantes. La última etapa (abandono en el paso $5$ o Compra Completa) tiene un efecto multiplicador de $4.888664$ con un valor p de $0.024$ . Dado que esta es la única etapa que pone dinero en el banco, un aumento significativo por un factor de casi $5$ es genial.
Cálculo del efecto total
Ahora pasamos a la descomposición:
. /* Decomposition */
. seqlogitdecomp version, table marg
At:
variable | value
-------------+---------
version | 1
Decomposition:
| _2_3_4_5_6v1 | _3_4_5_6v2 | _4_5_6v3 | _5_6v4 | _6v5
| b se | b se | b se | b se | b se
-------------+------------------+------------------+------------------+------------------+------------------
trans | | | | |
1b.version | 0 . | 0 . | 0 . | 0 . | 0 .
2.version | .0409 .042 | .0428 .0527 | .0217 .0344 | .0326 .0497 | .199 .088
-------------+------------------+------------------+------------------+------------------+------------------
weight | | | | |
weight | .594 .0868 | .173 .0351 | .163 .0338 | .169 .0345 | .215 .0373
at risk | 1 . | .264 .0401 | .24 .0388 | .231 .0383 | .215 .0373
gain | .594 .0868 | .655 .0883 | .679 .0883 | .731 .087 | 1 .
-------------+------------------+------------------+------------------+------------------+------------------
pr(pass) | | | | |
pr | .264 .0401 | .906 .0515 | .966 .0339 | .929 .0487 | .731 .087
-------------+------------------+------------------+------------------+------------------+------------------
tot | | | | |
1b.version | 0 . | | | |
2.version | .0987 .0329 | | | |
Las primeras filas dan los efectos en la métrica de probabilidad aditiva estándar (con el marg
opción). Para mí, esto es más fácil de pensar que la log odds ratio o la escala logit. Por ejemplo, para la primera etapa, el efecto de la nueva versión es $0.0409$ con un error estándar de $0.042$ . Esto significa que un cliente que encontró la nueva versión es $4.1$ puntos porcentuales más de probabilidad de pasar a la fase de añadir al carrito y más allá en comparación con el antiguo sitio.
Puede utilizar el error estándar para construir su propio $95\%$ intervalo de confianza $[b\pm 1.96 \cdot se]=[-0.04142,0.12322]$ , que desgraciadamente incluye el cero. También tienes los efectos para las otras etapas. Los resultados son muy similares a los que vimos con los coeficientes OR multiplicativos: sólo la última transición muestra un efecto significativo (el intervalo de confianza no incluye el cero, ya que ahora estamos sumando en lugar de multiplicar). El efecto es un $19.9\%$ que está bastante cerca de $22\%$ que vimos arriba.
Lo mejor es la última fila. Te da el efecto total en la probabilidad de completar el pedido dado el efecto de la versión en todas las etapas intermedias. Sorprendentemente, se trata de una suma ponderada de los efectos marginales en cada transición, en la que las ponderaciones son el producto de dos elementos: la proporción "en riesgo" y la ganancia esperada al pasar. La primera proporción es $1$ ya que todos pueden pasar del estado de navegación. Se reduce con cada etapa a medida que la gente abandona. Esto tiene sentido: si se mejora mucho la última etapa, pero nadie llega a ella para apreciarla, no se va a conseguir una gran mejora.
La línea de ganancia es un poco más confusa. Hemos asumido que sólo te importa el paso final (el levels()
en el seqlogit
asignó un peso cero a todos los demás). Esto significa que la ganancia para el último es 1. Para el primero sabemos que si alguien no abandona después de navegar, su probabilidad de compra esperada es $0.906 \cdot 0.966 \cdot 0.929 \cdot 0.731 \cdot 1 = 0.594$ . Esto no es más que el producto de las probabilidades de pasar cada etapa, que se componen. Las probabilidades vienen dadas por la línea pr(pass). Por ejemplo, la primera es $(3+1+2+7+19)/121=0.264$
Entonces el efecto marginal es
$$\frac{\Delta \mathbf{Pr} (P=1)}{\Delta v}=\sum_{s=1}^6 r_s \cdot g_s \cdot m_s, $$
donde $r_s$ es la fracción de riesgo en la etapa $s$ , $g_s$ es la ganancia esperada en la etapa $s$ y $m_s$ es el efecto marginal en la etapa $s$ .
Ahora que tenemos todas las piezas, podemos hacer el cálculo
$$1\cdot.594\cdot.0409 + .264\cdot.655\cdot.0428 + .24\cdot.679\cdot.0217 + .231\cdot.731\cdot.0326+.215\cdot 1 \cdot .199=.0836$$
Por alguna razón, esto no coincide con el efecto total en la salida. Pensé que se debía a un error de redondeo, pero no parece ser el caso. Informaré de ello una vez que lo haya resuelto.
El efecto total del tratamiento en la tabla es $0.0987$ con un error estándar de $0.033$ . Esto significa que el $95\%$ el intervalo de confianza es $[0.03402,0.16338]$ . Eso es un $10$ puntos porcentuales de mejora en la finalización de pedidos con respecto a la versión anterior (sin duda económicamente significativa), lo que también parece estadísticamente significativo (no es sólo suerte). Esta es la cifra que puedes mostrar al director financiero que no se preocupa por todos los detalles técnicos y estadísticos. Puedes leer más sobre cómo obtenerlo en el sitio web de Maarten Buis mientras se reparte la pizza y la cerveza.
Otro buen cálculo que se puede hacer es el efecto de los ingresos. Puede cambiar el levels()
opción para la etapa final de $1$ al precio (medio) de su producto o hacerlo manualmente así. Si el precio de su artículo era $\$ 100 $ dollars and dropping out at earlier stages has no benefit for you, then your lift is worth an incremental $\$9.87$ por cliente que llegó a la página del producto.
También puede especificar los beneficios que le reporta el abandono en etapas anteriores (si el paso 5 sólo valía \$4 and purchase is worth \$ 100), el efecto total es ahora sólo de 9,72, ya que la nueva versión hace menos probable el desgaste en la fase anterior, lo que ahora conlleva un coste probabilístico de pérdida de $\$ 4$ dólares. Esto hace que sea fácil de modelar las actualizaciones.
*Aquí se replica el Paso 4 frente al Paso 5 o la Compra del logit secuencial con un logit solitario:
. recode finstat 1/3=. 4=0 5=1 6=1, gen(x)
(1470 differences between finstat and x)
. logit x i.version, or robust nolog
Logistic regression Number of obs = 414
Wald chi2(1) = 0.68
Prob > chi2 = 0.4099
Log pseudolikelihood = -70.626428 Pseudo R2 = 0.0042
------------------------------------------------------------------------------
| Robust
x | Odds Ratio Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
version |
New | 1.902564 1.485092 0.82 0.410 .4120157 8.785467
_cons | 13 9.550934 3.49 0.000 3.080183 54.86688
------------------------------------------------------------------------------
. margins, dydx(version)
Conditional marginal effects Number of obs = 414
Model VCE : Robust
Expression : Pr(x), predict()
dy/dx w.r.t. : 2.version
------------------------------------------------------------------------------
| Delta-method
| dy/dx Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
version |
New | .0325685 .0497145 0.66 0.512 -.0648703 .1300072
------------------------------------------------------------------------------
Note: dy/dx for factor levels is the discrete change from the base level.
Obsérvese la coincidencia con los coeficientes de OR y de descomposición, respectivamente. La parte realmente difícil de utilizar la secuencia de logits será obtener los errores estándar correctos para el efecto total. Tal vez pueda estimar todas las ecuaciones de efectos marginales simultáneamente y luego calcular su combinación lineal ponderada como en el caso anterior.
El Anexo de Alan Agresti Análisis de datos categóricos ordinales discute varias implementaciones de software, aunque lo llama logit de relación de continuación.
1 votos
Puede que haya malinterpretado sus datos en mi respuesta. Ahora creo que me he dejado llevar por la palabra "inicial". ¿Estos números representan resultados finales? Es decir, ¿121 es el número de personas que simplemente navegaron por la página del producto y luego abandonaron, o también incluye a los que hicieron clic, entraron y terminaron?
0 votos
@DimitriyV.Masterov : en primer lugar, muchas gracias por su respuesta tan detallada :) Contiene tanta información que necesito dedicar algo de tiempo a estudiarla y ver cómo aplicar las técnicas que mencionas en nuestro sistema. Los números representan sólo el número de personas que se han registrado estando en ese paso. Las 32 personas que hicieron clic en comprar, por ejemplo, también están incluidas en las 121 que hicieron clic en la página del producto. Muchas gracias por el esfuerzo, seguramente te avisaré una vez que haga una implementación de tus ideas, eso será en los próximos días :)
1 votos
Eso significa que la respuesta tiene sentido tal cual. Siéntase libre de seguir con las preguntas una vez que digan.