Impostare gli esperimenti

Progettazione Sperimentale in Python

James Chapman

Curriculum Manager, DataCamp

Definizione di Experimental Design

 

  • Un processo
  • Un modo oggettivo e controllato
  • Per trarre conclusioni specifiche
    • Riguardo a un'ipotesi

experimental-design.png

1 https://www.sciencedirect.com/topics/earth-and-planetary-sciences/experimental-design
Progettazione Sperimentale in Python

Formulare affermazioni robuste

X ha probabilmente avuto un effetto su Y. C'è verosimilmente un piccolo rischio di errore

 

  • Linguaggio preciso e quantificato

L'analisi del p-value indica che X ha avuto un effetto su Y con un rischio del 10% di errore di Tipo I

  • Errore di Tipo I: rifiutare erroneamente l'ipotesi nulla

 

  • Obiettivo: experimental design e analisi statistica
Progettazione Sperimentale in Python

Perché l'experimental design?

 

Utile in molti ambiti:

  • Ricerca medica
  • Marketing
  • Product analytics
  • Agricoltura
  • Politiche pubbliche

why.png

Progettazione Sperimentale in Python

Alcuni termini...

     

  • Soggetti = su chi/cosa sperimentiamo (persone, dipendenti, utenti, ecc.)

Un soggetto: in questo caso, una persona.

Progettazione Sperimentale in Python

Alcuni termini...

     

  • Soggetti = su chi/cosa sperimentiamo (persone, dipendenti, utenti, ecc.)
  • Trattamento = una modifica data a un gruppo

Un trattamento applicato a un gruppo di soggetti.

Progettazione Sperimentale in Python

Alcuni termini...

     

  • Soggetti = su chi/cosa sperimentiamo (persone, dipendenti, utenti, ecc.)
  • Trattamento = una modifica data a un gruppo

Un trattamento applicato a un gruppo di trattamento.

Progettazione Sperimentale in Python

Alcuni termini...

     

  • Soggetti = su chi/cosa sperimentiamo (persone, dipendenti, utenti, ecc.)
  • Trattamento = una modifica data a un gruppo
  • Controllo = il gruppo senza modifiche

Soggetti divisi in trattamento e controllo.

Progettazione Sperimentale in Python

Assegnare i soggetti ai gruppi

     

  • Come assegnare i soggetti ai gruppi?
    • Opzione 1 - non casuale ("slicing" del DataFrame)
    • Opzione 2 - assegnazione casuale

     

  • Esempio: 200 altezze in heights DataFrame
    id  height
0    0  177.98
1    1  174.17
2    2  178.89
Progettazione Sperimentale in Python

Assegnazione non casuale

 

Assegnazione facendo slicing del DataFrame

group1_nonrandom = heights.iloc[0:100,:]
group2_nonrandom = heights.iloc[100:,:]

compare_df = pd.concat( [group1_nonrandom['height'].describe(), group2_nonrandom['height'].describe()], axis=1) compare_df.columns = ['group1', 'group2'] print(compare_df)
  • Molto diversi! (media distante 9 cm)

 

 

       group1  group2
count  100.00  100.00
mean   170.32  179.19 <--
std      3.28    3.50
min    159.28  175.03
25%    168.06  176.57
50%    170.75  178.03
75%    173.09  180.79
max    174.92  191.32
Progettazione Sperimentale in Python

Assegnazione casuale

     

  • Usa .sample()
    • n o frac (frazione 0-1)
group1 = heights.sample(frac=0.5,
                        replace=False,
                        random_state=42)

group2 = heights.drop(group1.index)
print(compare_df)
  • Molto più simili! (<1 cm)

 

       group1  group2
count  100.00  100.00
mean   175.10  174.41 <--
std      5.39    5.78
min    163.07  159.28
25%    171.32  170.17
50%    175.22  174.86
75%    178.32  177.85
max    189.78  191.32
Progettazione Sperimentale in Python

Riepilogo assegnazione

 

  • I soggetti vanno assegnati ai gruppi in modo casuale
    • Così gli effetti osservati sono attribuiti correttamente

 

  • Assegnazione casuale: .sample()
  • Verifica differenze: .describe()

Soggetti assegnati casualmente a trattamento e controllo.

Progettazione Sperimentale in Python

Ayo berlatih!

Progettazione Sperimentale in Python

Preparing Video For Download...