Metodo Bootstrap
Salve.
Nell'ambito della simulazione stocastica, qualcuno mi può introdurre l'utilizzo e l'obiettivo del metodo bootstrap?
Grazie a chi mi potrà aiutare.
Nell'ambito della simulazione stocastica, qualcuno mi può introdurre l'utilizzo e l'obiettivo del metodo bootstrap?
Grazie a chi mi potrà aiutare.

Risposte
Probabilmente è lo stesso argomento di cui si è parlato qui. Nel thread trovi l'implementazione algoritmica e delle reference postate da me che introducono al bootstrapping.
Se non è quello che intendevi, pardon.
Se non è quello che intendevi, pardon.
"elgiovo":
Probabilmente è lo stesso argomento di cui si è parlato qui. Nel thread trovi l'implementazione algoritmica e delle reference postate da me che introducono al bootstrapping.
Se non è quello che intendevi, pardon.
Ciao elgiovo.
Più che scusarti ti devo ringraziare per le indicazioni e per la cortesia di avermi risposto.
Ho letto con attenzione la discussione dello scorso aprile, ma la tua richiesta era orientata a capire come risolvere attraverso la programmazione un problema che ti era già noto.
Io in effetti sono ad un passo prima; per capirci riporto due definizioni che ho trovato sulle dispense di un prof.: “Il metodo Monte Carlo in particolare è utilizzato per stimare l’incertezza di un sistema complesso quando è nota la sua dinamica. Il metodo Bootstrap invece è una tecnica di simulazione condizionata che prevede l’uso di osservazioni reali come base delle simulazioni”.
Come ti è sicuramente chiaro, il contesto nel quale stiamo ragionando è quello della simulazione stocastica.
Riprendendo la definizione del prof., ed ipotizzando un sistema come una entità che riceve degli input (y con distribuzione F(y;theta0)) e fornisce degli output, le mie domande sono le seguenti:
1) Cosa si intende per incertezza di un sistema e, di conseguenza, stimare l’incertezza?
2) La definizione di Bootstrap è poi, per me, ancora più oscura: cosa significa prendere delle simulazioni reali come base delle osservazioni?
Il tutto si complica ulteriormente quando viene approfondita, sempre dal prof., la definizione del metodo Bootstrap con la seguente definizione: “Spesso la distribuzione di y non è nota o prefissare la varianza di theta=theta0 può essere limitativo. In questi casi una strada percorribile per capire la variabilità delle stime consiste nel costruire delle simulazioni basate sulla distribuzione empirica del particolare vettore osservato (y=y1, ... yn)”.
Riparto allora dalla domanda iniziale del mio post: ma quali sono i problemi che trovano nel metodo Bootstrap la loro soluzione? Ed ancora, quale è il principio applicato dal metodo Bootstrap per risolvere questi problemi?
Chiariti questi concetti basici, allora potrò sicuramente trarre beneficio dalla tua precedente discussione.
Grazie ancora e ciao.

1)Cosa si intende per incertezza di un sistema e, di conseguenza, stimare l’incertezza?
Beh, un sistema incerto sarà un sistema che non risponde sempre allo stesso modo a un ingresso certo. L'esempio più banale che mi viene in mente è una moneta, che restituisce statisticamente un certo numero di teste e un certo numero di croci. Nello studio ingegneristico dei processi stocastici di solito si considerano sistemi deterministici, nel senso che rispondono sempre allo stesso modo a ingressi certi, ma con ingressi incerti. Quindi, un pò filosoficamente, se lanci la moneta sempre nello stesso modo, questa cadrà sempre nello stesso modo, ma ci sarà sempre una certa incertezza nel modo in cui lanci la moneta, che ti porta ad osservare statisticamente testa o croce. Nulla ti nega di assumere incerto sia l'ingresso al sistema che il sistema stesso, complicando però la trattazione.
2) La definizione di Bootstrap è poi, per me, ancora più oscura: cosa significa prendere delle simulazioni reali come base delle osservazioni?
Occhio, l'ultima parola è simulazioni

Venendo al metodo bootstrap, credo che tu lo stia studiando in modo più generale di quanto intendevo io. Per comodità, riporto qui il link al sito gratuito dove si parla della sua applicazione e che uso come riferimento: click. Anche in quel caso, di fatto si utilizza un'osservazione sperimentale in uscita a un sistema (i grafici in giallo nel link poco sopra), per cercare di capire se il sistema abbia prodotto un cambiamento, un salto. E' un'applicazione particolare del bootstrapping, ma penso possa aiutarti a capire. Di per sè, la tecnica del bootstrap è molto semplice: si prende un'osservazione (y1, y2, ... , yn) e si permutano i valori un certo numero di volte, ottenendo un certo numero di nuove "simil-osservazioni". Confrontando le simil-osservazioni con l'osservazione "vera", si possono desumere certe cose (come la presenza o meno di un "salto").
Questo dovrebbe aiutarti a comprendere meglio quello che scrive il tuo prof:
costruire delle simulazioni basate sulla distribuzione empirica del particolare vettore osservato (y=y1, ... yn)
Detto ciò, resta da rispondere a:
quali sono i problemi che trovano nel metodo Bootstrap la loro soluzione?
L'unico che mi viene in mente è quello del link sopra, ovvero l'individuazione di uno o più salti in una serie temporale (un problema non banale...), ma sono sicuro che ce ne sono altri.
L'altra domanda:
quale è il principio applicato dal metodo Bootstrap per risolvere questi problemi?
ha una risposta parziale in questa frase, presa dal link sopra:
The idea behind bootstrapping is that the bootstrap samples represent random reorderings of the data that mimic the behavior of the CUSUM if no change has occurred. By performing a large number of bootstrap samples, you can estimate how much Sdiff would vary if no change took place. You can then compare this with the Sdiff value calculated from the data is its original order to determine if this value is consistent with what you would expect if no change occurred.
Quindi, in sostanza, una simulazione bootstrap di un sistema che "salta" produce serie temporali che "non saltano", e puoi dire che c'è stato un salto dal confronto tra la simulazione e il dato reale.
Per i conti che dimostrano questa mia ultima affermazione di carattere puramente qualitativo, e per una lista di certo più approfondita di utilizzi del bootstrapping, ti rimando alla pagina wikipedia dedicata.
Spero di esserti stato utile, con gli scarsi mezzi che avevo a disposizione. Se qualcuno più esperto vuole intervenire... prego!
Ciao
Sul bootstrap si potrebbe aprire un thread che non finirebbe *mai*. E la letteratura statistica a riguardo rispecchia ampiamente l'enorme successo che questa classe di metodi (sì, ve ne sono diversi) ha avuto.
Non volendo addentrarsi nei tecnicismi, ci sono alcune cose da tenere in mente sui metodi bootstrap:
1. è un metodo di ricampionamento (resampling)
-> la quantità di informazione che si ottiene da un bootstrap è NON maggiore di quella contenuta nel campione di partenza; si tratta di una metodologia che 'spreme' i dati il più possibile al fine di mimare (mimicking) la popolazione da cui proviene il campione, e come tale deve essere presa!
2. è estremamente semplice da implementare
-> applicare un bootstrap (in qualsiasi sua declinazione) equivale sostanzialmente ad estrarre secondo un qualche criterio le unità osservate nel campione per costruirne uno nuovo; questa operazione viene replicata un certo numero di volte (quante dipende dal tipo di bootstrap e dall'oggetto di indagine). Questo equivale banalmente ad un classico ciclo for in qualsivoglia linguaggio di programmazione, che ad ogni passo applica una procedura di estrazione campionaria e ricalcola le statistiche di interesse sul nuovo campione (che sarà però sempre formato da unità contenute nel campione originario)
3. nasce sostanzialmente per riuscire ad ottenere stime della varianza degli stimatori in situazioni complesse, ed è tuttora la sua applicazione principale.
-> un semplice esempio: può capitare che un particolare stimatore per una quantità di interesse (che sia una media, una varianza, una concentrazione, una asimmetria...) non possegga un'espressione in forma chiusa per la stima della propria varianza o che tale espressione sia particolarmente complessa e poco trattabile analiticamente. Il bootstrap permette, partendo dal campione in nostro possesso, di generare moltissimi nuovi campioni. Su ciascuno di questi nuovi campioni lo stimatore di interesse viene calcolato ed il suo valore salvato. Alla fine della simulazione avremo a disposizione un vettore di stime che possiamo trattare come se fosse "l'ombra" della vera distribuzione dello stimatore nella popolazione. A questo punto il calcolo della varianza diventa immediato e non deve passare per la formulaccia (magari non nota, magari non troppo complessa).
Chiaramente la validità dei metodi bootstrap si poggia pesantemente sulle assunzioni di partenza: il bootstrap classico di Efron, ad esempio, richiede componenti indipendenti, il che è difficilmente incontrato nella pratica. Numerose sono state le proposte per adattare il principio alla base di questa tecnica a situazioni non standard, e si sta lavorando parecchio ancora adesso sull'argomento.
Un'ultima nota riguarda un altro simpatico impiego del bootstrap, ovvero la generazione di numeri (pseudo-) casuali. Con lo stesso principio di resampling, ed assumendo la distribuzione empirica (ottenuta sulla base del campione) come sufficientemente rappresentativa della vera distribuzione nella popolazione, si possono andare ad estrarre valori casuali presumibilmente provenienti dallo stesso processo generatore di quelli osservati. Un chiaro limite di questo metodo è, però, che non potremo mai generare valori che non sono stati osservati.
Spero di non essere stato troppo confusionario, ad ogni modo resto a disposizione ^_^
A presto!
Non volendo addentrarsi nei tecnicismi, ci sono alcune cose da tenere in mente sui metodi bootstrap:
1. è un metodo di ricampionamento (resampling)
-> la quantità di informazione che si ottiene da un bootstrap è NON maggiore di quella contenuta nel campione di partenza; si tratta di una metodologia che 'spreme' i dati il più possibile al fine di mimare (mimicking) la popolazione da cui proviene il campione, e come tale deve essere presa!
2. è estremamente semplice da implementare
-> applicare un bootstrap (in qualsiasi sua declinazione) equivale sostanzialmente ad estrarre secondo un qualche criterio le unità osservate nel campione per costruirne uno nuovo; questa operazione viene replicata un certo numero di volte (quante dipende dal tipo di bootstrap e dall'oggetto di indagine). Questo equivale banalmente ad un classico ciclo for in qualsivoglia linguaggio di programmazione, che ad ogni passo applica una procedura di estrazione campionaria e ricalcola le statistiche di interesse sul nuovo campione (che sarà però sempre formato da unità contenute nel campione originario)
3. nasce sostanzialmente per riuscire ad ottenere stime della varianza degli stimatori in situazioni complesse, ed è tuttora la sua applicazione principale.
-> un semplice esempio: può capitare che un particolare stimatore per una quantità di interesse (che sia una media, una varianza, una concentrazione, una asimmetria...) non possegga un'espressione in forma chiusa per la stima della propria varianza o che tale espressione sia particolarmente complessa e poco trattabile analiticamente. Il bootstrap permette, partendo dal campione in nostro possesso, di generare moltissimi nuovi campioni. Su ciascuno di questi nuovi campioni lo stimatore di interesse viene calcolato ed il suo valore salvato. Alla fine della simulazione avremo a disposizione un vettore di stime che possiamo trattare come se fosse "l'ombra" della vera distribuzione dello stimatore nella popolazione. A questo punto il calcolo della varianza diventa immediato e non deve passare per la formulaccia (magari non nota, magari non troppo complessa).
Chiaramente la validità dei metodi bootstrap si poggia pesantemente sulle assunzioni di partenza: il bootstrap classico di Efron, ad esempio, richiede componenti indipendenti, il che è difficilmente incontrato nella pratica. Numerose sono state le proposte per adattare il principio alla base di questa tecnica a situazioni non standard, e si sta lavorando parecchio ancora adesso sull'argomento.
Un'ultima nota riguarda un altro simpatico impiego del bootstrap, ovvero la generazione di numeri (pseudo-) casuali. Con lo stesso principio di resampling, ed assumendo la distribuzione empirica (ottenuta sulla base del campione) come sufficientemente rappresentativa della vera distribuzione nella popolazione, si possono andare ad estrarre valori casuali presumibilmente provenienti dallo stesso processo generatore di quelli osservati. Un chiaro limite di questo metodo è, però, che non potremo mai generare valori che non sono stati osservati.
Spero di non essere stato troppo confusionario, ad ogni modo resto a disposizione ^_^
A presto!
elgiovo, Chicco_stat, siete eccezionali 
Prendo spunto da entrambe le vostre risposte per chiedervi alcuni approfondimenti:
Guardando l’esempio sul sito suggerito da elgiovo ho visto come i dati della serie storica sono stati di fatto utilizzati per calcolare indici (CumulativE SUM Chart, MSE, …) che dessero indicazioni circa il maggior cambiamento della serie stessa. I dati non sono però stati “mischiati” come mi è sembrato di capire dalle vostre indicazioni, dove per mischiati intendo un certo numero di permutazioni delle 24 rilevazioni. Lo stimatore CESUM, così come il MSE, di fatto “scorrono” la serie così com’è costruendoci sopra i ragionamenti ben spiegati nell’esempio.
Ho forse inteso male il principio che sta alla base del Bootstrap?
Faccio questa domanda perché sia nella risposta di elgiovo al mio punto 2, che nel punto 2 di Chicco_stat si cita chiaramente la caratteristica di “permutare” i dati tipica del Metodo Bootstrap.
Per comprendere appieno il punto 3 di Chicco_stat ho bisogno di avere la risposta alla domanda posta appena sopra. Ammettiamo infatti di voler studiare la varianza della distribuzione (supposta nota nella forma) riportata nell’esempio di elgiovo; ciò comporterà che dovrò fare n permutazioni della serie stessa ottenendo, ad esempio, (gen, mar, apr, sett, …) e (mar, giu, dic, …) ?
Un'ultima domanda: nella mia prima risposta a elgiovo facevo riferimento al vettore y=(y1,…,yn) copiato dalle slides del prof. Nell’esempio indicato da elgiovo, y1,…yn sono le varie rilevazioni (10.7, 13.0, …, 10.5)?
Se la risposta alla mia precedente domanda è si, perché secondo voi nella stessa slide il prof. parlando del Bootstrap parametrico cita “Quando la distribuzione delle componenti di y, F(yj | theta0) è nota nella forma ma theta 0 è ignoto …”? Secondo voi, non sarebbe più corretto scrivere? Le varie yj sono infatti dei singoli valori che non hanno quindi delle distribuzioni ma sono i componenti di una distribuzione.
Importantissima l’osservazione del punto 1 di di Chicco_stat: “la quantità di informazione che si ottiene da un bootstrap è NON maggiore di quella contenuta nel campione di partenza”
elgiovo, non sei troppo pignolo quando rispondi al mio secondo quesito; sono io che ho riportato male (compromettendone il senso) la frase presa dalle dispense.
Un sincero grazie per il vostro aiuto.

Prendo spunto da entrambe le vostre risposte per chiedervi alcuni approfondimenti:
Guardando l’esempio sul sito suggerito da elgiovo ho visto come i dati della serie storica sono stati di fatto utilizzati per calcolare indici (CumulativE SUM Chart, MSE, …) che dessero indicazioni circa il maggior cambiamento della serie stessa. I dati non sono però stati “mischiati” come mi è sembrato di capire dalle vostre indicazioni, dove per mischiati intendo un certo numero di permutazioni delle 24 rilevazioni. Lo stimatore CESUM, così come il MSE, di fatto “scorrono” la serie così com’è costruendoci sopra i ragionamenti ben spiegati nell’esempio.
Ho forse inteso male il principio che sta alla base del Bootstrap?
Faccio questa domanda perché sia nella risposta di elgiovo al mio punto 2, che nel punto 2 di Chicco_stat si cita chiaramente la caratteristica di “permutare” i dati tipica del Metodo Bootstrap.
Per comprendere appieno il punto 3 di Chicco_stat ho bisogno di avere la risposta alla domanda posta appena sopra. Ammettiamo infatti di voler studiare la varianza della distribuzione (supposta nota nella forma) riportata nell’esempio di elgiovo; ciò comporterà che dovrò fare n permutazioni della serie stessa ottenendo, ad esempio, (gen, mar, apr, sett, …) e (mar, giu, dic, …) ?
Un'ultima domanda: nella mia prima risposta a elgiovo facevo riferimento al vettore y=(y1,…,yn) copiato dalle slides del prof. Nell’esempio indicato da elgiovo, y1,…yn sono le varie rilevazioni (10.7, 13.0, …, 10.5)?
Se la risposta alla mia precedente domanda è si, perché secondo voi nella stessa slide il prof. parlando del Bootstrap parametrico cita “Quando la distribuzione delle componenti di y, F(yj | theta0) è nota nella forma ma theta 0 è ignoto …”? Secondo voi, non sarebbe più corretto scrivere
Importantissima l’osservazione del punto 1 di di Chicco_stat: “la quantità di informazione che si ottiene da un bootstrap è NON maggiore di quella contenuta nel campione di partenza”
elgiovo, non sei troppo pignolo quando rispondi al mio secondo quesito; sono io che ho riportato male (compromettendone il senso) la frase presa dalle dispense.
Un sincero grazie per il vostro aiuto.
"Luiss":
Guardando l’esempio sul sito suggerito da elgiovo ho visto come i dati della serie storica sono stati di fatto utilizzati per calcolare indici (CumulativE SUM Chart, MSE, …) che dessero indicazioni circa il maggior cambiamento della serie stessa. I dati non sono però stati “mischiati” come mi è sembrato di capire dalle vostre indicazioni, dove per mischiati intendo un certo numero di permutazioni delle 24 rilevazioni. Lo stimatore CESUM, così come il MSE, di fatto “scorrono” la serie così com’è costruendoci sopra i ragionamenti ben spiegati nell’esempio.
Aspetta, leggi meglio. Devi fare la statistica CUSUM su tutti i campioni bootstrap (quelli mescolati), oltre che sulla serie originale, per capire se c'è stato un salto confrontando il CUSUM dei bootstrap con quello originale. Poi lo stimatore MSE ti dà il punto in cui più verosimilmente è avvenuto il salto, e questo si, va applicato solo alla serie originale.
Un'ultima domanda: nella mia prima risposta a elgiovo facevo riferimento al vettore y=(y1,…,yn) copiato dalle slides del prof. Nell’esempio indicato da elgiovo, y1,…yn sono le varie rilevazioni (10.7, 13.0, …, 10.5)?
Qui ti direi di si. Alla domanda successiva però non so bene risponderti, perché non so cos'è theta0, probabilmente è un formalismo che Chicco_stat conosce meglio di me, la mia conoscenza del bootstrap e dei suoi utilizzi è limitata all'articolo che hai letto.
"Sergio":
Un campione è un vettore di variabili aleatorie. Se il campione è \(\mathbf{y}=(y_1,\dots,y_n)\), ciascuna \(y_j\) è una variabile aleatoria, quindi ha una sua distribuzione di probabilità, anche se è la stessa per tutte.
Nota di pignoleria.. un campione non è un vettore di variabili aleatorie, bensì una realizzazione delle stesse (come è giustamente detto sotto!)
"Sergio":
Cerchi di stimare il parametro osservando numeri, ma intendi ciascuno di quei numeri come realizzazione di una variabile aleatoria.
Il campione è, se vogliamo, un vettore aleatorio in potenza, ovvero prima di averlo osservato...
Scusate l'intromissione

P.S. Ciao Sergio! Quanto tempo ^_^