1 votos

Análisis de los recuentos con la tasa de éxito cambiante

Tengo un gran número de locales, digamos que son tiendas. En cada tienda, $N_{it} \sim Pois(n_i)$ personas pasan por la puerta cada semana. Conocemos el $n_i$ para cada lugar.

De la $N_{it}$ una cierta proporción $P_{i}$ comprará algo. Digamos que un reloj despertador. Medimos el número de personas que hacen una compra $c_{it} \sim B(N_{it}, P_{i})$ .

Sin embargo, para complicar las cosas, la probabilidad de conversión no es constante, sino que es una función del tiempo. Parece ser algo que se aproxima a una curva logística para cada lugar, con una constante de tasa diferente $R_i$ pero una capacidad de carga máxima global $P \approx 0.8$ porque... ¿no todo el mundo tiene electricidad? De todos modos, puede ser un modelo inadecuado para esta probabilidad, pero si nos decidimos por la aproximación logística entonces sería algo así como $$\frac{dP_{i}}{dt} = R_i P_{i} \left(1-\frac{P_{i}}{P}\right)$$

Tengo dos grupos de lugares: uno (aprox. $n = 6$ ) que reciben una intervención, y otra que no. Quiero saber si la distribución de los parámetros de la tasa parece diferente entre los dos grupos.

No tengo ni idea de cómo modelar esto. Por el momento, sólo estoy estimando las probabilidades de conversión de la semana más reciente utilizando algo como lo siguiente. A continuación, utilizo una prueba de MWW para ver si las estimaciones de las probabilidades de conversión en el grupo de intervención parecen diferentes a las estimaciones de las probabilidades de conversión en el grupo de control.

$$\hat{p}_{it} = \frac{c_{it}}{n_i}$$

Estoy pensando que lo mejor sería modelar esto usando Stan, pero no estoy seguro de cómo hacerlo. Cualquier sugerencia (en particular las referencias en R, ya que es donde me siento más cómodo!) sería agradecido!

0voto

Mathias Schnell Puntos 482

¡Creo que he conseguido modelar esto! El código stan que utilicé está abajo.

  int<lower=0> T;                // Number of time periods
  int<lower=0> N;                // number of stores
  vector<lower=0>[N] n;          // Average number people entering a store per week n_i
  int<lower=0, upper=1> test[N]; // Whether a store is a test store or not
  int<lower=0> c[T, N];          // Number of purchases per time period
}

parameters {
  real<lower=0, upper=1> P;      // Maximum carrying capacity
  vector<lower=0>[2] r;          // Rate parameter for each group
  real<lower=0> t0[N];           // Location shift for each store's growth curve
                                 // Product introduced t=0; t0 > 0 helps with convergence
}

model {
  P ~ beta(1, 1);
  r ~ exponential(0.01);
  t0 ~ normal(0, 200);

  for (i in 1:N) {
    for (t in 1:T) {
      if (test[i] == 0)
        c[t, i] ~ poisson(P / (1 + exp(- r[1] * (t - t0[i]))) * n[i]);
      else
        c[t, i] ~ poisson(P / (1 + exp(- r[2] * (t - t0[i]))) * n[i]);
    }
  }
}

También he experimentado con sólo estimar una distribución para t0 dentro de cada grupo sustituyendo real t0[N] por vector[2] t0 en los parámetros, y luego t0[i] por t0[1] o t0[2] según corresponda en el modelo. Ambos parecen dar resultados razonables, aunque las restricciones adicionales sobre t0 parecen abrumar mi capacidad de estimar P Lo cual es interesante.

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