7 votos

¿Cómo se realiza una prueba estadística para el análisis de diferencia en diferencias?

Estoy tratando de analizar los resultados de dos áreas en dos diferentes puntos de tiempo. En el área se realizó una intervención, y en la zona B no lo hicimos. A continuación, pedimos a los clientes si les gustó de una parte determinada de nuestro servicio, y nosotros lo hicimos antes y después de nuestra intervención. Los clientes fueron diferentes en los dos períodos, de modo que no tenemos pares. El número de personas fuera de los encuestados que nos dio la calificación más alta son:

La zona a, hora=0: 64 de 130

La zona a, hora=1: 82 de 118

La zona B, tiempo=0: 44 de los 100

La zona B, tiempo=1: 60 de cada 100

Que a su vez da las siguientes proporciones:

A0 = 64/130 = 0.49

A1 = 82/118 = 0.69

B0 = 44/100 = 0.44

B1 = 60/100 = 0.6

De acuerdo a la diferencia en la diferencia de análisis, la estimación del efecto es:

E = [(A1-A0) - (B1-B0)] = 0.04

Pero ¿cómo puedo realizar una prueba estadística para ver si esta diferencia es significativa?

8voto

Gordon Smyth Puntos 170

La diferencia en diferencias es lo que se llama una interacción en las estadísticas (como Dimitriy Masterov ya se ha señalado). Se desea probar si el efecto del tiempo es la diferente cuando se puede intervenir en comparación con los que no.

De sus datos es la más natural de modelado como un binomio, es decir, el número de las mejores puntuaciones del total de personas encuestadas en cada área en cada instante de tiempo sigue una distribución binomial, suponiendo que todos los clientes a responder de forma independiente. El estándar método estadístico para el análisis de la interacción con el binomio de datos es ejecutar un binomio de regresión logística.

En el R, el código es la siguiente. Primera entrada de los datos:

> NTopScore <- c(64,82,44,60)
> N <- c(130,118,110,100)
> Area <- factor(c("A","A","B","B"))
> Time <- factor(c(0,1,0,1))
> Proportion <- NTopScore / N

A continuación, ajuste de la regresión logística. En el R esto se hace mediante la ejecución de un modelo lineal generalizado, y diciendo a R que los datos deben ser tratados como un binomio:

> fit <- glm(Proportion~Area*Time, family=binomial, weights=N)
> summary(fit)

Call:
glm(formula = Proportion ~ Area * Time, family = binomial, weights = N)

Deviance Residuals: 
[1]  0  0  0  0

Coefficients:
            Estimate Std. Error z value Pr(>|z|)   
(Intercept) -0.03077    0.17543  -0.175  0.86076   
AreaB       -0.37469    0.26202  -1.430  0.15271   
Time1        0.85397    0.26599   3.211  0.00132 **
AreaB:Time1 -0.04304    0.38768  -0.111  0.91160   
---
Signif. codes:  0 ‘***' 0.001 ‘**' 0.01 ‘*' 0.05 ‘.' 0.1 ‘ ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2.3047e+01  on 3  degrees of freedom
Residual deviance: 7.1054e-15  on 0  degrees of freedom
AIC: 28.523

Number of Fisher Scoring iterations: 3

Vemos que el valor de p para la interacción (diferencia en diferencias) es $P=0.9116$, obviamente no es significativo.

El modelo está montado sobre una log-odds (logit) de escala. El AreaB parámetro muestra que el Área B da una menor proporción de Área en el Tiempo 0. El Tiempo1 parámetro muestra que el Tiempo 1 se da una mayor proporción de Tiempo de 0 en la Zona A. El AreaB:Tiempo1 parámetro es la diferencia en diferencias.

Otra forma de ajuste de la regresión logística es estimar el antes-después de un tiempo el efecto por separado de las áreas a y B. Esto muestra que el efecto del tiempo es prácticamente idéntico para las dos áreas, independientemente de si usted tuvo una intervención para el no:

> fit <- glm(Proportion~Area+Area:Time, family=binomial, weights=N)
> summary(fit)

Call:
glm(formula = Proportion ~ Area + Area:Time, family = binomial, 
    weights = N)

Deviance Residuals: 
[1]  0  0  0  0

Coefficients:
            Estimate Std. Error z value Pr(>|z|)   
(Intercept) -0.03077    0.17543  -0.175  0.86076   
AreaB       -0.37469    0.26202  -1.430  0.15271   
AreaA:Time1  0.85397    0.26599   3.211  0.00132 **
AreaB:Time1  0.81093    0.28204   2.875  0.00404 **
---
Signif. codes:  0 ‘***' 0.001 ‘**' 0.01 ‘*' 0.05 ‘.' 0.1 ‘ ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance:  2.3047e+01  on 3  degrees of freedom
Residual deviance: -5.3291e-15  on 0  degrees of freedom
AIC: 28.523

Number of Fisher Scoring iterations: 3    

El efecto del tiempo en el Área a es 0.86397 y que en la Zona B es 0.81093. La diferencia en el tiempo de los efectos de es $0.81093 - 0.86397 = -0.04304$, que es igual a la interacción estimación que se vio en la primera regresión.

2voto

Neal Puntos 316

La solución más sencilla es utilizar la regresión lineal formulación de HECHO:

  1. La regresión en el binario valoraciones de los clientes en una constante, un puesto ficticio, un área de Un maniquí, y la interacción de los dos últimos. Puede ser apropiado agregar otros regresores características de medición que se invariante en el tiempo a nivel individual, pero cuyos cambios en la distribución a través del tiempo en el nivel de grupo. Esto puede ayudar con el significado cuestión más adelante si se empapa hasta algunos varianza residual.
  2. El DID es el coeficiente de la interacción de la post y del grupo A. Usted puede realizar la prueba de hipótesis es cero o simplemente mirar el valor de p o t-stat.
  3. Ya que el tratamiento no varía dentro de la zona, la costumbre de los errores estándar se apagará (generalmente demasiado pequeñas, pero a veces demasiado grandes, cuando el plazo de clúster de error de correlación es negativo). La solución típica es de clúster de los errores estándar por área o sección transversal, pero con sólo 2-4 clusters, que no va a funcionar bien, ya que no es suficiente clusters para la asymptotics para poner en. Realmente no tengo una gran solución para usted aquí. Stata ¿calcular algo por debajo, pero no es probable que sea fiable (incluso con el pequeño número de los grupos de ajuste). Yo sospecho que el ajuste correcto no dará importancia ya que el estándar convencional de error en el que HIZO coeficiente es tan grande. La gente a menudo el uso de la simulación en casos como este para medir cuán lejos de la SEs.

Este es el análisis de los datos:

. clear

. input area_a time noobs rating

        area_a       time      noobs     rating
  1. 1 0 64 1 
  2. 1 0 66 0
  3. 1 1 82 1 
  4. 1 1 36 0
  5. 0 0 44 1
  6. 0 0 56 0
  7. 0 1 60 1
  8. 0 1 40 0
  9. end

. egen cs = group(area_a time)

. reg rating i.area_a##i.time [fw=noobs]

      Source |       SS           df       MS      Number of obs   =       448
-------------+----------------------------------   F(3, 444)       =      6.05
       Model |  4.34181458         3  1.44727153   Prob > F        =    0.0005
    Residual |  106.149257       444  .239074903   R-squared       =    0.0393
-------------+----------------------------------   Adj R-squared   =    0.0328
       Total |  110.491071       447  .247183605   Root MSE        =    .48895

------------------------------------------------------------------------------
      rating |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
    1.area_a |   .0523077   .0650368     0.80   0.422    -.0755105    .1801259
      1.time |        .16   .0691484     2.31   0.021     .0241012    .2958988
             |
 area_a#time |
        1 1  |   .0426076   .0929871     0.46   0.647    -.1401419     .225357
             |
       _cons |        .44   .0488953     9.00   0.000     .3439051    .5360949
------------------------------------------------------------------------------

. reg rating i.area_a##i.time [fw=noobs], vce(cluster area) // or vce(cluster cs)

Linear regression                               Number of obs     =        448
                                                F(0, 1)           =          .
                                                Prob > F          =          .
                                                R-squared         =     0.0393
                                                Root MSE          =     .48895

                                 (Std. Err. adjusted for 2 clusters in area_a)
------------------------------------------------------------------------------
             |               Robust
      rating |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
    1.area_a |   .0523077   1.08e-16  4.8e+14   0.000     .0523077    .0523077
      1.time |        .16   1.01e-16  1.6e+15   0.000          .16         .16
             |
 area_a#time |
        1 1  |   .0426076   1.30e-16  3.3e+14   0.000     .0426076    .0426076
             |
       _cons |        .44   1.01e-16  4.4e+15   0.000          .44         .44
------------------------------------------------------------------------------

La interpretación del coeficiente de interacción en ambas especificaciones es una de 4,3 puntos porcentuales en la simpatía de su servicio post-intervención.

El modelo lineal tiene la ventaja de facilitar la interpretación de un efecto aditivo en una probabilidad más que un efecto multiplicativo sobre las posibilidades de registro. Por otra parte, en un no-lineal del modelo logit, la agrupación es problemático, ya que los coeficientes son identificados a escala, la única, la interpretación de las interacciones y la identificación de los supuestos pueden obtener complicado, y el HIZO no es sólo la cruz diferencia en los cuatro medios (véase el Puhani papel citados a continuación en el último punto). Finalmente, en un completamente saturado con el modelo de todas las interacciones, el logit y el modelo lineal dará idéntico punto de las estimaciones de la cruz diferencia efecto marginal (a pesar de que no es el parámetro que te importa):

. /* Cross difference to mimic OLS, but wrong */
. logit rating i.area_a##i.time [fw=noobs], nolog

Logistic regression                             Number of obs     =        448
                                                LR chi2(3)        =      17.87
                                                Prob > chi2       =     0.0005
Log likelihood = -298.57102                     Pseudo R2         =     0.0291

------------------------------------------------------------------------------
      rating |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
    1.area_a |   .2103904   .2671347     0.79   0.431    -.3131839    .7339647
      1.time |   .6466272   .2867945     2.25   0.024     .0845203    1.208734
             |
 area_a#time |
        1 1  |   .2073448   .3911528     0.53   0.596    -.5593006    .9739902
             |
       _cons |  -.2411621   .2014557    -1.20   0.231    -.6360081    .1536839
------------------------------------------------------------------------------

. margins r.area_a#r.time 

Contrasts of adjusted predictions
Model VCE    : OIM

Expression   : Pr(rating), predict()

------------------------------------------------
             |         df        chi2     P>chi2
-------------+----------------------------------
 area_a#time |          1        0.21     0.6456
------------------------------------------------

--------------------------------------------------------------------
                   |            Delta-method
                   |   Contrast   Std. Err.     [95% Conf. Interval]
-------------------+------------------------------------------------
       area_a#time |
(1 vs 0) (1 vs 0)  |   .0426076   .0926461     -.1389755    .2241906
--------------------------------------------------------------------

Creo que el correcto efecto marginal de 4,6 puntos porcentuales es dada por esta:

/* Puhani's DID Estimator */
gen at = area*time
logit rating i.area_a i.time i.at [fw=noobs], nolog
margins, at(area_a==1 time==1 at ==1) at(area_a==1 time==1 at==0) contrast(atcontrast(a._at) wald)

"El Efecto del Tratamiento, la Cruz Diferencia, y el Término de Interacción no Lineal en "Diferencia en Diferencias" Modelos de Patrick A. Puhani, Economía Letras, 2012, 115 (1), 85-87.

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