Calcolo delle probabilità - Un caso reale

Messaggioda GiusItaly » 22/05/2018, 14:55

Ciao a tutti!

[Perdonatemi per il post chilometrico che segue, mi sono reso conto solo dopo di aver scritto così tanto.
Spero almeno possa nascerne una discussione che sia utile a quelli che investiranno un pò del loro tempo nel leggerla.
Vi anticipo che il post riguarda la modellizzazione e lo studio di un problema reale di calcolo delle probabilità; mi son reso conto infatti che ciò non è mai così semplice come potrebbe sembrare e si finisce spesso o per iper semplificare o (come ne mio caso) per cadere vittima della cosidetta "paralysis by analysis" ]


Per facilitarvi la comprensione del problema sul quale mi sto scervellando da qualche giorno devo farvi un breve incipit dato che proviene dalla realtà e non sono ancora pervenuto ad una sua formulazione chiara e precisa in termini matematici.

Nell'ultimo mese ho iniziato a lavorare part-time in una azienda che produce componenti per l'elettronica, e tra le altre cose si producono contatori di energia elettrica, quelli che tutti abbiamo in casa per intenderci.
Prima di essere terminati e imballati, questi contatori devono superare una fase di "calibrazione" in cui vengono tarati e testati per essere sicuri che effettuino delle misurazioni corrette.
Nel reparto di calibrazione dove lavoro sono presenti 4 macchine diverse gestite da noi operai che ci occupiamo di caricare su di esse dei contatori da calibrare, dare l'avvio e poi scaricarli al termine del processo. Ogni macchina lavora indipendentemente dalle altre e ha un suo tempo di lavorazione che può variare sensibilmente nel caso ci fossero dei contatori che non superano qualche test. Al termine di ogni calibrazione i risultati vengono registrati su un database e viene salvata anche la data esatta in cui la calibrazione è terminata nel formato yyyy-mm-dd time24.
Questa data viene poi utilizzata dai sistemi informatici per assegnare una sigla "univoca" alla run di calibrazione, ovvero all'insieme dei contatori che l'hanno effettuata nello stesso momento sulla stessa macchina.
Come potrete intuire, dato che può succedere che due calibrazioni di due macchine diverse terminino nello stesso identico momento (ora, minuti e secondi), può succedere che due run di calibrazione di macchine diverse finiscano per avere la stessa sigla. Conseguenza: l'unicità va farsi benedire e ciò manda in crisi alcune schermate dei sistemi informatici che non considerano questa evenienza.
E ciò è quello che è effettivamente successo qualche giorno fa :lol:
Adesso, al di là del fatto che per ovviare a ciò basterebbe considerare anche la macchina sulla quale è stata effettuata la calibrazione oltre alla data, ho iniziato a pensare a quale poteva essere la probabilità che si verificasse un evento del genere.


Quindi, qual'è la probabilità che un evento del genere accada in un arco temporale di che so, n ore, un giorno, m giorni? E se invece volessi sapere quanti giorni devono passare prima di avere una probabilità del x% che si verifichi?


La prima cosa che mi è venuta in mente è stata il paradosso del compleanno, per cui ho pensato "si, effettivamente in un periodo temporale di qualche giorno al massimo è un evento abbastanza probabile".
Poi però cercando di fare qualche calcolo ho realizzato che non si trattava di un semplice problema di calcolo combinatorio: le calibrazioni di una stessa macchina non possono avere "slot temporali" a caso ma devono essere quanto meno distanziati del tempo di lavorazione di quella macchina, questi tempi di lavorazione nella realtà non sono ben precisi ma variabili entro un certo range, le persone che gestiscono le macchine non avviano la calibrazione successiva esattamente al termine di quella precedente...
Insomma per poter fare qualche calcolo ed essere più fedeli alla realtà bisogna aggiungere altre ipotesi e informazioni, e così mi ritrovo travolto dalla sola formalizzazione di un problema che all'apparenza mi sembrava così semplice.


Ma quindi, in sostanza, come procedo? Ipotizzo che i tempi di avvio delle macchine da parte degli operai al termine di una calibrazione abbiano una distribuzione di probabilità uniforme in un range di tempo determinato? Stessa cosa per i tempi di lavorazione delle macchine?
E dopo, se anche ipotizzassi ciò, come farei effettivamente a calcolare la probabilità che mi interessa?

Aspetta, aspetta, e se invece così facendo stessi solo esagerando e complicando inutilmente il problema?



Insomma, come si procede quando si ha a che fare con problemi del genere?
Mi piacerebbe sentire il parere di qualcuno con più esperienza di me :roll:



Per i moderatori: ho ritenuto che la domanda andasse oltre un semplice quesito di probabilità e statistica per cui ho voluto postarlo in questa sezione, nel caso in cui fosse sbagliato mi scuso in anticipo!
Avatar utente
GiusItaly
Starting Member
Starting Member
 
Messaggio: 21 di 48
Iscritto il: 17/05/2012, 14:22

Re: Calcolo delle probabilità - Un caso reale

Messaggioda dissonance » 04/06/2018, 17:05

Mi dispiace che non questa domanda non stia ricevendo attenzione perché è interessante. Io purtroppo non sono in grado di rispondere. Potresti provare a postare una versione compatta della domanda nella sezione di Statistica e probabilità. Mi raccomando, è importante che tu sintetizzi perché nessuno si mette a leggere con calma tutto questo papiro.
dissonance
Moderatore
Moderatore
 
Messaggio: 14043 di 27757
Iscritto il: 24/05/2008, 19:39
Località: Nomade

Re: Calcolo delle probabilità - Un caso reale

Messaggioda veciorik » 07/06/2018, 23:08

GiusItaly ha scritto:... se anche ipotizzassi ciò, come farei effettivamente a calcolare la probabilità che mi interessa?

Aspetta, aspetta, e se invece così facendo stessi solo esagerando e complicando inutilmente il problema?


IMHO è sufficiente un ordine di grandezza per valutare l'entità del problema.

Ad esempio ipotizzo un ciclo medio di 10 minuti = 600 secondi, con distribuzione uniforme.

Probabilità di non coincidenza con 4 macchine: \((1-1/600) * (1-2/600) * (1-3/600) = 1 - (1+2+3)/600\) circa.

La coincidenza indesiderata ha probabilità 1% in 10 minuti, 6% in un ora, 100% in 17 ore.

Correggerei la chiave prima di inserirla nel db (se centralizzato): se già esiste aggiungo 1, 2, 3, .... secondi.
"Dietro ogni problema c'è un'opportunità" - "Nelle prove naturali non si deve ricercare l'esattezza geometrica" - "Stimo più il trovar un vero, benché di cosa leggiera, che 'l disputar lungamente delle massime questioni senza conseguir verità nissuna" (Galileo Galilei)
Avatar utente
veciorik
Senior Member
Senior Member
 
Messaggio: 369 di 1135
Iscritto il: 07/03/2014, 23:42
Località: stra(VE)

Re: Calcolo delle probabilità - Un caso reale

Messaggioda GiusItaly » 14/06/2018, 12:17

dissonance ha scritto:Mi dispiace che non questa domanda non stia ricevendo attenzione perché è interessante. Io purtroppo non sono in grado di rispondere. Potresti provare a postare una versione compatta della domanda nella sezione di Statistica e probabilità. Mi raccomando, è importante che tu sintetizzi perché nessuno si mette a leggere con calma tutto questo papiro.


Grazie dissonance, il problema è proprio che non riesco a scriverne una versione compatta. Riguardo al sintetizzare ti do ragione, ammetto di essere il primo a non leggere qualcosa se è troppo lungo a meno che non ne abbia proprio voglia.


veciorik ha scritto:
GiusItaly ha scritto:... se anche ipotizzassi ciò, come farei effettivamente a calcolare la probabilità che mi interessa?

Aspetta, aspetta, e se invece così facendo stessi solo esagerando e complicando inutilmente il problema?


IMHO è sufficiente ...




Hmm veciorik credo di non aver reso bene l'idea.
Quel ragionamento sarebbe valido nel caso volessi rispondere a una domanda del tipo: "Prendendo un'ora a caso della giornata, quale è la probabilità che le quattro macchine terminino nello stesso momento?" e ipotizzassi che le macchine possano terminare in un qualsiasi momento dei 3600 secondi di quell'ora.

Ma nella realtà non è proprio così, la probabilità che le macchine finiscano la calibrazione non è distribuita uniformemente in tutti i 3600 secondi.

Ti faccio un esempio: mettiamo che il tempo di calibrazione della prima macchina sia 12 minuti esatti e che gli operai facciano partire quella successiva in un tempo massimo di 2 minuti. Ipotizziamo adesso che una calibrazione sia terminata esattamente alle 12:30.
In base alle informazioni che abbiamo siamo sicuri che la prossima calibrazione non finirà nè prima delle 12:42 nè dopo le 12:44

Immaginando il tempo come una retta, è come se i momenti in cui possano terminare le calibrazioni siano distribuiti su degli intervallini (*). Non so però se questa informazione sia rilevante nel caso generale o entri in gioco solo nel caso si considerino le probabilità condizionate...


Specifico qualche altra informazione.
Nel reparto di calibrazione sono presenti 4 macchine, CAL1, CAL2, CAL3, CAL4 con i seguenti tempi di calibrazione e rispettivi range (dovuti ad eventuali errori nella fase di calibrazione): 12min \(\displaystyle \pm \) 1min, 15min \(\displaystyle \pm \) 2min, 12min \(\displaystyle \pm \) 1min, 30min \(\displaystyle \pm \) 3min. Al termine di una calibrazione gli operai avviano quella successiva entro al massimo 2 minuti.
Ipotizziamo per semplicità che la durata esatta di una calibrazione abbia distribuzione uniforme nel suo range di tempo (ad esempio per CAL4 sarebbe una distrib. uniforme tra 27 e 33 minuti) e che anche il momento esatto in cui gli operai azionano le macchine abbia distribuzione uniforme in quel range di due minuti.
(Anche se sarebbe davvero interessante vedere cosa accadrebbe se avessero distribuzioni continue di diverso tipo come ad esempio una gamma...)

Quale è la probabilità che almeno due macchine terminino la calibrazione in una generica ora della giornata?
Quale è la probabilità che almeno due macchine terminino la calibrazione in n ore di una giornata?

Inizio ad avere l'impressione che per calcolare queste probabilità sia necessario usare il teorema di Bayes...

(*) Update: Ho fatto questo grafico per cercare di rendere l'idea.
Immagine
Per evitare di incasinarlo troppo ho volutamente disegnato gli "intervallini" solo per CAL1 e CAL4 dopo la prima calibrazione.
Avatar utente
GiusItaly
Starting Member
Starting Member
 
Messaggio: 22 di 48
Iscritto il: 17/05/2012, 14:22

Re: Calcolo delle probabilità - Un caso reale

Messaggioda GiusItaly » 19/06/2018, 18:23

Ok, penso di essere arrivato ad una soluzione. In un primo momento ho pensato fosse necessario considerare le probabilità condizionate e usare la formula delle probabilità totali, poi mi sono accorto che date le ipotesi semplificative (indipendenza tra v.a. ) non ce ne era il bisogno.

Siano
\(\displaystyle \Omega = \{ 1, 2, 3, ... \} \;\;\text{Insieme dei secondi trascorsi a partire dall'inizio della giornata lavorativa}\\
R_j^i = \text{Secondi di ritardo con cui gli operai avviano la calibrazione i-esima della macchina j-esima (v.a.)}\\
D_j^i= \text{Durata della calibrazione i-esima sulla macchina j-esima (v.a.)}\\
X_j^i = \text{Secondo al quale termina la calibrazione i-esima della macchina j-esima (v.a.)}\\
i\in\{0,1,2,...\}\\
j\in\{1,2,3,4\} \;\text{Indici che corrispondono alle quattro macchine}\;CAL_1,CAL_2,CAL_3,CAL_4 \)

Come sono fatte queste variabili aleatorie?

Assumiamo per semplicità che le \(\displaystyle R_i^j \) siano tra di loro indipendenti e che abbiano una distribuzione discreta uniforme sul loro supporto. In realtà si potrebbe dire che i ritardi su di una stessa macchina sono tra di loro correlati (se gli operai hanno avviato la calibrazione precedente con molto ritardo si guardano bene dal farlo di nuovo alla successiva altrimenti verranno rimproverati dal loro superiore) e che non è detto che abbiano una distribuzione uniforme, ma evitiamo di complicare ulteriormente le cose.

\(\displaystyle supp(R_j^i)=\{0,1,2,3, \ldots,2\cdot60\}\\
P(R_j^i=t)= \frac1{2\cdot60+1} = p_r \; \text{ se} \; t\in supp(R_j^i),\text{ 0 altrimenti} \)

Consideriamo che anche le durate delle calibrazioni abbiano delle distribuzioni discrete uniformi e che siano tra di loro indipendenti.(Anche quì, è un ipotesi del tutto arbitraria che facciamo per semplificarci la vita)

\(\displaystyle supp(D_1^i)=\{11\cdot60, 11\cdot60+1, 11\cdot60+2, \ldots, 13\cdot60 \} \;\; \text{(I secondi tra 11 minuti e 13 minuti)} \\
supp(D_2^i)= \{13\cdot60, 13\cdot60+1, \ldots, 17\cdot60 \} \;\; \text{(I secondi tra 13 minuti e 17 minuti)} \\
supp(D_3^i)=supp(D_1^i) \\
supp(D_4^i)=\{27\cdot60, 27\cdot60+1, \ldots, 33\cdot60 \} \;\; \text{(I secondi tra 27 minuti e 33 minuti)} \)

\(\displaystyle P(D_1^i=t)= \frac1{2\cdot60+1} = p_{d_1} \; \text{ se} \; t\in supp(D_1^i),\text{ 0 altrimenti} \\
P(D_2^i=t)= \frac1{4\cdot60+1} = p_{d_2} \; \text{ se} \; t\in supp(D_1^i),\text{ 0 altrimenti} \\
P(D_3^i=t)= P(D_1^i=t) \\
P(D_4^i=t)= \frac1{6\cdot60+1} = p_{d_4} \; \text{ se} \; t\in supp(D_1^i),\text{ 0 altrimenti} \)


Adesso arriva la parte interessante :D

\(\displaystyle X_j^i=\sum_{k=0}^i R_j^k+D_j^k \;\;\; \text{Somma di v.a. indipendenti} \)
E per \(\displaystyle j\geq1 \) si ha \(\displaystyle X_j^i=\sum_{k=0}^i R_j^k+D_j^k = X_j^{i-1} + D_j^i + R_j^i \)

Cosa possiamo immediatamente osservare?
Che i momenti in cui terminano le calibrazioni di macchine diverse sono tra di loro indipendenti (indipendentemente da \(\displaystyle i \) ) ma che quelli in cui terminano le calibrazioni di una stessa macchina no.
Anzi, esse determinano in maniera "rigida" quando è che finiranno tutte le calibrazioni successive sulla stessa macchina.

Proviamo adesso a descrivere le leggi delle \(\displaystyle X_j^i \). Fissiamo \(\displaystyle j \) e vediamo cosa succede al variare di \(\displaystyle i \).

\(\displaystyle
X_j^0 = R_j^0 + D_j^0 \\
supp(X_j^0)=\{min(supp(R_j^0))+min(supp(D_j^0)),max(supp(R_j^0))+max(supp(D_j^0)) \\
P(X_j^0=t)=\sum_{k=min(supp(R_j^0))}^{max(supp(R_j^0))} P(R_j^0=k) \cdot P(D_j^0=t-k) \;\;\;\; \text{[Convoluzione]}\\
\)


\(\displaystyle
X_j^1 = R_j^0 + D_j^0 + R_j^1 + D_j^1 = X_j^0 + R_j^1 + D_j^1 \\
supp(X_j^1) = \cdots = \\= \{\sum_{k=0}^1 min(supp(R_j^k))+min(supp(D_j^k)),\sum_{k=0}^1 max(supp(R_j^k))+max(supp(D_j^k)) \} \\
P(X_j^1=t)=P(X_j^0+(D_j^1+R_j^1)=t) = \\
= \sum_{k=min(supp(X_j^0))}^{max(supp(X_j^0))} P(X_j^0=k) \cdot P(R_j^1+D_j^1=t-k) = \\
= \sum_{k=min(supp(X_j^0))}^{max(supp(X_j^0))} P(X_j^0=k) \cdot \sum_{s=min(supp(R_j^1))}^{max(supp(R_j^1))} P(R_j^1=s) \cdot P(D_j^1=t-s-k) = \\
= \sum_{k=min(supp(X_j^0))}^{max(supp(X_j^0))}{\sum_{m=min(supp(R_j^0))}^{max(supp(R_j^0))} P(R_j^0=m) \cdot P(D_j^0=k-m)} \cdot \sum_{s=min(supp(R_j^1))}^{max(supp(R_j^1))} P(R_j^1=s) \cdot P(D_j^1=t-s-k)
\)

\(\displaystyle \vdots \)

Sembrano dei formuloni complicati ma in realtà data la semplicità di \(\displaystyle R_j^i \) e \(\displaystyle D_j^i \) queste espressioni si possono semplificare notevolmente. Infatti:

\(\displaystyle
P(X_j^0=t)=\sum_{k=min(supp(R_j^0))}^{max(supp(R_j^0))} P(R_j^0=k) \cdot P(D_j^0=t-k) = \\
= p_r \sum_{k=0}^{2\cdot60} P(D_j^0=t-k) =\\
= p_r \cdot p_{d_j} \cdot N \\
\)

Dove \(\displaystyle N \) è il numero di modi in cui posso prendere un numero da \(\displaystyle supp(R_j^0) \)e uno da \(\displaystyle supp(D_j^0) \) tali per cui la somma sia uguale a \(\displaystyle t \). Prima di andare avanti dobbiamo quindi risolvere un'altro problema...

Dati due intervalli di numeri interi e un numero \(\displaystyle s \), per esempio {0,1,2,3,5} e {8,9,10} in quanti modi posso scegliere un numero dal primo insieme e uno dall'altro tali per cui la somma è uguale ad \(\displaystyle s \) ?




Per il momento mi fermo un pò, tornerò a scrivere quando avrò trovato qualcosa.

Nel frattempo volendo si può già risolvere il problema iniziale del calcolo delle probabilità: anche se quelle formule sono orrende e quasi impossibili da trattare con carta e penna è abbastanza semplice scrivere due righe di codice per effettuare i calcoli che ci servono.
Resta comunque da formalizzare la probabilità in termini di condizioni sulle \(\displaystyle X_j^i \).
Avatar utente
GiusItaly
Starting Member
Starting Member
 
Messaggio: 23 di 48
Iscritto il: 17/05/2012, 14:22

Re: Calcolo delle probabilità - Un caso reale

Messaggioda GiusItaly » 20/06/2018, 16:42

GiusItaly ha scritto:Dati due intervalli di numeri interi non negativi \(\displaystyle A=\{a_{min},a_{min}+1,\cdots,a_{max}\}, B=\{b_{min},b_{min}+1,\cdots, b_{max}\} \) e un numero \(\displaystyle s \), in quanti modi posso scegliere un numero dal primo insieme e uno dall'altro tali che la loro somma sia uguale ad s ?


Innanzitutto osserviamo che questa domanda è equivalente al chiedersi quante siano le soluzioni intere non negative dell'equazione \(\displaystyle x_1 + x_2 = s \) con \(\displaystyle a_{min} \leq x_1 \leq a_{max} \), \(\displaystyle b_{min} \leq x_2 \leq b_{max} \).

Se non avessimo queste due condizioni non dovremmo più fare altro in quanto sapremmo subito che il numero che cerchiamo è dato da \(\displaystyle \binom{s+2-1}{2-1} \).1

Consideriamo \(\displaystyle a_{min}+b_{min} \leq s \leq a_{max}+b_{max} \). (Se così non fosse avremmo 0 soluzioni. )

Poniamo \(\displaystyle z_1=x_1-a_{min} \) e \(\displaystyle z_2=x_2-b_{min} \).
Avremo \(\displaystyle z_1+z_2=s-a_{min}-b_{min} \) con \(\displaystyle 0 \leq z_1 \leq a_{max}-a_{min}, \;\; 0 \leq z_2 \leq b_{max}-b_{min} \).
Si osserva che per come si è ottenuta il numero di soluzioni di questa equazione è lo stesso di quella precedente.

Come calcoliamo questo numero?2

Contiamo il numero di soluzioni che avremmo se le \(\displaystyle z_i \) non fossero limitate superiormente.

Esse sono \(\displaystyle \binom{(s-a_{min}-b_{min})+2-1}{2-1} = \binom{s-a_{min}-b_{min}+1}{1} = s-a_{min}-b_{min}+1 \)

Adesso sottraiamo il numero di soluzioni "aggiuntive" che non possiamo accettare poichè le \(\displaystyle z_i \) assumerebbero valori più grandi di quelli ammessi.

Numero di soluzioni per \(\displaystyle z_1 \geq a_{max}-a_{min}+1 \) :

\(\displaystyle \binom{((s-a_{min}-b_{min})-(a_{max}-a_{min}+1))+2-1}{2-1} = \binom{s-b_{min}-a_{max}}{1} \)

Numero di soluzioni per \(\displaystyle z_2 \geq b_{max}-b_{min}+1 \) :

\(\displaystyle \binom{((s-a_{min}-b_{min})-(b_{max}-b_{min}+1))+2-1}{2-1} = \binom{s-a_{min}-b_{max}}{1} \)



Quindi alla fine abbiamo:


\(\displaystyle \binom{s-a_{min}-b_{min}+1}{1} - \binom{s-b_{min}-a_{max}}{1} - \binom{s-a_{min}-b_{max}}{1} \)

con la convenzione che \(\displaystyle \binom{n}{k} = 0 \) se \(\displaystyle n \leq 0 \)




A questo punto ci si potrebbe chiedere: ma così facendo non abbiamo rimosso due volte il numero delle soluzioni per cui contemporaneamente \(\displaystyle z_1 \geq a_{max}-a_{min}+1 \) e \(\displaystyle z_2 \geq b_{max}-b_{min}+1 \) ?

La risposta è no, poichè per le condizioni che abbiamo imposto sulle \(\displaystyle z_i \) ed \(\displaystyle s \) tale situazione è impossibile.
Giusto per vedere un pò cosa accade, consideriamo ad esempio \(\displaystyle z_1 = a_{max}-a_{min} +1 \).
In tal caso si avrà \(\displaystyle a = a_{max} +1 \) e poichè \(\displaystyle s\leq a_{max} + b_{max} \) e avremo \(\displaystyle b + a_{max}+1 \leq a_{max} + b_{max} \rightarrow b \leq b_{max}-1 \)



Resta ora da terminare la descrizione delle \(\displaystyle X_j^i \) e poi il calcolo della probabilità.
Avatar utente
GiusItaly
Starting Member
Starting Member
 
Messaggio: 24 di 48
Iscritto il: 17/05/2012, 14:22


Torna a Pensare un po' di più

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite