Temperature Data Management

Creating Database only with summer months

villes_s<-list()

for(i in 1:length(villes)) {
  villes_s[[i]]<-villes[[i]][villes[[i]]$saison=="summer",]
  villes_s[[i]]$temps <- ave(villes_s[[i]]$time,villes_s[[i]]$annee,  FUN = seq_along)
  }

names(villes_s)<-cities

table of N obs per months to check to have only summer month

for (i in 1:length(villes)){
print(table(villes_s[[i]]$mois))
}
## 
##   1   2   3   4   5   6   7   8   9  10  11  12 
##   0   0   0   0   0 480 496 496 480   0   0   0 
## 
##   1   2   3   4   5   6   7   8   9  10  11  12 
##   0   0   0   0   0 480 496 496 480   0   0   0 
## 
##   1   2   3   4   5   6   7   8   9  10  11  12 
##   0   0   0   0   0 480 496 496 480   0   0   0 
## 
##   1   2   3   4   5   6   7   8   9  10  11  12 
##   0   0   0   0   0 480 496 496 480   0   0   0 
## 
##   1   2   3   4   5   6   7   8   9  10  11  12 
##   0   0   0   0   0 480 496 496 480   0   0   0 
## 
##   1   2   3   4   5   6   7   8   9  10  11  12 
##   0   0   0   0   0 480 496 496 480   0   0   0 
## 
##   1   2   3   4   5   6   7   8   9  10  11  12 
##   0   0   0   0   0 480 496 496 480   0   0   0 
## 
##   1   2   3   4   5   6   7   8   9  10  11  12 
##   0   0   0   0   0 480 496 496 480   0   0   0 
## 
##   1   2   3   4   5   6   7   8   9  10  11  12 
##   0   0   0   0   0 480 496 496 480   0   0   0 
## 
##   1   2   3   4   5   6   7   8   9  10  11  12 
##   0   0   0   0   0 480 496 496 480   0   0   0 
## 
##   1   2   3   4   5   6   7   8   9  10  11  12 
##   0   0   0   0   0 480 496 496 480   0   0   0 
## 
##   1   2   3   4   5   6   7   8   9  10  11  12 
##   0   0   0   0   0 480 496 496 480   0   0   0 
## 
##   1   2   3   4   5   6   7   8   9  10  11  12 
##   0   0   0   0   0 480 496 496 480   0   0   0 
## 
##   1   2   3   4   5   6   7   8   9  10  11  12 
##   0   0   0   0   0 480 496 496 480   0   0   0 
## 
##   1   2   3   4   5   6   7   8   9  10  11  12 
##   0   0   0   0   0 480 496 496 480   0   0   0

Creating Heat Wave variable

## First condition for heat wave
for (i in 1:length(villes_s)){
  villes_s[[i]]$heat_wave1<-NA
  for (r in 3:nrow(villes_s[[i]])){
  villes_s[[i]]$heat_wave1[r]<-  if (villes_s[[i]]$tempmoy[r] >= trshld975[i] & villes_s[[i]]$tempmoy[r-1] >= trshld975[i] & villes_s[[i]]$tempmoy[r-2] >= trshld975[i] ) 1 else 0
  }}

## Second condition for heat wave
for (i in 1:length(villes_s)){
  for (r in 3:nrow(villes_s[[i]])){
  villes_s[[i]]$heat_wave[r]<-  if (villes_s[[i]]$heat_wave1[r] == 1 & (villes_s[[i]]$tempmoy[r] >= trshld995[i] | villes_s[[i]]$tempmoy[r-1] >= trshld995[i] | villes_s[[i]]$tempmoy[r-2] >= trshld995[i])) 1 else 0
  }}

 

Number of Heat Wave for each city:

Heat wave=0 Heat wave=1
bordeaux 1924 26
clermont 1926 24
grenoble 1914 36
lehavre 1927 23
lyon 1918 32
marseille 1915 35
montpellier 1922 28
nancy 1918 32
nantes 1926 24
nice 1924 26
paris 1923 27
rennes 1918 32
rouen 1925 25
strasbourg 1912 38
toulouse 1921 29

Propensity Score Computation

for (i in 1:length(villes_s)){
villes_s[[i]]<-na.omit(villes_s[[i]][, c("heat_wave","Jours","mois","hol","Vacances","annee", "o3", "no2","no2moy","nocc_tot", "cv_tot", "respi_tot","lag_tempmoy","lag2_tempmoy","lag3_tempmoy","no2Lag1","no2Lag2")])
}           

 
mod<-list()
for (i in 1:length(villes_s)){
mod[[i]]<-gam(heat_wave ~ Jours + mois  + hol + annee + ns(no2Lag1) + s(lag_tempmoy,k=4),family="binomial", data=villes_s[[i]])           
}           
           

aic<-c()
for (i in 1:length(villes_s)){
aic[[i]]<-AIC(mod[[i]])}           
sum(aic)
## [1] 1642.921
# avec ns,2=1623.569
# avec s,3=1621.23
# avec no2 ns,2=1645.705 mais rouen OK
# avec no2 ns,2 and lag temp k=4, 1642.921 mais rouen OK


for (i in 1:length(villes_s)){
  villes_s[[i]]$SP<-NA
  villes_s[[i]]$SP[1:nrow(villes_s[[i]])]<-mod[[i]]$fitted
  villes_s[[i]]$nrow<-c(1:nrow(villes_s[[i]]))
}
Summary Statistics for the propensity score (PS):
city Mean Min Max
bordeaux 0.0135064935142883 2.22044604925031e-16 0.999123115799312
clermont 0.0123456790179604 2.22044604925031e-16 0.999841951731324
grenoble 0.0186239006725321 2.22044604925031e-16 0.991708249541654
lehavre 0.0118373648996403 2.22044604925031e-16 0.984761164902931
lyon 0.0164102564102743 2.22044604925031e-16 0.999994169656221
marseille 0.0180041152377479 2.22044604925031e-16 0.999281854946648
montpellier 0.0144628099173605 2.22044604925031e-16 0.998291701437194
nancy 0.0164271047332731 2.22044604925031e-16 0.999970098564376
nantes 0.0123076923166059 2.22044604925031e-16 0.999999999559018
nice 0.0133470225972638 2.22044604925031e-16 0.998827163061891
paris 0.0138461538461547 2.22044604925031e-16 0.999999907935474
rennes 0.0162388685263246 2.22044604925031e-16 0.999999885089499
rouen 0.0129265770485176 2.22044604925031e-16 0.999999999875206
strasbourg 0.0195172059768729 2.22044604925031e-16 0.997217495260165
toulouse 0.0148717948784295 2.22044604925031e-16 0.999534987744366

 

Test moyenne Score de Propension Test de Student pour difference moyenne entre variable Score de Propension (x) et variable pic de pollution (y):

## [1] "bordeaux"
## 
##  Welch Two Sample t-test
## 
## data:  villes_s[[i]]$SP and villes_s[[i]]$heat_wave
## t = 2.2466e-09, df = 3762.7, p-value = 1
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.00680246  0.00680246
## sample estimates:
##  mean of x  mean of y 
## 0.01350649 0.01350649 
## 
## [1] "clermont"
## 
##  Welch Two Sample t-test
## 
## data:  villes_s[[i]]$SP and villes_s[[i]]$heat_wave
## t = 1.6487e-09, df = 3859.9, p-value = 1
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.006676794  0.006676794
## sample estimates:
##  mean of x  mean of y 
## 0.01234568 0.01234568 
## 
## [1] "grenoble"
## 
##  Welch Two Sample t-test
## 
## data:  villes_s[[i]]$SP and villes_s[[i]]$heat_wave
## t = 5.9545e-13, df = 3669.1, p-value = 1
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.007688117  0.007688117
## sample estimates:
## mean of x mean of y 
## 0.0186239 0.0186239 
## 
## [1] "lehavre"
## 
##  Welch Two Sample t-test
## 
## data:  villes_s[[i]]$SP and villes_s[[i]]$heat_wave
## t = 1.8228e-13, df = 3764.6, p-value = 1
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.006269447  0.006269447
## sample estimates:
##  mean of x  mean of y 
## 0.01183736 0.01183736 
## 
## [1] "lyon"
## 
##  Welch Two Sample t-test
## 
## data:  villes_s[[i]]$SP and villes_s[[i]]$heat_wave
## t = 4.6525e-12, df = 3841.9, p-value = 1
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.007536783  0.007536783
## sample estimates:
##  mean of x  mean of y 
## 0.01641026 0.01641026 
## 
## [1] "marseille"
## 
##  Welch Two Sample t-test
## 
## data:  villes_s[[i]]$SP and villes_s[[i]]$heat_wave
## t = 2.9808e-09, df = 3671.2, p-value = 1
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.007505261  0.007505261
## sample estimates:
##  mean of x  mean of y 
## 0.01800412 0.01800412 
## 
## [1] "montpellier"
## 
##  Welch Two Sample t-test
## 
## data:  villes_s[[i]]$SP and villes_s[[i]]$heat_wave
## t = 1.4851e-12, df = 3633.5, p-value = 1
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.0067172  0.0067172
## sample estimates:
##  mean of x  mean of y 
## 0.01446281 0.01446281 
## 
## [1] "nancy"
## 
##  Welch Two Sample t-test
## 
## data:  villes_s[[i]]$SP and villes_s[[i]]$heat_wave
## t = 2.74e-09, df = 3824.9, p-value = 1
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.007499319  0.007499320
## sample estimates:
## mean of x mean of y 
## 0.0164271 0.0164271 
## 
## [1] "nantes"
## 
##  Welch Two Sample t-test
## 
## data:  villes_s[[i]]$SP and villes_s[[i]]$heat_wave
## t = 2.6897e-09, df = 3827.3, p-value = 1
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.006497227  0.006497227
## sample estimates:
##  mean of x  mean of y 
## 0.01230769 0.01230769 
## 
## [1] "nice"
## 
##  Welch Two Sample t-test
## 
## data:  villes_s[[i]]$SP and villes_s[[i]]$heat_wave
## t = 2.9976e-09, df = 3719.3, p-value = 1
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.006537235  0.006537235
## sample estimates:
##  mean of x  mean of y 
## 0.01334702 0.01334702 
## 
## [1] "paris"
## 
##  Welch Two Sample t-test
## 
## data:  villes_s[[i]]$SP and villes_s[[i]]$heat_wave
## t = 2.4804e-13, df = 3851.3, p-value = 1
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.006965451  0.006965451
## sample estimates:
##  mean of x  mean of y 
## 0.01384615 0.01384615 
## 
## [1] "rennes"
## 
##  Welch Two Sample t-test
## 
## data:  villes_s[[i]]$SP and villes_s[[i]]$heat_wave
## t = 2.3116e-09, df = 3718.7, p-value = 1
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.007443533  0.007443533
## sample estimates:
##  mean of x  mean of y 
## 0.01623887 0.01623887 
## 
## [1] "rouen"
## 
##  Welch Two Sample t-test
## 
## data:  villes_s[[i]]$SP and villes_s[[i]]$heat_wave
## t = 1.7649e-09, df = 3828.9, p-value = 1
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.006796952  0.006796952
## sample estimates:
##  mean of x  mean of y 
## 0.01292658 0.01292658 
## 
## [1] "strasbourg"
## 
##  Welch Two Sample t-test
## 
## data:  villes_s[[i]]$SP and villes_s[[i]]$heat_wave
## t = 4.6781e-09, df = 3751.3, p-value = 1
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.007958283  0.007958283
## sample estimates:
##  mean of x  mean of y 
## 0.01951721 0.01951721 
## 
## [1] "toulouse"
## 
##  Welch Two Sample t-test
## 
## data:  villes_s[[i]]$SP and villes_s[[i]]$heat_wave
## t = 1.8515e-09, df = 3787.6, p-value = 1
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.0070257  0.0070257
## sample estimates:
##  mean of x  mean of y 
## 0.01487179 0.01487179

La moyenne du score de propension predit par le modèle est statistiquement pas differente de la moyenne de la variable “heat wave”.

Comparaison de la moyenne du score de propension entre jours éligibles et pas éligibles avec test de Student.

## [1] "bordeaux"
## 
##  Welch Two Sample t-test
## 
## data:  SP by heat_wave
## t = -13.919, df = 25.013, p-value = 2.781e-13
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.8576384 -0.6365576
## sample estimates:
## mean in group 0 mean in group 1 
##     0.003415819     0.750513837 
## 
## [1] "clermont"
## 
##  Welch Two Sample t-test
## 
## data:  SP by heat_wave
## t = -17.301, df = 23.01, p-value = 1.101e-14
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.9466832 -0.7444794
## sample estimates:
## mean in group 0 mean in group 1 
##     0.001906404     0.847487692 
## 
## [1] "grenoble"
## 
##  Welch Two Sample t-test
## 
## data:  SP by heat_wave
## t = -12.86, df = 35.047, p-value = 7.864e-15
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.7180077 -0.5222247
## sample estimates:
## mean in group 0 mean in group 1 
##     0.007074918     0.627191114 
## 
## [1] "lehavre"
## 
##  Welch Two Sample t-test
## 
## data:  SP by heat_wave
## t = -11.43, df = 22.007, p-value = 1.003e-10
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.8454834 -0.5857865
## sample estimates:
## mean in group 0 mean in group 1 
##     0.003366133     0.719001083 
## 
## [1] "lyon"
## 
##  Welch Two Sample t-test
## 
## data:  SP by heat_wave
## t = -16.746, df = 31.024, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.8793433 -0.6884085
## sample estimates:
## mean in group 0 mean in group 1 
##     0.003546652     0.787422549 
## 
## [1] "marseille"
## 
##  Welch Two Sample t-test
## 
## data:  SP by heat_wave
## t = -10.926, df = 34.031, p-value = 1.138e-12
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.7119295 -0.4886344
## sample estimates:
## mean in group 0 mean in group 1 
##      0.00719657      0.60747852 
## 
## [1] "montpellier"
## 
##  Welch Two Sample t-test
## 
## data:  SP by heat_wave
## t = -9.9726, df = 27.017, p-value = 1.496e-10
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.7152821 -0.4711783
## sample estimates:
## mean in group 0 mean in group 1 
##     0.005883034     0.599113247 
## 
## [1] "nancy"
## 
##  Welch Two Sample t-test
## 
## data:  SP by heat_wave
## t = -13.629, df = 31.013, p-value = 1.229e-14
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.8819364 -0.6523499
## sample estimates:
## mean in group 0 mean in group 1 
##     0.003825164     0.770968322 
## 
## [1] "nantes"
## 
##  Welch Two Sample t-test
## 
## data:  SP by heat_wave
## t = -13.368, df = 23.01, p-value = 2.473e-12
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.8745122 -0.6401303
## sample estimates:
## mean in group 0 mean in group 1 
##     0.002986815     0.760308096 
## 
## [1] "nice"
## 
##  Welch Two Sample t-test
## 
## data:  SP by heat_wave
## t = -10.523, df = 25.008, p-value = 1.131e-10
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.8031516 -0.5402276
## sample estimates:
## mean in group 0 mean in group 1 
##     0.004381966     0.676071567 
## 
## [1] "paris"
## 
##  Welch Two Sample t-test
## 
## data:  SP by heat_wave
## t = -15.552, df = 26.009, p-value = 1.096e-14
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.9220168 -0.7067395
## sample estimates:
## mean in group 0 mean in group 1 
##     0.002570149     0.816948266 
## 
## [1] "rennes"
## 
##  Welch Two Sample t-test
## 
## data:  SP by heat_wave
## t = -13.186, df = 30.021, p-value = 5.048e-14
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.8265023 -0.6048288
## sample estimates:
## mean in group 0 mean in group 1 
##     0.004617269     0.720282837 
## 
## [1] "rouen"
## 
##  Welch Two Sample t-test
## 
## data:  SP by heat_wave
## t = -14.557, df = 24.007, p-value = 2.071e-13
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.9362975 -0.7037687
## sample estimates:
## mean in group 0 mean in group 1 
##     0.002326356     0.822359460 
## 
## [1] "strasbourg"
## 
##  Welch Two Sample t-test
## 
## data:  SP by heat_wave
## t = -13.067, df = 37.028, p-value = 1.935e-15
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.7913846 -0.5789120
## sample estimates:
## mean in group 0 mean in group 1 
##     0.006145026     0.691293322 
## 
## [1] "toulouse"
## 
##  Welch Two Sample t-test
## 
## data:  SP by heat_wave
## t = -11.572, df = 28.009, p-value = 3.479e-12
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.8465397 -0.5919098
## sample estimates:
## mean in group 0 mean in group 1 
##     0.004175632     0.723400355

Les jours heat wave ont une moyenne du SP statistiquement différente de la moyenne du SP des jours non heat wave.

 

Standard Deviation of PS and of Heat wave variable:

## [1] "bordeaux"
## villes_s[[i]]$heat_wave: 0
## [1] 0.03805333
## ------------------------------------------------------------ 
## villes_s[[i]]$heat_wave: 1
## [1] 0.2736478
## [1] "clermont"
## villes_s[[i]]$heat_wave: 0
## [1] 0.03093107
## ------------------------------------------------------------ 
## villes_s[[i]]$heat_wave: 1
## [1] 0.2394093
## [1] "grenoble"
## villes_s[[i]]$heat_wave: 0
## [1] 0.05425481
## ------------------------------------------------------------ 
## villes_s[[i]]$heat_wave: 1
## [1] 0.2892365
## [1] "lehavre"
## villes_s[[i]]$heat_wave: 0
## [1] 0.03411227
## ------------------------------------------------------------ 
## villes_s[[i]]$heat_wave: 1
## [1] 0.3002567
## [1] "lyon"
## villes_s[[i]]$heat_wave: 0
## [1] 0.04069674
## ------------------------------------------------------------ 
## villes_s[[i]]$heat_wave: 1
## [1] 0.2647473
## [1] "marseille"
## villes_s[[i]]$heat_wave: 0
## [1] 0.05121769
## ------------------------------------------------------------ 
## villes_s[[i]]$heat_wave: 1
## [1] 0.3249548
## [1] "montpellier"
## villes_s[[i]]$heat_wave: 0
## [1] 0.04574965
## ------------------------------------------------------------ 
## villes_s[[i]]$heat_wave: 1
## [1] 0.3147222
## [1] "nancy"
## villes_s[[i]]$heat_wave: 0
## [1] 0.03504794
## ------------------------------------------------------------ 
## villes_s[[i]]$heat_wave: 1
## [1] 0.3183669
## [1] "nantes"
## villes_s[[i]]$heat_wave: 0
## [1] 0.03721974
## ------------------------------------------------------------ 
## villes_s[[i]]$heat_wave: 1
## [1] 0.2775065
## [1] "nice"
## villes_s[[i]]$heat_wave: 0
## [1] 0.03453716
## ------------------------------------------------------------ 
## villes_s[[i]]$heat_wave: 1
## [1] 0.3254548
## [1] "paris"
## villes_s[[i]]$heat_wave: 0
## [1] 0.03026956
## ------------------------------------------------------------ 
## villes_s[[i]]$heat_wave: 1
## [1] 0.2720797
## [1] "rennes"
## villes_s[[i]]$heat_wave: 0
## [1] 0.04407256
## ------------------------------------------------------------ 
## villes_s[[i]]$heat_wave: 1
## [1] 0.3021255
## [1] "rouen"
## villes_s[[i]]$heat_wave: 0
## [1] 0.03033983
## ------------------------------------------------------------ 
## villes_s[[i]]$heat_wave: 1
## [1] 0.2816452
## [1] "strasbourg"
## villes_s[[i]]$heat_wave: 0
## [1] 0.04471209
## ------------------------------------------------------------ 
## villes_s[[i]]$heat_wave: 1
## [1] 0.3231563
## [1] "toulouse"
## villes_s[[i]]$heat_wave: 0
## [1] 0.03476396
## ------------------------------------------------------------ 
## villes_s[[i]]$heat_wave: 1
## [1] 0.3346826

Propensity score Matching

Several types of matching were compared. Differents matches were determined by following parameters:

The matching minimazing the standardized mean difference for numerical variables included in the SP predictions was retained. The selected matching include M=3, no caliper requirement and it handles ties deterministically, that means that ties are randomly broken.

var.match<-list()
App<-list()
for (i in 1:length(villes_s)){
var.match[[i]]<-cbind(villes_s[[i]]$SP,villes_s[[i]]$annee)
App[[i]]<-Match(Tr = villes_s[[i]]$heat_wave,X=var.match[[i]], M=2, ties=FALSE)
}


control<-list()
treated<-list()
cas<-list()
villes_match<-list()

for (i in 1:length(villes_s)){
control[[i]]=data.frame(App[[i]]$index.control)
treated[[i]]=data.frame(App[[i]]$index.treated)
colnames(control[[i]]) <- c("nrow")
colnames(treated[[i]]) <- c("nrow")
cas[[i]]<-unique(treated[[i]])
cas[[i]]$PAIR<-c(1:nrow(cas[[i]]))
treated[[i]]<-merge(treated[[i]],cas[[i]],by="nrow")
control[[i]]$PAIR <- treated[[i]]$PAIR
cas[[i]]<-merge(cas[[i]],villes_s[[i]],by="nrow")
control[[i]]<- merge(control[[i]],villes_s[[i]], by ="nrow")
villes_match[[i]]<-rbind(cas[[i]],control[[i]])
villes_match[[i]]<-villes_match[[i]][order(villes_match[[i]][,"PAIR"]),]
  }

Comparing SP for eligible days and not eligible days before and after matching:

Analysis On Non-Accidental Mortality

Fixed Effect Model

Code:

# Create panel data
for (i in (1:length(villes_s))){
      villes_match[[i]]$PAIR<-as.factor(as.character(villes_match[[i]]$PAIR))
      villes_match[[i]]<-pdata.frame(villes_match[[i]],index="PAIR")
}

# Model
  results<-matrix(NA,nrow = 15,ncol=4)
  colnames(results)<-c("city","NDE","NIE","PMM")
  
  nde<-c()
  nie<-c()
  pmm<-c()
  
  
for (i in (1:length(villes_s))){
      # outcome model - Poisson Regression: Mortality, HW and O3
      m.outcome<-pglm(nocc_tot~heat_wave+o3+Jours,data=villes_match[[i]],family=poisson(link = "log"), model="within")
      
      # mediator model - multinomial linear regression
      m.mediator<-plm(o3~heat_wave+no2moy+Jours,data=villes_match[[i]],model="within") 
      
      # save coefficients
      theta1<-coef(m.outcome)[1]
      
      theta2<-coef(m.outcome)[2]
     
      beta1<-coef(m.mediator)[1]
      
      # estimate CDE and NIE
      
      nde[i] <- exp(theta1) #NDE
      
      nie[i] <-exp(theta2*beta1) #NIE 
      
      pmm[i] <-nde[i]*(nie[i]-1)/(nde[i]*nie[i]-1) #NIE 
                   
  
  results[i,1]<-cities[[i]]
  results[i,2]<-nde [i]
  results[i,3]<-nie [i]
  results[i,4]<- pmm[i]
      
    } 

Results:

res<-data.frame(results)

for (i in (2:4)){
res[,i]<-as.numeric(as.character(res[,i]))
}

res[,2:4]<-round(res[,2:4],digits = 4)

kable(res)%>%kable_styling()%>%
  column_spec(1, bold = T, border_right = T)
city NDE NIE PMM
bordeaux 1.1240 1.0156 0.1238
clermont 1.7671 1.0076 0.0172
grenoble 0.9167 1.0707 -3.5008
lehavre 0.9809 1.1013 1.2372
lyon 1.1016 1.1133 0.5513
marseille 1.0452 1.0010 0.0227
montpellier 1.3804 0.9795 -0.0802
nancy 1.6216 1.1030 0.2118
nantes 1.2344 1.0457 0.1938
nice 1.0977 1.0465 0.3429
paris 1.6156 0.9833 -0.0458
rennes 1.2679 1.1483 0.4124
rouen 1.0623 1.1061 0.6439
strasbourg 1.2391 1.0207 0.0968
toulouse 1.1004 0.9942 -0.0680
write_xlsx(res,"C:/Users/Anna/Dropbox/Heat wave and O3/Meteo France/mortality/nonaccidental/results_PSM.xlsx")

Analysis On Cardiovascular Mortality

Results:

city NDE NIE PMM
bordeaux 1.1621 1.0272 0.1630
clermont 1.7444 0.9826 -0.0424
grenoble 0.8919 1.2844 1.7435
lehavre 0.6072 1.3268 -1.0203
lyon 0.9090 1.1580 2.7297
marseille 1.0007 1.0006 0.4561
montpellier 1.6645 1.0538 0.1188
nancy 5.8589 1.1351 0.1401
nantes 1.6716 1.3995 0.4986
nice 1.3175 1.1754 0.4213
paris 1.5088 0.9753 -0.0792
rennes 2.2537 0.9587 -0.0802
rouen 1.5809 1.0875 0.1923
strasbourg 0.9998 1.1385 1.0011
toulouse 1.1383 0.9939 -0.0526

Analysis On Respiratory Mortality

Results:

city NDE NIE PMM
bordeaux 1.2609 1.0462 0.1826
clermont 4.3409 0.6656 -0.7683
grenoble 1.3970 1.0389 0.1203
lehavre 1.1283 1.2919 0.7197
lyon 3.1620 0.9200 -0.1325
marseille 1.0671 1.0044 0.0648
montpellier 3.5954 1.0916 0.1126
nancy 322.5242 0.3718 -1.7037
nantes 0.5354 1.2996 -0.5274
nice 1.4526 0.9585 -0.1535
paris 1.8527 0.9845 -0.0349
rennes 0.6291 1.1549 -0.3564
rouen 0.3345 1.6989 -0.5414
strasbourg 1.8018 1.3010 0.4035
toulouse 1.1288 0.9845 -0.1573