Una funzione per fare pairs bootstrap
Come discusso nel video, il pairs bootstrap prevede il ricampionamento di coppie di dati. Ogni insieme di coppie viene adattato con una retta, in questo caso usando np.polyfit(). Ripetiamo l’operazione molte volte, ottenendo replicati bootstrap dei valori dei parametri. Per avere uno strumento utile per fare pairs bootstrap, scriverai una funzione che esegue il pairs bootstrap su un insieme di dati x,y.
Questo esercizio fa parte del corso
Pensiero statistico in Python (Parte 2)
Istruzioni dell'esercizio
- Definisci una funzione con firma
draw_bs_pairs_linreg(x, y, size=1)per calcolare stime pairs bootstrap dei parametri di una regressione lineare.- Usa
np.arange()per creare un array di indici da0alen(x). Questi sono quelli che ricampionerai e userai per estrarre valori dagli arrayxey. - Usa
np.empty()per inizializzare gli array dei replicati di pendenza e intercetta con dimensionesize. - Scrivi un ciclo
forper:- Ricampionare gli indici
inds. Usanp.random.choice()per farlo. - Creare i nuovi array \(x\) e \(y\),
bs_xebs_y, usando gli indici ricampionatibs_inds. Per farlo, fai slicing dixeyconbs_inds. - Usare
np.polyfit()sui nuovi array \(x\) e \(y\) e salvare la pendenza e l’intercetta calcolate.
- Ricampionare gli indici
- Restituisci i replicati pairs bootstrap della pendenza e dell’intercetta.
- Usa
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
def draw_bs_pairs_linreg(x, y, size=1):
"""Perform pairs bootstrap for linear regression."""
# Set up array of indices to sample from: inds
inds = ____
# Initialize replicates: bs_slope_reps, bs_intercept_reps
bs_slope_reps = ____
bs_intercept_reps = ____
# Generate replicates
for i in range(size):
bs_inds = np.random.choice(____, size=____)
bs_x, bs_y = x[____], y[____]
bs_slope_reps[i], bs_intercept_reps[i] = ____
return bs_slope_reps, bs_intercept_reps