Pregunta 1

La base de datos consiste en un panel anual de cárceles estadounidenses observado entre 2008 y 2019. La unidad de análisis es la cárcel, identificada mediante el identificador único id, lo que permite seguir cada instalación a lo largo del tiempo. La información se encuentra organizada a nivel cárcel-año, por lo que cada observación corresponde a una cárcel específica en un año determinado.

La variable de resultado principal es la tasa anual de mortalidad. La carcel se cosidera tratada cuando utiliza un proveedor medico privado. Cuando una cárcel privatiza durante un año calendario, dicho año se codifica como tratado.

Estructura del panel
Caracteristica Valor
Observaciones totales 6276
Cárceles únicas 523
Estados 45
Periodo 2008-2019
Clasificación de cárceles según trayectoria de tratamiento
treatment_path N
always-treated 230
never-treated 166
switcher-clean 98
switcher-reverter 27
Muestra analítica principal para DiD
Concepto N
Switcher-clean identificados 98
Excluidos por falta de variación útil en años con mortality rate observado 2
Switcher-clean finales 96
Muestra final
Caracteristica Valor
Observaciones en muestra DiD 1152
Cárceles switcher-clean finales 96
Periodo 2008-2019

1.B

Número de cárceles switcher-clean que privatizan el servicio de salud por año
year carceles_que_privatizan
2009 6
2010 11
2011 7
2012 11
2013 10
2014 12
2015 8
2016 8
2017 12
2018 3
2019 8

Pregunta 2

Si solo observas 2008 y 2015, el grupo tratado debe ser el conjunto de cárceles switcher-clean que ya privatizaron a más tardar en 2015 (cohortes 2009–2015). Las cárceles que privatizan después de 2015 (2016–2019) todavía no están tratadas en 2015 y no deben entrar al grupo tratado. Como grupo control, lo más natural es usar las never-treated.

Tabla 2x2 para DiD simple: tasa de mortalidad por cada 1,000 internos
did_group media_mortalidad_2008 media_mortalidad_2015 n_carceles_2008 n_carceles_2015 diferencia
Control 0.770 1.550 148 164 0.781
Tratadas 0.918 1.305 61 67 0.388
ATT estimado con DiD simple
Estimador Valor
ATT DiD simple -0.393

Entre 2008 y 2015, las cárceles que privatizaron su servicio de salud experimentaron una disminución relativa de aproximadamente 0.392 muertes por cada 1,000 internos respecto a la evolución observada en las cárceles que nunca privatizaron.

Pregunta 3

La especificación utiliza efectos fijos de cárcel y de año. Los efectos fijos de cárcel controlan por todas las características invariables en el tiempo de cada instalación, como tamaño, ubicación geográfica, infraestructura, calidad histórica de los servicios médicos y composición promedio de la población encarcelada. Los efectos fijos de año capturan shocks agregados que afectan simultáneamente a todas las cárceles entre 2008 y 2015. No incluyo efectos fijos de estado ni de FIPS porque estas variables son constantes dentro de cada cárcel y quedan completamente absorbidas por los efectos fijos de cárcel. Los errores estándar se agrupan a nivel cárcel, ya que el tratamiento se asigna a ese nivel y es razonable esperar correlación serial de los errores dentro de una misma instalación a través del tiempo. Esta estrategia sigue la lógica de identificación del artículo, que explota cambios dentro de la misma cárcel antes y después de la privatización.

Estimación DiD con efectos fijos de cárcel y año
DiD 2008-2015
Errores estándar agrupados por cárcel entre paréntesis.
Privatización del servicio médico −0.507
(0.375)
Observaciones 418
0.570
R² within 0.007

La columna reporta una estimación DiD con efectos fijos de cárcel y año. El coeficiente de privatización es −0.507, lo que implica que, entre 2008 y 2015, las cárceles tratadas presentan una reducción relativa de aproximadamente 0.51 muertes por cada 1,000 internos respecto al grupo de comparación. No obstante, el efecto no es estadísticamente significativo, pues el error estándar agrupado por cárcel es 0.375. La falta de significancia estadística no parece deberse a una especificación incorrecta. Los efectos fijos de cárcel y año son apropiados dado el diseño DiD y los errores estándar agrupados por cárcel son consistentes con el nivel de asignación del tratamiento. Una explicación más plausible es la limitada potencia estadística del ejercicio. Al utilizar únicamente los años 2008 y 2015 se pierde gran parte de la variación temporal disponible en el panel y se agrupan cárceles con diferentes duraciones de exposición al tratamiento.

Pregunta 4

El principal problema identificado por la nueva literatura surge cuando se utilizan múltiples periodos y adopción escalonada del tratamiento, ya que unidades tratadas tempranamente pueden actuar como controles para unidades tratadas tardíamente. Esto puede generar ponderaciones negativas y hacer que el estimador TWFE no identifique un promedio causal interpretable cuando los efectos son heterogéneos en el tiempo.

Sin embargo, en este ejercicio únicamente observamos dos periodos (2008 y 2015) y definimos el grupo tratado como las cárceles que ya habían privatizado para 2015, mientras que el grupo de comparación está compuesto exclusivamente por cárceles never-treated. En consecuencia, no existe el problema de utilizar unidades ya tratadas como grupo de control para otras unidades tratadas.

Lo que sí ocurre es que el estimador recupera una combinación de efectos correspondientes a distintas cohortes de tratamiento (2009, 2010, …, 2015), observadas con diferentes duraciones de exposición al tratamiento. Por ello, el parámetro estimado debe interpretarse como un ATT promedio agregado y no como un efecto dinámico específico para una cohorte o duración determinada.

Por lo tanto, aunque sabemos que la privatización fue staggered, la estimación realizada sigue siendo válida como un DiD utilizando never-treated como grupo de control. La principal limitación no es el sesgo por ponderaciones negativas señalado por la nueva literatura, sino la pérdida de información sobre la heterogeneidad temporal de los efectos y sobre las diferencias entre cohortes de adopción. Si hubiera utilizado TWFE con todos los años del panel, entonces sí me preocuparía por los problemas documentados por la literatura. Pero al colapsar el análisis a una comparación 2008–2015 contra never-treated, el problema desaparece prácticamente.

Pregunta 5

TWFE ATT

## NOTES: 306 observations removed because of NA values (LHS: 245, RHS: 119).
##        1/0 fixed-effect singleton was removed (1 observation).
Estimaciones DiD y TWFE
DiD 2008-2015 TWFE 2008-2019
Errores estándar agrupados por cárcel.
Privatización del servicio médico −0.507 −0.116
(0.375) (0.118)
Observaciones 418 5969
0.570 0.201
R² within 0.007 0.000

Dado que la adopción es staggered, este estimador puede mezclar comparaciones entre cohortes tratadas tempranamente y tardíamente, por lo que no necesariamente identifica un ATT causal bien definido bajo heterogeneidad de efectos.

Event Study TWFE

Los coeficientes previos al tratamiento permiten evaluar tendencias paralelas. Como los coeficientes pre-tratamiento son cercanos a cero y estadísticamente insignificantes, la evidencia es consistente con parallel trends. Los coeficientes posteriores al tratamiento muestran la evolución dinámica del efecto de la privatización sobre la mortalidad. Sin embargo, debido a que la adopción es staggered, esta gráfica TWFE puede sufrir los problemas identificados por la nueva literatura y es preferible utilizar estimadores adaptados a este tipo de contexto, como Callaway y Sant’Anna.

Pregunta 6

Para el $ ^{ATT}(2013-2015) $, la comparacion es \(\tau_{ATT}(2013, 2015) = \left[ \bar{Y}_{2015}^{G=2013} - \bar{Y}_{2012}^{G=2013} \right] - \left[ \bar{Y}_{2015}^{Never} - \bar{Y}_{2012}^{Never} \right]\)

Se usa 2012 como periodo pretratamiento porque para la cohorte g=2013, el año anterior al tratamiento es g−1=2012.

Tabla para ATT(2013, 2015): cohorte 2013 vs never-treated
grupo_cs media_mortalidad_2012 media_mortalidad_2015 n_carceles_2012 n_carceles_2015 cambio
Cohorte tratada: G = 2013 0.816 0.453 10 10 -0.362
Never-treated 1.425 1.548 163 163 0.123
cambio_tratadas <- tabla_cs_2x2 %>%
  filter(grupo_cs == "Cohorte tratada: G = 2013") %>%
  pull(cambio)

cambio_never <- tabla_cs_2x2 %>%
  filter(grupo_cs == "Never-treated") %>%
  pull(cambio)

tau_att_2013_2015 <- cambio_tratadas - cambio_never

resultado_tau_att <- tibble(
  Parametro = "tau_ATT(2013, 2015)",
  Grupo_tratado = "Cárceles que privatizan en 2013",
  Grupo_control = "Never-treated",
  Pre = 2012,
  Post = 2015,
  ATT = tau_att_2013_2015
)

kable(
  resultado_tau_att,
  digits = 3,
  caption = "Estimador tau_ATT(2013, 2015)"
)
Estimador tau_ATT(2013, 2015)
Parametro Grupo_tratado Grupo_control Pre Post ATT
tau_ATT(2013, 2015) Cárceles que privatizan en 2013 Never-treated 2012 2015 -0.485

Para las cárceles que privatizaron en 2013, en 2015 la privatización se asocia con una reducción relativa de aproximadamente 0.49 muertes por cada 1,000 internos, comparado con el cambio observado entre 2012 y 2015 en las cárceles que nunca privatizaron

Pregunta 7

La figura 3 presenta un event study robusto tipo Callaway & Sant’Anna. El eje horizontal presenta \(e=t-g\) donde \(g\) es el año en que una carcel privatiza por primera vez y \(t\) es el año calendario. Cada punto es el promedio de $ (g,g+e)$ para todas las cohortes que permiten observar \(e\) años después del tratamiento.

## Warning in did_standarization(data, args): 42 units are missing in some
## periods. Converting to balanced panel by dropping them.
## Warning in did_standarization(data, args): Be aware that there are some small groups in your dataset.
##   Check groups: 2018.
## Warning in att_gt(yname = "mortality_rate", tname = "year", idname = "id", :
## Not returning pre-test Wald statistic due to singular covariance matrix

## # A tibble: 21 × 5
##    event_time     att    se  lower upper
##         <dbl>   <dbl> <dbl>  <dbl> <dbl>
##  1        -11  3.14   3.04  -2.81  9.09 
##  2        -10  0.630  0.730 -0.801 2.06 
##  3         -9 -0.0515 0.545 -1.12  1.02 
##  4         -8  0.880  0.977 -1.03  2.79 
##  5         -7  0.132  0.388 -0.628 0.892
##  6         -6  0.598  0.453 -0.290 1.49 
##  7         -5  0.346  0.383 -0.404 1.10 
##  8         -4  0.179  0.513 -0.827 1.19 
##  9         -3  0.191  0.491 -0.772 1.15 
## 10         -2 -0.249  0.295 -0.826 0.329
## # ℹ 11 more rows

## # A tibble: 21 × 5
##    event_time     att     se  lower  upper
##         <dbl>   <dbl>  <dbl>  <dbl>  <dbl>
##  1        -10 -0.843   0.920 -2.65   0.960
##  2         -9 -0.463   0.504 -1.45   0.524
##  3         -8  0.247   0.738 -1.20   1.69 
##  4         -7 -0.284   0.370 -1.01   0.441
##  5         -6  0.0502  0.458 -0.847  0.947
##  6         -5  0.108   0.364 -0.605  0.821
##  7         -4  0.0155  0.427 -0.821  0.852
##  8         -3 -0.115   0.394 -0.886  0.657
##  9         -2 -0.343   0.291 -0.914  0.227
## 10         -1  0      NA     NA     NA    
## # ℹ 11 more rows

La Figura replica razonablemente el patrón encontrado en el artículo. Los coeficientes previos al tratamiento oscilan alrededor de cero y sus intervalos de confianza incluyen al valor nulo, lo que visualmente es consistente con ausencia de efectos anticipatorios. Posteriormente a la privatización, los efectos estimados son predominantemente negativos, sugiriendo una posible reducción en la tasa de mortalidad.

Pregunta 8

Tres años después de privatizar el servicio médico, las cárceles que privatizaron presentan una tasa de mortalidad aproximadamente 0.233 muertes por cada 1,000 internos menor que la que habrían experimentado en ausencia de privatización, utilizando como grupo de comparación a las cárceles nunca privatizadas. En términos causales, este coeficiente representa el efecto promedio del tratamiento para las cárceles tratadas tres años después de la privatización.

La gráfica evalúa principalmente el supuesto de Parallel Trends. En este contexto implica que en ausencia de privatización, las cárceles que eventualmente privatizarían y las cárceles nunca privatizadas habrían seguido trayectorias similares en la tasa de mortalidad antes del tratamiento.

La evidencia de la gráfica no muestra violaciones evidentes al supuesto de tendencias paralelas. Los coeficientes previos al tratamiento son pequeños y generalmente indistinguibles de cero, lo que sugiere que las cárceles tratadas y las nunca tratadas presentaban comportamientos similares antes de la privatización.

Pregunta 9

a. Replicacion de τ ATT(2013-2015)

La idea es:

  1. Estimar el contrafactual usando únicamente las observaciones que nunca han sido tratadas (never-treated) y aquellas que aún no han sido tratadas (not-yet-treated).

  2. Predecir el resultado potencial en ausencia de tratamiento para cada unidad: \[\widehat{Y}_{it}^{C} = \widehat{\alpha}_i + \widehat{\delta}_t\]

  3. Calcular el efecto del tratamiento para cada observación tratada individualmente, restando el contrafactual estimado del valor observado: \[\widehat{\tau}_{it} = Y_{it} - \widehat{Y}_{it}^{C}\]

  4. Agregar los efectos individuales calculados en el paso anterior para obtener el efecto promedio ponderado sobre los tratados por grupo y tiempo: \[\widehat{\tau}^{ATT}(g,t)\]

## Estimador:  -0.6760034

b. Replica figura 3

## Warning: Removed 1 row containing missing values or values outside the scale range
## (`geom_point()`).

Nota: los errores estándar reportados son aproximados (SE de la media de τ̂) y no incorporan la incertidumbre de la primera etapa de imputación. Los SEs correctos de BJS requieren bootstrap sobre ambas etapas.

El enfoque de Callaway y Sant’Anna (CS) compara cambios por cohorte y año, construyendo directamente el efecto promedio en los tratados por grupo y tiempo: \(\tau^{ATT}(g,t)\) entre las cárceles tratadas y un grupo válido de comparación.

Por otro lado, el método de Borusyak, Jaravel y Spiess (BJS) primero predice el contrafactual para cada cárcel tratada usando observaciones no tratadas o aún no tratadas: \(\widehat{Y}^C_{it}\) Y luego calcula la diferencia con respecto al valor observado: \[Y_{it} - \widehat{Y}^C_{it}\]

En la gráfica BJS, los efectos dinámicos se mantienen cerca de cero y casi todos los intervalos incluyen cero, por lo que no hay evidencia clara de que la privatización cambie sistemáticamente la mortalidad, sin embargo, si hay evidencia consistente con paralell trends. Comparada con la gráfica de CS, la conclusión es muy similar: hay poca evidencia de que el efecto de la privatización cambie con el tiempo cuando se restringe a las cárceles que recibieron al menos cuatro años de atención médica privada durante el panel.

## OLS estimation, Dep. Var.: mortality_rate
## Observations: 409
## Standard-errors: Corrected Clustered (id) 
##         Estimate Std. Error  t value  Pr(>|t|)    
## treated -1.03139   0.338026 -3.05121 0.0024281 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 2.8155   Adj. R2: 7.469e-4

Pregunta 10

Como método adicional utilizo el estimador Two-stage Difference-in-Differences (DID2S) de Gardner. La motivación es que el TWFE tradicional puede ser problemático cuando el tratamiento ocurre de manera escalonada y los efectos son heterogéneos, no solo se “limpia” la variable dependiente, sino también el indicador de tratamiento, lo que puede generar comparaciones difíciles de interpretar. Gardner corrige esto separando el procedimiento en dos etapas. Primero, usando solo observaciones no tratadas o aún no tratadas, estima los efectos fijos de cárcel y año para predecir cuál habría sido la mortalidad sin privatización. Después residualiza la mortalidad, es decir, calcula la diferencia entre la mortalidad observada y la mortalidad esperada sin tratamiento. En la segunda etapa, regresa esa mortalidad residualizada contra el indicador de privatización. Intuitivamente, DID2S pregunta si, después de quitar diferencias permanentes entre cárceles y shocks comunes por año, la privatización está asociada con una mortalidad mayor o menor a la esperada. A diferencia de Callaway & Sant’Anna, que estima directamente efectos (ATT(g,t)) por cohorte y año, y de Borusyak et al., que imputa explícitamente resultados contrafactuales, DID2S obtiene el efecto a partir de esta residualización en dos etapas.

## NOTE: 72 observations removed because of NA values (LHS: 72).
## OLS estimation, Dep. Var.: y_resid
## Observations: 2,974
## Standard-errors: Clustered (id) 
##                Estimate Std. Error   t value Pr(>|t|)    
## (Intercept)    0.005069   0.009875  0.513341 0.608159    
## rel_year::-11  1.726156   2.193562  0.786919 0.432063    
## rel_year::-10 -0.883973   0.625157 -1.414001 0.158586    
## rel_year::-9  -0.274021   0.333788 -0.820943 0.412449    
## rel_year::-8   0.462358   0.523795  0.882708 0.378229    
## rel_year::-7  -0.255367   0.212132 -1.203807 0.229785    
## rel_year::-6   0.012130   0.325598  0.037254 0.970311    
## rel_year::-5   0.077438   0.249901  0.309874 0.756911    
## rel_year::-4   0.025546   0.267474  0.095509 0.923986    
## rel_year::-3   0.038900   0.268349  0.144961 0.884857    
## rel_year::-2  -0.256461   0.173536 -1.477859 0.140684    
## rel_year::0   -0.248565   0.190420 -1.305351 0.192954    
## rel_year::1   -0.280266   0.207599 -1.350038 0.178206    
## rel_year::2   -0.334891   0.200028 -1.674223 0.095318 .  
## rel_year::3   -0.138951   0.283854 -0.489516 0.624899    
## rel_year::4   -0.127408   0.276788 -0.460308 0.645689    
## rel_year::5    0.022016   0.276055  0.079752 0.936497    
## rel_year::6   -0.477535   0.292094 -1.634867 0.103316    
## rel_year::7    0.177333   0.404291  0.438627 0.661305    
## rel_year::8   -0.111507   0.393632 -0.283278 0.777194    
## rel_year::9    0.942893   0.722147  1.305682 0.192842    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## RMSE: 2.40646   Adj. R2: -0.002002
event_manual_tbl <- tidy(
  did2s_manual_event,
  conf.int = TRUE,
  conf.level = 0.95
) %>%
  filter(str_detect(term, "rel_year")) %>%
  mutate(
    event_time = as.numeric(str_extract(term, "-?\\d+"))
  ) %>%
  filter(!is.na(event_time)) %>%
  arrange(event_time)

event_manual_tbl %>%
  select(event_time, estimate, std.error, conf.low, conf.high) %>%
  kable(
    digits = 3,
    caption = "Event study DID2S manual"
  )
Event study DID2S manual
event_time estimate std.error conf.low conf.high
-11 1.726 2.194 -2.594 6.046
-10 -0.884 0.625 -2.115 0.347
-9 -0.274 0.334 -0.931 0.383
-8 0.462 0.524 -0.569 1.494
-7 -0.255 0.212 -0.673 0.162
-6 0.012 0.326 -0.629 0.653
-5 0.077 0.250 -0.415 0.570
-4 0.026 0.267 -0.501 0.552
-3 0.039 0.268 -0.490 0.567
-2 -0.256 0.174 -0.598 0.085
0 -0.249 0.190 -0.624 0.126
1 -0.280 0.208 -0.689 0.129
2 -0.335 0.200 -0.729 0.059
3 -0.139 0.284 -0.698 0.420
4 -0.127 0.277 -0.672 0.418
5 0.022 0.276 -0.522 0.566
6 -0.478 0.292 -1.053 0.098
7 0.177 0.404 -0.619 0.974
8 -0.112 0.394 -0.887 0.664
9 0.943 0.722 -0.479 2.365
ggplot(event_manual_tbl, aes(x = event_time, y = estimate)) +
  geom_point(size = 2) +
  geom_errorbar(
    aes(ymin = conf.low, ymax = conf.high),
    width = 0.15
  ) +
  geom_hline(yintercept = 0, linetype = "dashed") +
  geom_vline(xintercept = -0.5, linetype = "dotted") +
  labs(
    title = "Event study DID2S manual",
    x = "Years relative to treatment",
    y = "ATT (Deaths per 1,000 inmates)"
  ) +
  theme_minimal(base_size = 13)

Validación Event Study DID2S: manual vs paquete
event_time ATT_manual ATT_paquete diferencia
-11 1.726156 1.731226 -0.005069
-10 -0.883973 -0.878903 -0.005069
-9 -0.274021 -0.268951 -0.005069
-8 0.462358 0.467427 -0.005069
-7 -0.255367 -0.250297 -0.005069
-6 0.012130 0.017199 -0.005069
-5 0.077438 0.082507 -0.005069
-4 0.025546 0.030616 -0.005069
-3 0.038900 0.043970 -0.005069
-2 -0.256461 -0.251392 -0.005069
0 -0.248565 -0.108835 -0.139730
1 -0.280266 -0.299916 0.019649
2 -0.334891 -0.297410 -0.037482
3 -0.138951 -0.180608 0.041656
4 -0.127408 -0.233361 0.105953
5 0.022016 -0.163438 0.185454
6 -0.477535 -0.483831 0.006296
7 0.177333 0.378092 -0.200759
8 -0.111507 -0.350053 0.238546
9 0.942893 0.019194 0.923699
Estimaciones con adopción escalonada
TWFE 2008-2019 DID2S Gardner
Errores estándar agrupados por cárcel.
treated −0.116
(0.118)
treated = 1 −0.203
(0.159)
Num.Obs. 5969 3036
R2 0.201 0.001
R2 Adj. 0.124 0.001
R2 Within 0.000
R2 Within Adj. −0.000
AIC 26942.3 13972.8
BIC 30490.3 13978.8
RMSE 2.12 2.42
FE: id X
FE: year X

Como nota metodológica, la implementación manual y el paquete did2s no coinciden exactamente porque no utilizan la misma muestra efectiva. En la versión manual se eliminan algunas observaciones para las cuales no se puede generar una predicción válida en la primera etapa, es decir, observaciones donde no se puede construir adecuadamente la mortalidad esperada sin tratamiento. En cambio, el paquete maneja internamente estas observaciones de forma distinta. Por eso, aunque ambos estimadores tienen la misma lógica y una interpretación económica muy similar, los valores puntuales no son idénticos. Esta diferencia no refleja un problema conceptual del método, sino una diferencia práctica en el manejo de la residualización, las observaciones faltantes y la muestra usada en la estimación.