library(data.table)
library(fixest)

p <- fread('origin_month_panel_202401_202605.csv')
e <- fread('event_exposure_features.csv')
dt <- merge(p, e, by = 'origin', all.x = TRUE)
dt[, ym_index := as.integer(substr(yyyymm,1,4))*12 + as.integer(substr(yyyymm,5,6))]

# Android data-quality/fix differential effect.
dt[, rel_android_fix := ym_index - (2025*12 + 7)]
m_android <- feols(
  pass_cwv_inp ~ i(rel_android_fix, pre_android_issue_phone_density, ref = -1) |
    origin + yyyymm,
  cluster = ~ origin,
  data = dt[rel_android_fix >= -6 & rel_android_fix <= 6]
)
print(summary(m_android))

# bfcache exposure model.
dt[, bfcache_opportunity := pmax(0, pre_bfcache_back_forward_share - pre_bfcache_hit_share)]
dt[, rel_bfcache := ym_index - (2025*12 + 3)]
m_bfcache <- feols(
  pass_cwv_inp ~ i(rel_bfcache, bfcache_opportunity, ref = -1) |
    origin + yyyymm,
  cluster = ~ origin,
  data = dt[rel_bfcache >= -6 & rel_bfcache <= 6]
)
print(summary(m_bfcache))

# INP scroll exclusion differential effect.
dt[, scroll_exposure := pre_scroll_phone_density * pre_scroll_inp_risk]
dt[, rel_inp_scroll := ym_index - (2024*12 + 8)]
m_scroll <- feols(
  pass_cwv_inp ~ i(rel_inp_scroll, scroll_exposure, ref = -1) |
    origin + yyyymm,
  cluster = ~ origin,
  data = dt[rel_inp_scroll >= -6 & rel_inp_scroll <= 6]
)
print(summary(m_scroll))
