Se sei alla ricerca di un codice per calcolare media e deviazione standard usando Python, forse non ti trovi nel posto giusto. In primis, sai che puoi fare la stessa ricerca in inglese e otterrai sicuramente molti più spunti (prova per credere). Se invece parti da zero completamente, e vuoi, insieme a me, iniziare ad usare Python per la ricerca, per capirci qualcosa su dataset di dati, se vuoi iniziare a mettere le mani in pasta, forse sei nel posto giusto.

Quello che sto scrivendo non è un articolo pensato per sviluppatori, esistono sistemi molto più veloci e questo articolo per loro potrebbe essere verboso o inutile. Se invece come me stai imparando da zero a usare Python allora potresti trovare utile questo articolo.

Python

Python è un linguaggio di programmazione che viene utilizzato ampiamente nella ricerca e nella costruzione di prototipi perché la sua sintassi (il modo in cui è strutturato il linguaggio) è progettata per essere leggibile e facile da comprendere. Ciò lo rende una buona scelta per la prototipazione di nuove idee o per l’analisi di set di dati.

È importante per la ricerca, sia essa ricerca di base, clinica o per la UX research poiché è facile da usare e leggere, ma è anche molto versatile. Python può essere utilizzato per l’analisi dei dati, il machine learning e persino lo sviluppo web. Python è stato creato da Guido van Rossum ed è stato rilasciato per la prima volta nel 1991. La community dietro a Python è enorme, e puoi fare affidamento su di essa per qualsiasi problema.

Python e Visual Studio Code

Per iniziare ti consiglio vivamente di installare Visual Studio Code. É un programma sviluppato da Microsoft che, soprattutto per novizi, è una manna dal cielo. Oltre alla possibilità di utilizzare svariati linguaggi (Java Script, Python, Php etc.) consente l’installazione di estensioni che facilitano chi, come me, è ai primi passi.

Una volta installato, apri il programma e seleziona la cartella dove andrai a salvare il tuo codice (o creala ex novo). Una volta aperto, guarda sul lato destro della finestra di VS Code e cerca l’icona delle estensioni (quella con quattro quadrati) oppure, se sei su Windows, premi CONTROL+SHIFT+X. Cerca “Python” con la funzione di ricerca e attendi l’installazione.

Nuovo file di Python

Una volta installato crea un nuovo file dal menù “File” in alto a destra e scegli “File Python” nel menù a tendina che si sarà aperto. Salva il file con un nome e poi passa al codice. Nella prima parte avremo bisogno di importare due librerie molto utilizzata nella ricerca per maneggiare dataset: pandas e scipy

Installare Pandas e Scipy

Per installare la libreria pandas e scipy dovrai usare il terminale che si trova nella parte bassa della finestra di Visual Studio Code. Nel terminale dovresti trovare il path della tua cartella che potrebbe essere una cosa del genere:

C:/\Users\Tuo_Nome\OneDrive\Documenti\Nome_Nuova_Cartella>

Dai questi comandi nel terminale e lascia che l’installazione si completi

Importare Pandas e Scipy

Ora torniamo al codice del tuo programma. Per prima cosa importa pandas e scypi. Per convenzione pandas viene abbreviato con pd. Per cui nella prima riga di codice scrivi la seguente linea.

In questo abbiamo importato pandas e il package stats di scipy che ci servirà più avanti.

Importare un file csv come dataframe

Immaginiamo ora di voler confrontare due classi che hanno partecipato ad un compito di matematica. Ogni classe è composta da venti alunni e noi conosciamo tutti i voti in trentesimi delle due classi. Abbiamo raccolto questi dati su una tabella di excel e l’abbiamo esportata in csv (se volete un dataset già fatto usate il mio scaricandolo qui).

Mettete il vostro file .csv all’interno della cartella dove si trova il programma che state scrivendo. E tornate al codice di Python.

Dovete ora caricare il vostro file e conservalo in un dataframe. Potete usare questo codice:

Calcolo della media per ciascuna classe

Ora vogliamo sapere la media dei voti delle due classi. Dato che il nostro database ha due colonne andremo a calcolare con Python la media e la deviazione standard di ciascuna delle due colonne separatamente.

Potete quindi inserire questo codice:

Notate che utilizziamo sulla prima colonna (che poco intuivamente su Python è la 0) la funzione di pandas .mean() che fa esattamente quello che desideriamo.

Ora potete printare i risultati

Nel terminale avrete i vostri risultati

Calcolo della deviazione standard per ciascuna classe

Vogliamo ora calcolare la deviazione standard. Il codice di Python è molto simile ma questa volta useremo la funzione .std(). E printeremo subito il risultato.

Che ci darà come risultato le nostre due deviazioni standard.

Fare inferenze sui dati

Bene, ora sappiamo che la media della seconda classe è maggiore della prima. Quindi vuol dire che la seconda classe sia più brava in matematica rispetto alla prima? No, non possiamo dirlo perchè la differenza osservata potrebbe essere dovuta al caso.

Come possiamo quindi verificare che la differenza osservata sia statisticamente significativa, ossia che davvero le due classi siano differenti rispetto alle loro abilità in matematica? (o qualsiasi altra cosa stia misurando il mio compito?).

T-test tra due medie

Uno dei modi per verificare che le due medie siano diverse, o meglio, per verificare con ragionevole probabilità che le differenze osservate non siano dovute al caso una delle statistiche più utilizzate è il T-test. Useremo il T-test perchè il numero di soggetti è relativamente piccolo.

Per usare il T-test dovremmo verificare due condizioni, che però non tratteremo in questo articolo. Le due condizioni sono:

  • I punteggi delle due classi devono essere distribuiti in modo normale (supponiamo sia così)
  • I campioni devono essere indipendenti l’uno dall’altro (questo lo sappiamo perchè stiamo confrontando due classi differenti)

T-test con Python

Per utilizzare il T-test con Python utilizzeremo il package stats di scipy. Nello specifico calcoleremo i punti t che rappresentano la deviazione standard della differenza tra le due distribuzioni di voti e assoceremo un p-value per valutare la significatività della differenza.

Per calcolare questi valori potete usare il seguente codice:

ottenendo questi risultati sul terminale:

La differenza tra le due distribuzioni espressa in deviazioni standard è t=-0.85 e il p-value associato è 0.39, ben superiore alla soglia convenzionale di significatività che è almeno p<0.05.

Conclusione

Le due medie non sono statisticamente differenti. Non possiamo quindi affermare che la differenza osservata non sia dovuta al caso. Quindi nessuna conclusione sulle due classi…e buone notizie per il professore della prima classe 😀

Codice completo

Per chi volesse invece passare direttamente al copia-incolla potete semplicemente copiare tutto il codice e inserirlo nel vostro file di Python.