Esempi di statistica descrittiva e inferenziale/Eventi avversi vaccini Covid
Dopo avere scaricato il dataset VAERS del 2021 da qui : https://vaers.hhs.gov/data.html e il dataset delle vaccinazioni da qui : https://github.com/owid/covid-19-data/blob/master/public/data/vaccinations/vaccinations.csv è possibile analizzare gli eventi avversi ai vaccini anti covid negli Stati Uniti, segnalati dall'1/1/2021 al 31/12/2021, utilizzando il linguaggio di programmazione Python su Colab in modo da utilizzare le risorse hardware di Google trattandosi di big data.
Dopo avere caricato le opportune librerie :
import pandas as pd
import matplotlib as plt
e caricato i dati :
from google.colab import drive
drive.mount('/content/drive')
!unzip /content/drive/MyDrive/VAERS/2021VAERSData.zip
# Read the data
patient = pd.read_csv("2021VAERSDATA.csv", encoding='ISO-8859-1')
vaccines = pd.read_csv("2021VAERSVAX.csv", encoding='unicode_escape')
symptoms = pd.read_csv("2021VAERSSYMPTOMS.csv", encoding='unicode_escape')
vaccinations = pd.read_csv("/content/drive/MyDrive/VAERS/vaccinations.csv")
si nota che gli eventi avversi segnalati ai vaccini anti covid sono 725.919
counts=vaccines['VAX_TYPE'].value_counts()
dict(counts)
{'COVID19': 725919, 'VARZOS': 14289, 'UNK': 9679, 'FLU4': 5384, 'HPV9': 1823, 'VARCEL': 1750, 'TDAP': 1657, 'PPV': 1614, 'HEPA': 1415, 'MMR': 1414, 'MNQ': 1396, 'HEP': 1381, 'FLUX': 1364, 'MMRV': 1233, 'PNC13': 1092, 'HIBV': 929, 'DTAP': 778, 'MENB': 767, 'DTAPIPV': 755, 'RV5': 730, 'FLUA4': 697, 'FLUC4': 693, 'DTAPIPVHIB': 587, 'FLUR4': 530, 'DTAPHEPBIP': 436, 'IPV': 414, 'TYP': 194, 'HEPAB': 194, 'RV1': 185, 'RAB': 183, 'FLU3': 172, 'TD': 168, 'HPV4': 142, 'ANTH': 118, 'FLUA3': 104, 'YF': 97, 'FLUC3': 65, 'FLUN4': 62, 'MEN': 52, 'ADEN_4_7': 43, 'EBZR': 39, 'TTOX': 36, 'DF': 30, 'CHOL': 26, 'SMALL': 26, 'PNC': 25, 'DT': 25, 'HPVX': 22, 'DTPPVHBHPB': 22, 'JEV1': 17, 'DTP': 14, 'RVX': 13, 'FLUX(H1N1)': 9, '6VAX-F': 8, 'FLUN3': 6, 'BCG': 5, 'JEVX': 2, 'FLUR3': 2, 'FLU(H1N1)': 2, 'OPV': 2, 'PNC10': 1, 'HEPATYP': 1, 'MU': 1, 'H5N1': 1, 'TDAPIPV': 1, 'DTOX': 1, 'DTPHEP': 1, 'MNQHIB': 1, 'PER': 1, 'COVID19-2': 1}
escludiamo tutti i vaccini, tranne quelli relativi al Covid:
vaccines=vaccines.loc[vaccines['VAX_TYPE'] == 'COVID19']
Gli eventi avversi relativi al vaccino MODERNA sono 336.734, quelli relativi a PFIZER 324.814 ecc.
counts=vaccines['VAX_MANU'].value_counts()
dict(counts)
{'MODERNA': 336734, 'PFIZER\\BIONTECH': 324814, 'JANSSEN': 62787, 'UNKNOWN MANUFACTURER': 1584}
Unisco i 2 datasets patient e vaccines
df = patient.merge(vaccines, on="VAERS_ID")
Come si vede dal seguente grafico ci sono più eventi avversi relativi a MODERNA che a PFIZER...:
df_groups =df.loc[df['VAX_MANU'] !='UNKNOWN MANUFACTURER']
df_groups['VAX_MANU'].value_counts().plot(kind="barh",color='maroon')
...inoltre ci sono più eventi avversi relativi a donne che a uomini:
df_groups =df['SEX'].value_counts().plot(kind="barh")
... unisco ai precedenti datasets, quello dei sintomi:
df = df.merge(symptoms, on="VAERS_ID", how='left')
Visualizzo una tabella con alcuni dei 10.816 eventi avversi relativi alle vaccinazioni contro il Covid:
df2 = pd.DataFrame({'sintomi':df['SYMPTOM1']})
df3 = pd.DataFrame({'sintomi':df['SYMPTOM2']})
df4 = pd.DataFrame({'sintomi':df['SYMPTOM3']})
df5 = pd.DataFrame({'sintomi':df['SYMPTOM4']})
df6 = pd.DataFrame({'sintomi':df['SYMPTOM5']})
df2=pd.concat([df2,df3])
df2=pd.concat([df2,df4])
df2=pd.concat([df2,df5])
df2=pd.concat([df2,df6])
df_symptoms =df2.loc[df2['sintomi'] !='']
df_symptoms['sintomi'].value_counts()
Headache 125548 Pyrexia 107988 Fatigue 105646 Chills 91424 Pain 90869 ... Lip erosion 1 Cat scratch disease 1 Gut fermentation syndrome 1 Morose 1 Conjunctival pallor 1 Name: sintomi, Length: 10816, dtype: int64
Visualizzo il numero di vaccinazioni negli Stati Uniti al 31/12/2020 e al 31/12/2021:
vaccinations.loc[(vaccinations['location']=='United States') &
(vaccinations['date']=='2020-12-31')]
5701167.0
vaccinations.loc[(vaccinations['location']=='United States') &
(vaccinations['date']=='2021-12-31')]
520934556.0
Numero di miocarditi segnalate a causa dei vaccini anti covid considerato che negli Stati Uniti sono state somministrate dal 1/1/2021 al 31/12/2021 circa 515.233.389 dosi e quindi 2406*100000/515233389= 0,47 miocarditi ogni 100.000 dosi .
df_symptoms =df2.loc[df2['sintomi'] =='Myocarditis']
df_symptoms['sintomi'].value_counts()
Myocarditis 2406 Name: sintomi, dtype: int64
Numero di morti segnalate a causa dei vaccini anti covid, considerato che negli Stati Uniti sono state somministrate dal 1/1/2021 al 31/12/2021 circa 515.233.389 dosi e quindi 18973*100000/515233389=3,68 morti ogni 100.000 dosi .
len(df.loc[(df['DIED'] =='Y') |
(df['SYMPTOM1']=='Death')|
(df['SYMPTOM2']=='Death')|
(df['SYMPTOM3']=='Death')|
(df['SYMPTOM4']=='Death')|
(df['SYMPTOM5']=='Death')])
18973