COVID

Programme de calcul des décès par tranche d'âge (celles définies par le VAERS), depuis 2018 à fin 2022.Les data obtenues sont :
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 */}



% LECTURE DES FICHIERS INSEE (CSV)

% 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;