7 votos

¿Cuál podría ser una prueba estadística para comparar los datos del embudo antes y después de los cambios importantes?

Tengo algunos datos del embudo de un sitio web que administro. Después de un tiempo hice algunas mejoras en un proceso de compra de varios pasos. Me pregunto si es posible formular un test que con significación estadística pueda evaluar si las mejoras en el proceso han sido realmente efectivas.

En otras palabras, me gustaría comprobar si las dos columnas siguientes representan comportamientos significativamente diferentes o no:

\begin{array} {|r|r|r|} \hline \text{step} & \text{before changes} & \text{after changes} \\ \hline \text{product page}&121 &1349 \\ \text{clicked on purchase}&32 &412 \\ \text{step 3}&29 &391 \\ \text{step 4}&28 &386 \\ \text{step 5}&26 &371 \\ \text{transaction completed}&19 & 345 \\ \hline \end{array}

En ese caso se puede ver que el número de usuarios iniciales de la primera columna es muy diferente al de la segunda. Pero esto no es lo que me gustaría probar: Me gustaría "demostrar" que el comportamiento posterior contiene diferencias relevantes.

También repetiría la prueba con datos que podrían provenir de diferentes segmentos de usuarios.

¿Alguna idea?

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.

13voto

Neal Puntos 316

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.

3 votos

Ya voté esto, pero me alegra ver que va a recibir más amor. También puede ganar el premio CV como nuestra respuesta más larga ;-).

3voto

Santiago Cepas Puntos 2127

Teniendo en cuenta que sólo tienes una realización, asumiría que las variables siguen una ley de poisson H0 los valores antes de los cambios y comprobaría los valores después con los cuantiles teóricos bajo H0

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X