1 Introduction

This report on the question evaluates whether the Disaster Management Program (DRM) increased district Net District Product (NDP) in Odisha. The empirical strategy uses Difference-in-Differences (DID) to compare treated and untreated districts before and after the program, and Triple-Difference (DDD) to test whether the effect was larger in poorer districts.

2 Data and variables

df <- read_dta("test_data.dta")

df <- df %>%
  mutate(
    treat = vulnerability_rank < 17,
    post  = year >= 2003,
    poor  = share_margworker > 0.10
  )

summary(df)
##  districts_name          year       heavyrain_yr        flood_yr     
##  Length:390         Min.   :1998   Min.   :0.00000   Min.   :0.0000  
##  Class :character   1st Qu.:2001   1st Qu.:0.00000   1st Qu.:0.0000  
##  Mode  :character   Median :2004   Median :0.00000   Median :0.0000  
##                     Mean   :2004   Mean   :0.08205   Mean   :0.2692  
##                     3rd Qu.:2007   3rd Qu.:0.00000   3rd Qu.:1.0000  
##                     Max.   :2010   Max.   :1.00000   Max.   :1.0000  
##    drought_yr       cyclone_yr        nu_shwd_i        population     
##  Min.   :0.0000   Min.   :0.00000   Min.   : 0.000   Min.   : 254169  
##  1st Qu.:0.0000   1st Qu.:0.00000   1st Qu.: 0.000   1st Qu.: 671280  
##  Median :0.0000   Median :0.00000   Median : 1.000   Median :1195403  
##  Mean   :0.1282   Mean   :0.07692   Mean   : 3.762   Mean   :1252992  
##  3rd Qu.:0.0000   3rd Qu.:0.00000   3rd Qu.: 6.750   3rd Qu.:1603948  
##  Max.   :1.0000   Max.   :1.00000   Max.   :26.000   Max.   :3375738  
##   district_ndp    coastal_dummy     share_aglab      share_otworker   
##  Min.   : 24588   Min.   :0.0000   Min.   :0.04782   Min.   :0.05927  
##  1st Qu.: 87442   1st Qu.:0.0000   1st Qu.:0.08498   1st Qu.:0.07496  
##  Median :145589   Median :0.0000   Median :0.12961   Median :0.09380  
##  Mean   :189637   Mean   :0.2333   Mean   :0.13017   Mean   :0.10175  
##  3rd Qu.:232938   3rd Qu.:0.0000   3rd Qu.:0.16695   3rd Qu.:0.12279  
##  Max.   :955390   Max.   :1.0000   Max.   :0.22794   Max.   :0.21852  
##  share_margworker  vulnerability_rank   treat            post        
##  Min.   :0.04829   Min.   : 1.0       Mode :logical   Mode :logical  
##  1st Qu.:0.07807   1st Qu.: 8.0       FALSE:182       FALSE:150      
##  Median :0.13406   Median :15.5       TRUE :208       TRUE :240      
##  Mean   :0.12337   Mean   :15.5                                      
##  3rd Qu.:0.15843   3rd Qu.:23.0                                      
##  Max.   :0.20763   Max.   :30.0                                      
##     poor        
##  Mode :logical  
##  FALSE:133      
##  TRUE :257      
##                 
##                 
## 

2.1 Variable definitions

  • district_ndp: outcome variable measuring district economic performance.
  • treat: equals TRUE for districts with vulnerability rank below 17; these are the DRM districts.
  • post: equals TRUE for years 2003 and later; this captures the post-program period.
  • poor: equals TRUE for districts with share of marginal workers greater than 10%; this identifies poorer districts.

3 Pre-trend check

Before using DID, it is necessary to assess the parallel trends assumption. This assumption requires that, in the absence of treatment, treated and untreated districts would have followed similar trends over time.

A complete proof of parallel trends is not possible, but it is standard to examine whether the treated and control groups display broadly similar movement before the intervention. This report does that in two ways: a pre-period growth comparison and a pre-treatment trend graph.

3.1 Pre-period growth rates

pre_growth_correct <- df %>%
  filter(year < 2003) %>%
  group_by(treat, year) %>%
  summarise(mean_ndp = mean(district_ndp, na.rm = TRUE), .groups = "drop") %>%
  arrange(treat, year) %>%
  group_by(treat) %>%
  summarise(
    start_ndp = first(mean_ndp),
    end_ndp = last(mean_ndp),
    growth_rate = (end_ndp - start_ndp) / start_ndp,
    .groups = "drop"
  )

pre_growth_correct

3.1.1 Interpretation of pre-period growth

The control districts show pre-period growth of about 33.0%, while treated districts show growth of about 36.5%. The difference is small in magnitude, which supports the use of DID, although it should be treated as supportive evidence rather than definitive proof.

3.2 Pre-treatment trend graph

pre_trends <- df %>%
  filter(year < 2003) %>%
  group_by(year, treat) %>%
  summarise(
    mean_ndp = mean(district_ndp, na.rm = TRUE),
    n = n(),
    .groups = "drop"
  )

ggplot(pre_trends, aes(x = year, y = mean_ndp, color = factor(treat), group = treat)) +
  geom_line(linewidth = 1.1) +
  geom_point(size = 2.5) +
  labs(
    title = "Pre-2003 Trends: Treated vs Control",
    subtitle = "Visual check for parallel trends",
    x = "Year",
    y = "Mean District NDP",
    color = "Group (0=Control, 1=Treated)"
  ) +
  theme_minimal()

4 DID model - Answer 1

4.1 Model specification

The DID regression is:

\[ \text{district\_ndp}_{it} = \beta_0 + \beta_1 \text{treat}_i + \beta_2 \text{post}_t + \beta_3 (\text{treat}_i \times \text{post}_t) + u_{it} \]

The coefficient of interest is \(\beta_3\). This coefficient measures the additional change in NDP for treated districts after the DRM program, relative to untreated districts.

4.2 Estimation

did_model <- lm(district_ndp ~ treat * post, data = df)
did_results <- coeftest(did_model, vcov = vcovHC(did_model, type = "HC1"))
did_results
## 
## t test of coefficients:
## 
##                    Estimate Std. Error t value  Pr(>|t|)    
## (Intercept)         90699.6     6637.5 13.6646 < 2.2e-16 ***
## treatTRUE           36368.1     9432.9  3.8554 0.0001353 ***
## postTRUE            62303.8    11966.2  5.2067 3.133e-07 ***
## treatTRUE:postTRUE 125531.9    21238.3  5.9106 7.498e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

4.3 Interpretation of DID results

The coefficient on treatTRUE:postTRUE is 125531.9. This means that, after accounting for common time changes and the baseline difference between treated and untreated districts, the DRM program is associated with an increase of about 125,532 in district NDP for treated districts.

This coefficient is highly statistically significant with p-value 7.498e-09, which is far below 0.01. Therefore, the null hypothesis of no treatment effect is rejected at the 1% significance level. Economically and statistically, this suggests a strong positive association between DRM and district output.

The positive coefficient on treatTRUE indicates that treated districts already had higher average NDP before the program. The positive coefficient on postTRUE indicates that NDP rose over time even in the control group. The DID term is important because it measures the extra increase in treated districts beyond these two general patterns.

5 DDD model - Ans(2)

The second question asks whether the DRM effect was larger for poorer districts. DID alone cannot answer that directly, so a triple interaction term is introduced.

5.1 Model specification

\[ \text{district\_ndp}_{it} = \beta_0 + \beta_1 \text{treat}_i + \beta_2 \text{post}_t + \beta_3 \text{poor}_i + \beta_4 (\text{treat}_i \times \text{post}_t) + \beta_5 (\text{treat}_i \times \text{poor}_i) + \beta_6 (\text{post}_t \times \text{poor}_i) + \beta_7 (\text{treat}_i \times \text{post}_t \times \text{poor}_i) + u_{it} \]

The main parameter of interest is \(\beta_7\), the triple-difference estimator.

5.2 Estimation

ddd_model <- lm(district_ndp ~ treat * post * poor, data = df)
ddd_results <- coeftest(ddd_model, vcov = vcovHC(ddd_model, type = "HC1"))
ddd_results
## 
## t test of coefficients:
## 
##                             Estimate Std. Error t value  Pr(>|t|)    
## (Intercept)                  79785.2    10011.1  7.9697 1.854e-14 ***
## treatTRUE                    48415.2    11289.8  4.2884 2.282e-05 ***
## postTRUE                     65465.8    15196.3  4.3080 2.098e-05 ***
## poorTRUE                     13172.5    12659.1  1.0406    0.2987    
## treatTRUE:postTRUE          104920.0    25342.4  4.1401 4.275e-05 ***
## treatTRUE:poorTRUE          -15438.0    18486.8 -0.8351    0.4042    
## postTRUE:poorTRUE            -4032.9    20636.5 -0.1954    0.8452    
## treatTRUE:postTRUE:poorTRUE  38932.8    40764.1  0.9551    0.3401    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

5.3 Interpretation of DDD results

The coefficient on treatTRUE:postTRUE:poorTRUE is 38932.8. This means that poorer treated districts experienced an additional increase of about 38,933 in district NDP relative to the DID effect for non-poor districts.

However, the p-value is 0.3401, which is much larger than conventional significance levels such as 10%, 5%, or 1%. Therefore, the null hypothesis that the additional effect for poorer districts is zero cannot be rejected. In substantive terms, the point estimate is positive, but the evidence is not strong enough to conclude that poorer districts benefited significantly more than other treated districts.

6 Mean outcomes by group

This table helps connect the regression results to raw averages. It shows how average district NDP differs across treatment status, time period, and poverty status.

df %>%
  group_by(treat, post, poor) %>%
  summarise(
    mean_ndp = mean(district_ndp, na.rm = TRUE),
    n = n(),
    .groups = "drop"
  )

6.1 Why this table is useful

This table provides a descriptive summary before interpreting the regression coefficients. It shows that average NDP is higher in treated districts than in control districts and that post-treatment NDP is higher than pre-treatment NDP. It also shows that treated-poor districts after treatment have notably high mean NDP, but regression analysis is still necessary because raw means alone do not separate treatment effects from time effects and initial group differences.

7 Event-study style graph

The event-study style graph plots average NDP relative to the treatment year 2003. It is used to visually inspect how the treated and control groups evolve around the intervention year.

event_data <- df %>%
  mutate(rel_year = year - 2003) %>%
  group_by(rel_year, treat) %>%
  summarise(
    mean_ndp = mean(district_ndp, na.rm = TRUE),
    n = n(),
    .groups = "drop"
  )
ggplot(event_data, aes(x = rel_year, y = mean_ndp, color = factor(treat), group = treat)) +
  geom_line(linewidth = 1.1) +
  geom_point(size = 2.5) +
  geom_vline(xintercept = 0, linetype = "dashed", color = "red", linewidth = 1) +
  labs(
    title = "Event Study: 2003 Treatment",
    x = "Years relative to 2003",
    y = "Mean District NDP",
    color = "Group"
  ) +
  theme_minimal()

7.1 Interpretation of the event-study graph

The red dashed line marks the beginning of the post-treatment period. The treated group appears to pull away more strongly after 2003, which is consistent with a positive treatment effect. At the same time, this graph should be used as descriptive support rather than as a formal event-study regression, because it is based on grouped means rather than a full leads-and-lags model.

8 Overall interpretation

The DID results provide strong evidence that the DRM program increased district NDP in treated districts. The effect is large and statistically significant, suggesting that disaster management efforts may have reduced economic losses and improved output performance.

The DDD results suggest a positive additional effect in poorer districts, but this coefficient is not statistically significant. Therefore, the evidence does not support a confident claim that poorer districts benefited more than other treated districts, even though the point estimate is positive.

Taken together, the most defensible conclusion is that the DRM program had a positive average effect on district NDP, while the evidence for stronger gains in poorer districts remains weak.

For this report, the DID effect is highly significant, while the DDD triple interaction is not statistically significant. This distinction is important because it means the evidence is strong for the average DRM effect, but not strong for the claim of an especially large effect in poorer districts.

9 Conclusion

This analysis uses DID because the policy created treated and untreated districts over time, making it possible to compare changes rather than only levels. DDD is added because the research question also asks whether poorer districts benefited more from the policy.

The main result is that DRM is associated with a large and statistically significant increase in district NDP in treated districts. The estimated DID effect is about 125,532 and is significant at the 1% level. The DDD estimate is positive but statistically insignificant, so the report does not find strong evidence that poorer districts experienced a significantly larger benefit.

Overall, the evidence supports the conclusion that DRM improved economic outcomes on average in treated districts, while the hypothesis of a stronger effect for poorer districts is not convincingly supported by the data.