COVID
On voit que le nombre de morts augmente de 50.000 entre 2019 et 2020 (effets Covid + "Rivotril")On voit que la mortalité des (65 .. 75 ans) est forte en 2020 et que celle des (50 .. 65 ans) augmente dans la période "vaccination obligatoire pour aller au resto".
/* https://www.data.gouv.fr/en/datasets/fichier-des-personnes-decedees/ Contenu du fichier Chaque enregistrement est relatif à une personne décédée et comporte les zones suivantes : le nom de famille les prénoms le sexe la date de naissance le code du lieu de naissance la localité de naissance en clair(pour les personnes nées en France ou dans les DOM / TOM / COM) le libellé de pays de naissance en clair(pour les personnes nées à l'étranger) la date du décès, le code du lieu de décès, le numéro d'acte de décès , Dessin d'enregistrement Le programme sort les morts (par semaine, par mois, par année) et par tranche d'âge (VAERS) : 1 moins de 2 ans 2 de 3 à 4 ans 3 de 5 à 11 ans 4 de 12 à 17 ans 5 de 18 à 24 ans 6 de 25 à 39 ans 7 de 40 à 49 ans 8 de 50 à 64 ans 9 de 65 ans à 75 ans 10 de +75 ans et la somme de toutes les tranches d'âge*/ /* age segment (i=0)0,10,..,(i=12)120 (i=13)total */#define Y0 2018#define Y1 2023#define DY (Y1-Y0+1)#define DM (int)(1.5+12.00*DY)#define DW (int)(1.5+52.18*DY)#define M0 1#define VAERS_Y 10#define VAERS_YA (VAERS_Y+1)#define MAXLINE 1024 int32_t allw[DW][VAERS_YA], allm[DM][VAERS_YA], ally[DY][VAERS_YA]; char indexname[20], data[MAXLINE], tmp[10], *pch; int32_t iyear= Y0, iquarter=1, imonth=0, birthY, deathY, age, monthB, dayB, monthD, dayD, daysB, daysY0, daysD, ref, iweek, im, iy; int32_t previousmonthB, previousmonthD, iage, end_debug; int32_t i,j, n, maxweek=0, maxmonth=0, maxyear=0, iline, alldays, ierrors; FILE *f, *foutw, *foutm, *fouty; memset (allw, 0, sizeof(allw)); memset(allm, 0, sizeof(allm)); memset(ally, 0, sizeof(ally)); ierrors = end_debug =0; iline=0; previousmonthB = previousmonthD = 1; if (NULL == (f = fopen("deces_18_22.csv", "rt"))) {fprintf(stderr, "\nFILE ERROR\n"); exit(-1);} if (NULL == (foutw = fopen("COVIDW.TXT", "wt"))) {fprintf(stderr, "\nFILE ERROR\n"); exit(-1);} if (NULL == (foutm = fopen("COVIDM.TXT", "wt"))) {fprintf(stderr, "\nFILE ERROR\n"); exit(-1);} if (NULL == (fouty = fopen("COVIDY.TXT", "wt"))) {fprintf(stderr, "\nFILE ERROR\n"); exit(-1);} while (fgets(data, MAXLINE, f)) { /* read the files line by line, compute the age and fill three table : deaths per weeks/month/year */ strncpy(tmp, &(data[ 81]),4); tmp[4] = 0; sscanf(tmp, "%d", &birthY); if (birthY <1870 || birthY > Y1) {ierrors++; continue; } strncpy(tmp, &(data[154]),4); tmp[4] = 0; sscanf(tmp, "%d", &deathY); if (deathY < Y0 || deathY > Y1) { continue; } strncpy(tmp, &(data[ 85]), 2); tmp[2] = 0; sscanf(tmp, "%d", &monthB); if (monthB > 12) { ierrors++; continue; } if (monthB == 0) monthB = previousmonthB; strncpy(tmp, &(data[158]), 2); tmp[2] = 0; sscanf(tmp, "%d", &monthD); if (monthD > 12) { ierrors++; continue; } if (monthD == 0) monthB = previousmonthD; strncpy(tmp, &(data[ 87]), 2); tmp[2] = 0; sscanf(tmp, "%d", &dayB); if (dayB > 31) { ierrors++; continue; } strncpy(tmp, &(data[160]), 2); tmp[2] = 0; sscanf(tmp, "%d", &dayD); if (dayD > 31) { ierrors++; continue; } daysY0= Y0*365.25; daysB = birthY*365.25 + (monthB - 1.0) * 30.43 + dayB; daysD = deathY*365.25 + (monthD - 1.0) * 30.43 + dayD; age = daysD - daysB; age=(int)(0.5+age/365.25); if (age < 0 || age > 128) { continue; } ref = daysD - daysY0; if (ref < 0 || ref > 128*365) { continue; } // days from Y0 to compute indexes previousmonthB = monthB; previousmonthD = monthD; iweek= ref/7; if (iweek < 0 || iweek >= DW) { ierrors++; continue; } /* # weeks elapsed since Y0 reference */ im= ref / 30.43; if (im < 0 || im >= DM) { ierrors++; continue; } /* # months elapsed since Y0 reference */ if (age < 2) iage = 0; else if (age < 5) iage = 1; else if (age <12) iage = 2; else if (age <18) iage = 3; else if (age <25) iage = 4; else if (age <40) iage = 5; else if (age <50) iage = 6; else if (age <65) iage = 7; else if (age <75) iage = 8; else iage = 9; allw[iweek][iage] ++; allm[im][iage] ++; ally[ref/365][iage] ++; /* statistics of death per age */ allw[iweek][VAERS_Y]++; allm[im][VAERS_Y]++; ally[ref/365][VAERS_Y]++; /* total deaths */ if ((iline++ % 10000) == 0) fprintf(stderr,"."); maxweek = (iweek>maxweek)?iweek:maxweek; maxmonth = (im > maxmonth) ? im : maxmonth; maxyear = (ref/365 > maxyear) ? ref/365 : maxyear; if (end_debug) break; } if (ierrors) fprintf(stderr, "\n\n nb of errors when reading the file = %d / %d\n", ierrors, iline); fclose (f); /* print results */ for (i = 0; i < maxweek+1; i++) {fprintf(foutw, "%7.2f\t", Y0+i/52.18); for (j = 0; j <VAERS_YA; j++) fprintf(foutw, "%7d\t", allw[i][j]); fprintf(foutw, "\n"); } for (i = 0; i < maxmonth+1; i++) {fprintf(foutm, "%7.2f\t", Y0+i/12.0); for (j = 0; j <VAERS_YA; j++) fprintf(foutm, "%7d\t", allm[i][j]); fprintf(foutm, "\n"); } for (i = 0; i < maxyear+1; i++) {fprintf(fouty, "%5d\t", Y0+i); for (j = 0; j < VAERS_YA; j++) fprintf(fouty, "%7d\t", ally[i][j]); fprintf(fouty, "\n"); } fclose(foutw); fclose(foutm); fclose(fouty); /* https://www.data.gouv.fr/en/reuses/nombre-de-morts-journaliers-en-france/ https://deces.matchid.io/search?advanced=true&view=agg&dco=France */}
% https://www.insee.fr/fr/statistiques/fichier/4769950/deces-2010-2018-csv.zip
% https://www.insee.fr/fr/statistiques/fichier/4190491/Deces_2018.zip
% https://www.insee.fr/fr/statistiques/fichier/4190491/Deces_2019.zip
% https://www.insee.fr/fr/statistiques/fichier/4190491/Deces_2020_M01.zip
% ...
% https://www.insee.fr/fr/statistiques/fichier/4190491/Deces_2020_M11.zip
%
% et aussi https://www.data.gouv.fr/en/datasets/fichier-des-personnes-decedees/
% et aussi http://data.cquest.org/insee_deces/
close all; ROOT = 'C:\TMP\COVID\deces-'; T=[]; A=[]; S=[]; AgeMax=120;
V=1970; currentMonth=12; W=2020 + currentMonth/12; % de 2017 a Decembre 2020
for ifile=V:2019 %floor(W-1)
F=sprintf('C:\\TMP\\COVID\\deces-%d.csv',ifile); x=readtable(F);
T=[T;x.datedeces]; A=[A;x.datenaiss]; S=[S;x.sexe];
end
for imonth=1:currentMonth
F=sprintf('C:\\TMP\\COVID\\Deces_2020_M%02d.csv',imonth); x=readtable(F);
T=[T;x.datedeces]; A=[A;x.datenaiss]; S=[S;x.sexe];
end
% Correction des erreurs de saisies en Mairie
T1=T(T>V*10000); T2=T1(T1<W*10000); N1=A(T>V*10000); N2=N1(T1<W*10000);
TT = sort (T2); Y=floor(TT/10000); M=max (1, floor((TT-Y*10000)/100));
D=min(30, max(1, (TT-Y*10000) - (M*100))); DATA = (Y - V) + ((M-1)/12) + ((D-1)/365);
% plot
close all;
figure; b=hist(DATA, (W-V)); ax=(V:(W-V)/(length(b)-1):W); plot (ax-1,b/1000);
grid on; ylabel('Milliers de morts par an');
figure; b=hist(DATA, 12*(W-V)); b(1)=0; ax=(V:(W-V)/(length(b)-1):W); plot (ax-1,b/1000);
grid on; ylabel('Milliers de morts par mois');
figure; b=hist(DATA, 7*12*(W-V));b(1)=0; ax=(V:(W-V)/(length(b)-1):W); plot (ax-1,b/1000);
grid on; ylabel('Milliers de morts par semaine');
M = zeros(floor(length(b)-83), 1);
for k=1:floor(-1 + length(b))-83
M(k) = sum(b(k+(0:83)));
end
figure; plot (ax(85:end)-1,M(1:end-1)/1000,'r.');
grid on; ylabel('Milliers de morts par an');
k=0;
% figure; b=hist(DATA, 365*20.9);b(1)=0; ax=(1970:(2020.9-1970)/(length(b)-1):2020.9); plot (ax,b); grid on;
% FT=min(W, max(V,floor(T/10000))); FA=min(W, max(W-AgeMax,floor(A/10000)));
% Y2=max(V, min(W, FT)); Y1=max(W-AgeMax, min(W, FA)); Y=max(0, min(AgeMax, Y2-Y1));
% M2 = floor((T-Y2*10000)/100)-1; M1 = floor((Y2*10000- A)/100)-1; M2=max(0, min(11, M2)); M=max(-12, min(12, M2-M1));
% D2 = (T-Y2*10000)-(M2*100)-1; D1 = (A-Y2*10000)-(M2*100)-1; D2=max(0, min(31, D2)); D=max(-30, min(31, D2-D1));
% AGE = Y + M/12 + D/365;
% DECES = Y2 + M2/12 + D2/365;vax leak from Albania :
https://drive.google.com/file/d/1sSsKLZ9pELHOeCBxAmoZw-MP0Fps-A8L/view?usp=sharing