¿Qué modelo estadístico debo usar para analizar la probabilidad de que un solo evento influya en los datos longitudinales?


19

Estoy tratando de encontrar una fórmula, método o modelo para usar para analizar la probabilidad de que un evento específico influya en algunos datos longitudinales. Tengo dificultades para averiguar qué buscar en Google.

Aquí hay un escenario de ejemplo:

Imagen que posee un negocio que tiene un promedio de 100 clientes sin cita todos los días. Un día, decides que quieres aumentar la cantidad de clientes que llegan a tu tienda cada día, por lo que haces un truco loco fuera de tu tienda para llamar la atención. Durante la próxima semana, verá un promedio de 125 clientes por día.

En los próximos meses, nuevamente decide que desea obtener más negocios, y tal vez mantenerlo un poco más, por lo que intenta otras cosas al azar para obtener más clientes en su tienda. Desafortunadamente, no eres el mejor vendedor, y algunas de tus tácticas tienen poco o ningún efecto, y otras incluso tienen un impacto negativo.

¿Qué metodología podría usar para determinar la probabilidad de que un evento individual impacte positiva o negativamente el número de clientes sin cita previa? Soy plenamente consciente de que la correlación no necesariamente equivale a la causalidad, pero ¿qué métodos podría usar para determinar el probable aumento o disminución de la caminata diaria de su negocio en el cliente después de un evento específico?

No me interesa analizar si existe o no una correlación entre sus intentos de aumentar el número de clientes sin cita previa, sino más bien si algún evento individual, independiente de todos los demás, fue impactante.

Me doy cuenta de que este ejemplo es bastante ingenioso y simplista, por lo que también le daré una breve descripción de los datos reales que estoy usando:

Estoy tratando de determinar el impacto que una agencia de marketing en particular tiene en el sitio web de su cliente cuando publican contenido nuevo, realizan campañas en redes sociales, etc. Para cualquier agencia específica, pueden tener entre 1 y 500 clientes. Cada cliente tiene sitios web que varían en tamaño desde 5 páginas hasta más de 1 millón. En el transcurso de los últimos 5 años, cada agencia ha anotado todo su trabajo para cada cliente, incluido el tipo de trabajo realizado, la cantidad de páginas web en un sitio web que fueron influenciadas, la cantidad de horas dedicadas, etc.

Utilizando los datos anteriores, que he reunido en un almacén de datos (colocado en un montón de esquemas de estrellas / copos de nieve), necesito determinar qué tan probable era que cualquier pieza de trabajo (cualquier evento en el tiempo) tuviera un impacto en el tráfico golpea cualquiera / todas las páginas influenciadas por un trabajo específico. He creado modelos para 40 tipos diferentes de contenido que se encuentran en un sitio web que describe el patrón de tráfico típico que una página con dicho tipo de contenido puede experimentar desde la fecha de lanzamiento hasta el presente. Normalizado en relación con el modelo apropiado, necesito determinar el número más alto y más bajo de visitantes aumentados o disminuidos que recibió una página específica como resultado de un trabajo específico.

Si bien tengo experiencia con el análisis de datos básicos (regresión lineal y múltiple, correlación, etc.), no sé cómo abordar la solución de este problema. Mientras que en el pasado típicamente he analizado datos con múltiples mediciones para un eje dado (por ejemplo, temperatura vs sed vs animal y he determinado el impacto en la sed que el aumento de la temperatura tiene en los animales), siento que arriba, estoy tratando de analizar el impacto de un solo evento en algún momento para un conjunto de datos longitudinal no lineal, pero predecible (o al menos capaz de modelar). Estoy perplejo :(

Cualquier ayuda, consejos, sugerencias, recomendaciones o instrucciones sería extremadamente útil y estaría eternamente agradecido.


Existe toda una clase de análisis estadístico dedicado al modelado de datos longitudinales. Si tuvo medidas repetidas sobre los mismos temas, los modelos mixtos se utilizan a menudo como estado de la técnica en ciencias sociales para determinar si hay impacto de una intervención. Si tiene una serie temporal, solo se puede usar algo como un Arima.
B_Miner

Un enfoque RDD también puede ser útil para usted: austinclemens.com/blog/2014/06/08/436
B_Miner

Respuestas:


11

Para el registro, creo que este es el tipo de pregunta que es perfecta para el intercambio de pila de ciencia de datos. Espero que obtengamos un montón de ejemplos del mundo real de problemas de datos y varias perspectivas sobre la mejor manera de resolverlos.

Te animo a que no uses valores p, ya que pueden ser bastante engañosos ( 1 , 2 ). Mi enfoque depende de que puedas resumir el tráfico en una página determinada antes y después de alguna intervención. Lo que le importa es la diferencia en la tasa antes y después de la intervención. Es decir, ¿cómo cambia el número de visitas por día? A continuación, explico un enfoque de primera puñalada con algunos datos de ejemplo simulados. Luego explicaré una trampa potencial (y qué haría al respecto).

Primero, pensemos en una página antes y después de una intervención. Imagina que la intervención aumenta los golpes por día en aproximadamente un 15%:

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

def simulate_data(true_diff=0):
    #First choose a number of days between [1, 1000] before the intervention
    num_before = np.random.randint(1, 1001)

    #Next choose a number of days between [1, 1000] after the intervention
    num_after = np.random.randint(1, 1001)

    #Next choose a rate for before the intervention. How many views per day on average?
    rate_before = np.random.randint(50, 151)

    #The intervention causes a `true_diff` increase on average (but is also random)
    rate_after = np.random.normal(1 + true_diff, .1) * rate_before

    #Simulate viewers per day:
    vpd_before = np.random.poisson(rate_before, size=num_before)
    vpd_after = np.random.poisson(rate_after, size=num_after)

    return vpd_before, vpd_after

vpd_before, vpd_after = simulate_data(.15)

plt.hist(vpd_before, histtype="step", bins=20, normed=True, lw=2)
plt.hist(vpd_after, histtype="step", bins=20, normed=True, lw=2)
plt.legend(("before", "after"))
plt.title("Views per day before and after intervention")
plt.xlabel("Views per day")
plt.ylabel("Frequency")
plt.show()

Distribución de visitas por día antes y después de la intervención.

Podemos ver claramente que la intervención aumentó el número de visitas por día, en promedio. Pero para cuantificar la diferencia en las tasas, debemos usar la intervención de una compañía para varias páginas. Dado que la tasa subyacente será diferente para cada página, debemos calcular el cambio porcentual en la tasa (nuevamente, la tasa aquí es visitas por día).

Ahora, supongamos que tenemos datos para las n = 100páginas, cada una de las cuales recibió una intervención de la misma compañía. Para obtener la diferencia porcentual que tomamos (media (visitas por día antes) - media (visitas por día después)) / media (visitas por día antes):

n = 100

pct_diff = np.zeros(n)

for i in xrange(n):
    vpd_before, vpd_after = simulate_data(.15)
    # % difference. Note: this is the thing we want to infer
    pct_diff[i] = (vpd_after.mean() - vpd_before.mean()) / vpd_before.mean()

plt.hist(pct_diff)
plt.title("Distribution of percent change")
plt.xlabel("Percent change")
plt.ylabel("Frequency")
plt.show()

Distribución del cambio porcentual

¡Ahora tenemos la distribución de nuestro parámetro de interés! Podemos consultar este resultado de diferentes maneras. Por ejemplo, podríamos querer saber el modo o (aproximación de) el valor más probable para este cambio porcentual:

def mode_continuous(x, num_bins=None):
    if num_bins is None:
        counts, bins = np.histogram(x)
    else:
        counts, bins = np.histogram(x, bins=num_bins)

    ndx = np.argmax(counts)
    return bins[ndx:(ndx+1)].mean()

mode_continuous(pct_diff, 20)

Cuando ejecuté esto obtuve 0.126, lo que no está mal, considerando que nuestro verdadero cambio porcentual es 15. También podemos ver el número de cambios positivos, que se aproxima a la probabilidad de que la intervención de una compañía determinada mejore los golpes por día:

(pct_diff > 0).mean()

Aquí, mi resultado es 0.93, por lo que podríamos decir que hay una buena posibilidad de que esta compañía sea efectiva.

Finalmente, una trampa potencial: cada página probablemente tenga alguna tendencia subyacente que probablemente debería tener en cuenta. Es decir, incluso sin la intervención, los golpes por día pueden aumentar. Para tener en cuenta esto, estimaría una regresión lineal simple donde la variable de resultado es hits por día y la variable independiente es day (comienza en day = 0 y simplemente aumenta para todos los días en tu muestra). Luego reste la estimación, y_hat, de cada número de visitas por día para reducir la tendencia de sus datos. Luego, puede realizar el procedimiento anterior y estar seguro de que una diferencia porcentual positiva no se debe a la tendencia subyacente. Por supuesto, la tendencia puede no ser lineal, ¡así que usa la discreción! ¡Buena suerte!


Muchas gracias por una explicación tan completa! Realmente lo aprecio. ¡Entre usted y neone4373 pude resolver el problema! ¡Esta comunidad es genial! ¡Gracias!
Peter Kirby

10

En mis días de analista de datos, este tipo de problema era bastante típico. Básicamente, todo el mundo en marketing tendría una idea loca de que se vendió a los superiores como el evento único que aumentaría los KPI en un 2000%. Los superiores los aprobarían y luego comenzarían su "prueba". Los resultados regresarían, y la administración los arrojaría a los analistas de datos para determinar qué funcionó y quién lo hizo.

La respuesta corta es que realmente no puede saber si no se ejecutó como una prueba de estilo A / B aleatoria en períodos de tiempo similares. Pero soy muy consciente de cuán deficiente es esa respuesta, especialmente si el hecho de que no exista una respuesta pura es irrelevante para la urgencia de futuras decisiones comerciales. Estas son algunas de las técnicas que usaría para salvar el análisis en esta situación, tenga en cuenta que esto es más un arte que una ciencia.

Manejas

Un identificador es algo que existe en los datos que puede conservar. Por lo que me está diciendo en su situación, tiene mucha información sobre quién es la agencia de marketing, cuándo probaron una táctica y a qué sitio la aplicaron. Estos son su punto de partida e información como esta será la piedra angular de su análisis.

Metodología

Probablemente, la metodología tendrá el mayor impacto sobre qué agencias reciben crédito por todas y cada una de las ganancias, por lo que tendrá que asegurarse de que se detalla claramente y todos los interesados ​​están de acuerdo en que tiene sentido. Si no puede hacerlo, será difícil para las personas confiar en su análisis.

Un ejemplo de esto son las conversiones. Supongamos que el departamento de marketing compra algunos clientes potenciales y llegan a nuestra página de destino, los rastrearíamos durante 3 días; si realizaran una compra dentro de ese tiempo, los consideraríamos convertidos. ¿Por qué 3 días, por qué no 5 o 1? Eso no es importante siempre que todos estén de acuerdo, ahora tiene una definición a partir de la cual puede construir.

Comparaciones

En un ideal, tendrías una buena prueba A / B para demostrar una relación definitiva, voy a suponer que te estás quedando sin esos, aún así, puedes aprender algo de una simple comparación de datos similares. Cuando las empresas intentan determinar la eficacia de la publicidad por radio, a menudo publican anuncios en meses compensados ​​en el mismo mercado, o durante varios meses en un mercado y lo comparan con los resultados en un mercado separado pero similar. No pasa por la ciencia, pero incluso con todo ese ruido, los resultados fuertes casi siempre se notarán.

Los combinaría en su caso para determinar cuánto tiempo se da un evento para registrar un efecto. Una vez que tenga los datos de ese período de tiempo, compárelos con su predicción de tráfico modelada, el crecimiento de semana a semana, mes a mes, etc. Lo cual puede permitir una comparación significativa entre agencias y períodos de tiempo.

Pragmatismo

La aspiración es poder proporcionar una comprensión profunda de la causa y el efecto, pero probablemente no sea realista. Debido a lo desordenados factores externos que hacen su análisis, constantemente se encontrará con la pregunta una y otra vez: ¿Este evento aumentó el volumen / ventas / clics, o hacer algo habría tenido el mismo efecto? El mejor consejo que puedo dar para esto es establecer metas muy realistas para lo que está buscando medir. Un buen punto de partida es, dentro de la metodología que tiene, qué evento tuvo el mayor impacto. Una vez que haya abierto su apertura desde allí.

Resumen

Una vez que haya razonado todos estos aspectos, puede comenzar a construir una solución general que luego pueda automatizarse. La ventaja de diseñar su solución de esta manera es que la lógica empresarial ya está integrada. Esto hará que sus resultados sean mucho más accesibles e intuitivos para los líderes empresariales no técnicos.


@ 1 para chicos locos de marketing. Trabajar en la investigación de mercado y el cambio en las estadísticas pobres me pone triste ...
Christian Sauer

2

Editar: Advertencia, dejo mi mensaje pero mi respuesta parece incorrecta, ¡mira el comentario a continuación!

No soy un experto, pero supongo que el principal problema es responder a esta pregunta:

¿Ha afectado algún evento la cantidad de visitas en un día determinado?

Pero no sé cómo tratar múltiples eventos, por lo que trataría de responder esta pregunta:

  • ¿El evento X afectó el número de visitas en un día determinado?

Lo que se puede responder usando pruebas de hipótesis con valores p (lo que hacen los científicos para evaluar, por ejemplo, si un medicamento afecta o no a una enfermedad).

Al usar los valores p, podría determinar si el número de visitas en un día determinado fue meramente aleatorio y aceptable en circunstancias normales o si deben corresponder a un cambio en su modelo.

Puede leer más sobre los valores p en la Introducción abierta al libro de estadísticas , de hecho, he aprendido sobre ellos desde allí.

Luego, las otras partes del problema son cómo identificar sus eventos y calcular los parámetros necesarios para responder a su pregunta (promedio / mediana, varianza, etc.) y también cómo mantenerlo actualizado y funcionando.


1

Hace unos años (2015), Google publicó un artículo de investigación sobre el efecto que tiene un evento específico en un modelo de serie temporal. Puede leer más detalles aquí Inferir impacto causal utilizando modelos de series temporales estructurales bayesianas .

En esta página de GitHub , puede encontrar un ejemplo detallado y una descripción de cómo funciona. En breve,

Este paquete R implementa un enfoque para estimar el efecto causal de una intervención diseñada en una serie de tiempo. Por ejemplo, ¿cuántos clics diarios adicionales fueron generados por una campaña publicitaria? Responder una pregunta como esta puede ser difícil cuando un experimento aleatorio no está disponible.

Entrena su modelo con datos previos al evento y posteriores al evento y obtiene una trama como esta

ingrese la descripción de la imagen aquí

El primer panel muestra los datos y una predicción contrafactual para el período posterior al tratamiento. El segundo panel muestra la diferencia entre los datos observados y las predicciones contrafácticas. Este es el efecto causal puntual, según lo estimado por el modelo. El tercer panel suma las contribuciones puntuales del segundo panel, lo que resulta en una gráfica del efecto acumulativo de la intervención.

Al ejecutar lo siguiente summary(impact), obtiene un resumen y el impacto estimado que tuvo el evento en sus datos de series de tiempo.

La misma biblioteca también se ha portado a Python. Por ejemplo aqui

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.