UNIVERSITA’ DEL SALENTO CORSO DI LAUREA IN FISICA (a.a. 2007/2008) Corso di Laboratorio II (Prof. Antonio D’INNOCENZO) ESERCITAZIONE DI STATISTICA* Lo scopo di questa esercitazione è quello di cominciare ad utilizzare il software MATLAB ad un livello di base per le applicazioni statistiche.† Il package statistico di MATLAB si trova nella cartella \toolbox\stats; per avere una lista di tutte le funzioni disponibili basta digitare help stats. Introduzione Tipicamente MATLAB interpreta una matrice X di dati come una serie di colonne, dove ciascuna colonna corrisponde ad un esperimento, o gruppo, e le osservazioni fatte in ciascun esperimento sono riportate nella colonna. Il numero di esperimenti effettuati corrisponde al numero delle colonne. Il numero di osservazioni in ciascun esperimento è il numero delle righe. Ad es., se misuro la lunghezza di 100 bulloni, campionandoli dalla stessa scatola in tre giorni distinti, ho 3 esperimenti ognuno con 100 osservazioni. Statistica descrittiva Le funzionalità di statistica descrittiva di nostro interesse riguardano: - misure di tendenza centrale: media, mediana, ..., - misure di dispersione: varianza, deviaz. standard, ..., - raggruppamento dei dati, - analisi e stima empirica della distribuzione dei dati:quantili e descrizione grafica Indici di posizione Le misure di localizzazione dei dati comprendono: geomean media geometrica harmmean media armonica mean media aritmetica median mediana trimmean media trimmed (ripulita) * La presente guida è stata realizzata dal responsabile del corso con la collaborazione del Dott. F. Paladini del Dipartimento di Fisica dell’Università del Salento. † Nella stesura dei vari punti trattati oltre alla possibilità di errori di trascrizione dei comandi possono comparire anche inesattezze nelle procedure della cui segnalazione anticipatamente il docente responsabile ringrazia. 1 La media aritmetica è la stima più utilizzata e semplice della "posizione" della distribuzione dei dati, ed è la miglior stima della media se la distribuzione di origine è gaussiana, ma errori di acquisizione, outliers o anomalie possono facilmente e irrimediabilmente alterare la stima del centro della distribuzione. Questo inconveniente riguarda anche la media geometica e armonica, che però sono utili quando la distribuzione è lognormale o fortemente asimmetrica. La mediana e la media trimmed sono misure più robuste nei confronti degli ouliers. La mediana (50esimo percentile) cambia solo di poco anche se viene aggiunta una grande perturbazione a un qualunque dato. La media trimmed ignora una piccola percentuale dei dati con valori massimi e minimi, rispetto al totale, per poi calcolare la media aritmetica dei dati rimasti. Misure di dispersione Le misure di dispersione indicano quanto i dati sono addensati o si discostano da una misura di posizione (e.g. media aritmetica). Le funzioni di MATLAB sono: iqr intervallo interquartile IQR, mad deviazione media assoluta MAD, range intervallo, std deviazione standard (std), var varianza. Il range è la differenza tra il massimo ed il minimo valore del campione, è la più semplice misura di dispersione, ma è anche la più sensibile alla presenza di dati anomali. La deviazione standard e la varianza sono le misure più popolari della dispersione, e sono ottimali quando i dati sono stati estratti da una distribuzione gaussiana, in particolare, la std è la miglior stima del parametro sigma. Né la std, né la varianza sono robuste nei confronti dei cosidetti "outliers": un dato separato dall'insieme del campione può alterare entrambe le misure di una quantità arbitrariamente grande. La deviazione media assoluta, MAD, è la media della differenza assoluta tra i dati e la media; essa è sempre sensibile agli outliers, ma varia meno della std in presenza di dati "anomali". L'intervallo di interquartile, IQR, è la differenza tra il 75esimo e il 25esimo percentile. Poichè solo il 50% dei dati influenza la IQR (il primo e l'ultimo 25%), essa è robusta rispetto agli outliers. Distribuzioni di probabilità e funzioni di ripartizione Le distribuzioni di probabilità servono per descrivere i risultati di esperimenti quando i risultati sono soggetti a variazioni casuali. La natura stessa dell'esperimento determina quale distribuzione è più appropriata per modellizzare i risultati random. La trattazione probabilistica non predice il risultato di un singolo esperimento, ma fornisce: -la probabilità di avere un particolare valore come risultato se i dati sono discreti - la probabilità che il risultato cada in un certo intervallo per dati continui. Le funzioni di distribuzione di probabilità (pdf) di MATLAB sono: Continue di dati Continue statistiche Discrete Beta (betapdf) Chi quadro (chi2pdf) Binomiale (binopdf) Esponenziale (exppdf) Chi quadro non centrale (ncx2pdf) Uniforme discreta (unidpdf) Gamma (gampdf) F (fpdf) Geometrica (geopdf) 2 Lognormal (lognpdf) F non centrale (ncfpdf) Hypergeometrica (hygepdf) Normale (normpdf) t di Student(tpdf) Binomiale negativa (nbinpdf) Rayleigh (raylpdf) t di student non centrale (nctpdf) Poissoniana (poisspdf) Uniforme (unifpdf) Weibull (weibpdf) Se la distribuzione è discreta la pdf è la probabilità di osservare un particolare valore. Se la distribuzione è continua la pdf rappresenta la densità di probabilità dei dati, e non la probabilità, che per ogni particolare singolo valore è nulla. In questo caso si deve considerare la probabilità che il dato cada in un particolare intervallo, da calcolare come integrale della pdf sull'intervallo di interesse. Per ciascuna pdf MATLAB fornisce le seguenti funzioni: Distribuzione della densità di probabilità (pdf) Distribuzione comulativa della densità di probabilità (cdf) Funzione inversa della cdf Generatore di numeri pseudocasuali Varianza e media parametriche La distribuzione della densità di probabilità calcola la probabilità relativa a ciascun valore dei dati se questi sono discreti, e calcola la densità di probabilità se i dati variano con continuità (pdf_.m, le funzioni che calcolano le diverse pdf sono riportate tra parentesi nella tabella). La cdf di una pdf , definita per una v.a. continua come: viene chiamata con i comandi normcdf, betacdf,... Con la funzione cdf si può calcolare la probabilità associata a un qualunque intervallo dei dati. Le funzioni inverse delle cdf accettano come argomento in ingresso un valore di probabilità p, e forniscono in uscita il valore di x tale che la probabilità di osservare valori minori o uguali ad x è proprio p, ovvero la x tale che l'integrale della pdf da -inf a x è uguale a p. I comandi sono norminv, betainv... . Ciascuna pdf ha una forma funzionale nella quale compaiono i parametri che la caratterizzano. A partire dal campione, si può effettuare una stima di massima verosimiglianza dei parametri (MLE Maximum likelihood estimation): si ipotizza che il set di dati segua una certa distribuzione (eg. gaussiana, esponenziale,...) e si ricavano i "migliori" valori dei parametri per descrivere i dati, unitamente al loro intervallo di confidenza. Vediamo ora come costruire il grafico di una funzione densità di probabilità. Prendiamo ad esempio la distribuzione t di Student, a cui corrisponde la funzione tpdf. Dall'help (help tpdf) apprendiamo che la funzione prende due argomenti: >>y = tpdf(x,nu) un vettore di ascisse x e i gradi di libertà nu, e restituisce un vettore y che contiene i valori della pdf in corrispondenza delle ascisse. Dobbiamo quindi in primo luogo costruire un vettore di ascisse. Se vogliamo vedere il grafico della funzione di densità tra -5 e 5, il comando >>x=[-5:0.1:5]'; 3 produce una progressione aritmetica di ragione 0.1 che parte da -5 e termina a 5. I valori della pdf di una distribuzione t di Student con 3 gradi di libertà si otterranno quindi digitando ad es.: >>clear all >>x=[-5:0.1:5]'; >>yt=tpdf(x,3); A questo punto possiamo costruire il grafico: >>plot(x,yt) Se si aggiungono ulteriori argomenti, si può controllare l'aspetto del grafico: plot(x,yt,'r.') produce un grafico a punti di colore rosso. Una lista completa delle opzioni si può ottenere digitando help plot. Un grafico a punti o a barre può essere utile nel caso di distribuzioni discrete, visto che in questo caso la probabilità è definita solo in corrispondenza di valori interi delle ascisse. Disegniamo ora, utilizzando la stessa griglia di ascisse, la funzione di densità di una distribuzione normale standardizzata: >>clear all >>x=[-5:0.1:5]'; >>yn=normpdf(x,0,1); >>plot(x,yn) Se si desidera visualizzare più grafici sovrapposti, si utilizza il comando hold; ad esempio inserite le seguenti istruzioni: >>clear all >> x=[-5:0.1:5]'; >>hold on; >>yt=tpdf(x,3); >>yn=normpdf(x,0,1); >>plot(x,yn,'g'); >>plot(x,yt,'r'); >>hold off; Numeri casuali MATLAB possiede un generatore di numeri (matrici) pseudocasuali uniformi (rand) e normali standardizzati (randn); gli argomenti che questi generatori richiedono sono il numero di righe e colonne desiderati. Ad esempio, per avere un vettore colonna di dieci numeri casuali uniformi si digita rand(10,1). Il computer è una macchina deterministica e non è in grado di produrre numeri “veramente" casuali. Nel package stats sono inoltre compresi ulteriori generatori. Se vogliamo un campione di 100 osservazioni da una distribuzione esponenziale con media 1.8, digitiamo: >>r=exprnd(1.8,100,1); 4 Se vogliamo un campione di 100 osservazioni da una distribuzione normale con media 0 e deviaz. standard 1, digitiamo: >>r=randn(100,1); Una analoga istruzione consente di ottenere il set di osservazioni richiesto: >>r=normrnd(0,1,100,1); Istogramma e cdf empirica Una volta generati dei numeri casuali r=…, si può visualizzare il risultato costruendone l'istogramma: hist(r). Se si desidera specificare il numero di intervalli che l'istogramma deve utilizzare, lo si può inserire come secondo argomento:hist(r,20). Un secondo modo per visualizzare le proprietà empiriche di un campione è quello di disegnare la cdf empirica: cdfplot(r). >>clear all >> r=exprnd(1.8,100,1); >> hist(r) >> cdfplot(r) Applicazioni PREMESSA: Prima di iniziare a trattare le varie applicazioni che vengono di seguito proposte, un consiglio (o meglio un imperativo categorico) per tutti. Ogniqualvolta incontrate un nuovo comando, prima di procedere alla applicazione, digitate l’help relativo al comando incontrato e impadronitevi delle varie opzioni che lo riguardano. Per ogni argomento trattato fate una stampa dei risultati dell’applicazione e degli eventuali grafici che vengono creati. Il tutto costituirà il materiale della vostra esercitazione di statistica che presenterete al docente responsabile del corso una settimana prima dell’esame. Le applicazioni contrassegnate dal simbolo # sono da considerare facoltative. 1) Variabili aleatorie Cominciamo imparando ad usare MATLAB per calcolare le probabilità e le funzioni di ripartizione di v.a. discrete quali la binomiale e la poissoniana. Sia k una v.a. discreta con distribuzione di Poisson di parametro lambda= ultima cifra del vostro giorno di nascita. Calcolate: a) la probabilità P(k=3) b) P(k≥ 3) c) P(1≤k<5) d) P(k≥15) 5 La probabilità della v.a. poissoniana k di parametro lambda viene valutata digitando il comando poisspdf(k,lambda) mentre la funzione di ripartizione il comando poisscdf(k,lambda). Pertanto per rispondere rispettivamente alle precedenti questioni digitate: >>clear all >>lambda=…; >>Pa=poisspdf(3,lambda) >>Pb=1-poisscdf(2,lamda) >>Pc=posscdf(4,lambda)-poisscdf(0,lambda) >>Pd=1-poisscdf(14,lambda) Rispondete ora alle stesse domande nel caso in cui la v.a. discreta k segua una legge binomiale di parametri N e p. Fissate N=ultima cifra del vostro giorno di nascita (se questo numero è minore o uguale a quattro aggiungetegli il numero 5) e p=numero (arrotondato a due cifre decimali) che si ottiene facendo il reciproco dell’ultima cifra del vostro giorno di nascita (se questo numero è uguale ad uno aggiungetegli 2 prima di farne il reciproco) >>clear all >>N=....; % inserite il valore indicato >>p=…..; % inserite il valore indicato >>Pa=binopdf(3,N,p) >>Pb=1-binocdf(2,N,p) >>Pc=binocdf(4,N,p)-binocdf((0,N,p) >>Pd=1-binocdf(14,N,p) Possiamo calcolare con un’istruzione sintetica la media e la varianza per i dati delle nostre distribuzioni. Per la binomiale di parametri N e p possiamo digitare ad esempio: >>clear all >>N=…..; % inserite il valore utilizzato in precedenza >>p=…..; % inserite il valore utilizzato in precedenza >>[mu, var]=binostat(N,p) Possiamo calcolare simultaneamente le coppie (mu,var) al variare di N. Per esempio: con il comando N=linspace(10,100,10) viene generato un insieme di 10 valori da 10 a 100 egualmente spaziati. >>clear all >>p=…….. >>N=linspace(10,100,10); >>[mu, var]=binostat(N,p) MATLAB fornisce in successione rispettivamente i valori attesi e le varianze per i vari casi. Per v.a. continue valgono analoghe istruzioni. Per la v.a. normale di parametri mu e sigma avremo ad es.: >>clear all >> x=[-5:0.1:5]'; >>mu= ultima cifra del vostro giorno di nascita; 6 >>sigma=numero (arrotondato ad una cifra decimale) che si ottiene facendo il reciproco dell’ultima cifra del vostro giorno di nascita (se questo numero è uguale ad uno aggiungetegli 2 prima di farne il reciproco) >>p = normpdf(x,mu,sigma); %densità di probabilità >>F = normcdf(x,mu,sigma); %funzione di ripartizione >>alpha=0.25; >>q = norminv(alpha,mu,sigma) % (quantile di ordine alpha) Per l'esponenziale di parametro lambda: >>clear all >> x=[-5:0.1:5]'; >>lambda=….; % inserite il valore utilizzato precedentemente >>p = exppdf(x,1/lambda) %densità di probabilità >>F = expcdf(x,1/lambda) %funzione di ripartizione >>alpha=0.75 >>q = expinv(alpha,1/lambda) % (quantile di ordine alpha) Per la v.a. uniforme continua sull'intervallo (a,b): >>clear all >>a= ultima cifra del vostro giorno di nascita; >>b= ultima cifra del vostro giorno di nascita + 4; >>p= unifpdf(x,a,b) %densità di probabilità >>F= unifcdf(x,a,b) %funzione di ripartizione >>alpha=0.90 >>q= unifinv(alpha,a,b) % (quantile di ordine alpha) 2) Generazione di numeri casuali e visualizzazione dei dati Creiamoci innanzitutto un insieme di dati sui quali lavorare usando il comando rand. U = rand(n,m) genera una matrice U(n*m) di variabili pseudoaleatorie indipendenti e uniformi in (0,1), mentre u = rand(n,1) fornisce un vettore colonna di lunghezza n. Primo passo: generate ad esempio un set di numeri random uniformemente distribuiti tra zero ed uno e al prompt di MATLAB nel Command Window date le seguenti istruzioni: >>clear all >>n=100seguito dall’ultima cifra del vostro giorno di nascita se questo numero è pari, altrimenti gli aggiungete 1); >>data= rand(n,1); Secondo passo: Costruiamo due vettori di lunghezza n/2, il primo –diciamo data1- costituito dagli elementi di data di posto dispari e il secondo –diciamo data2- da quelli di posto pari: >>data1=data(1:2:n); >>data2=data(2:2:n); A questo punto plottiamo data1 in funzione di data2 col comando: 7 >>plot(data1,data2,'o') Se i punti sono uniformemente distribuiti sul quadrato [0,1]*[0,1] allora possiamo pensare che non ci sia correlazione fra i vari elementi del vettore data. Generazione di altre variabili diverse dalla uniforme: come detto MATLAB le fornisce nella propria libreria statistica, tutte partono dal generare numeri indipendenti uniformi (0,1) poi trasformati. Ad es. binornd, unifrnd, normrnd, poissrnd...(vedere i rispettivi help per conoscere le modalità di generazione dei dati pseudocasuali). Digitate: >>clear all >>rand('state' ,sum(100*clock)) % predisponiamo il seme del generatore >>n=10seguito dall’ultima cifra del vostro giorno di nascita se questo numero è pari, altrimenti gli aggiungete 1); >>data= normrnd(0,1,n,1); >>data1=u(1:2:n); >>data2=u(2:2:n); >>plot(data1,data2,'o') %Se vogliamo inserire una griglia sul grafico aggiungeremo il comando grid on. %Lo stesso tipo di grafico può essere ottenuto col comando scatter: >>scatter(data1,data2, 'o') >>grid on Con n numeri pseudocasuali uniformemente distribuiti tra 0 ed 1 possiamo creare ad esempio un insieme di n numeri interi con valori compresi tra 0 e 9: >>clear all >>rand('state' ,sum(100*clock)) % predisponiamo il seme del generatore >>n=100seguito dall’ultima cifra del vostro giorno di nascita; >>data=rand(n,1); >>datint=fix(10*data); %Creiamo ora un vettore delle frequenze assolute e un vettore delle frequenze relative di ciascuna %cifra (da 0 a 9): >>fass=hist(datint); >>frel=fass/n; %Grafico della distribuzione delle frequenze assolute: >>interv=[min(datint):max(datint)]'; % si traspone(') perché fass è un vettore colonna >>plot(interv,fass) % grafico >>bar(interv,fass) % diagramma a barre %Calcoliamo ora le frequenze cumulative e plottiamo il grafico: >>Fass(1)=fass(1) >>for i=2:length(interv) Fass(i)=Fass(i-1)+fass(i); end >>plot(interv,Fass) %Calcoliamo i valori di skewness e di curtosi della nostra distribuzione di dati: >>sk=skewness(datint) >>k=kurtosis(datint) %disegnare la densità cumulative empirica col comando: >>cdfplot(datint) 8 3) Verifica empirica della legge dei grandi numeri# La legge (debole) dei grandi numeri dice che data una successione di variabili casuali xi a media finita, la media campionaria delle osservazioni converge in probabilità al valore della media teorica mu. Una verifica empirica di questa legge consiste nel generare n numeri pseudocasuali, calcolarne la media campionaria xmedio=(x1+x2+x3+…..xn)/n e vedere con un plot come il valor medio campionario oscilla attorno a mu con le oscillazioni che diminuiscono al crescere di n. Generiamo una successione di variabili uniformemente distribuite tra 0 ed 1 e con valore atteso mu=1/2: >>clear all >>rand('state' ,sum(100*clock)); >>for i=1:100 xmedio(i)=sum(rand(i,1))/i; end >>plot(xmedio, '.') Provate anche con i=1000 e con i=10000 ma non andate oltre perchè MATLAB con un gran numero di iterazioni diventa molto lento. 4) Teorema del limite centrale# Verifichiamo sperimentalmente il teorema del limite centrale della statistica. Sommiamo inizialmente nv=50 variabili indipendenti con distribuzione uniforme ottenute per un numero np=10000 prove e confrontiamo la frequenza relativa della distribuzione della loro somma con la previsione teorica, vale a dire con una gaussiana di media e varianza note dalla teoria. Aumentiamo successivamente il numero di variabili portandolo a nv=100 e nv=500 e valutiamo graficamente il limite asintotico della distribuzione empirica alla gaussiana. >>clear all >>rand('state' ,sum(100*clock)) >> np=10000; >> nv=50; >> y=rand(nv,np); >> sy=sum(y); >> media=nv*.5; >> varianza=nv*1/12; >> x=[-5*sqrt(varianza):.5:5*sqrt(varianza)]+media; >> freq=hist(sy,x)/np/.5; >> dist=1/sqrt(2*pi*varianza)*exp(-(x-media).^2/(2*varianza)); >> figure >> hold on; >> bar(x,freq) >> plot(x,dist,'r') Ripetete la procedura ponendo nv=100 e successivamente nv=500. 5) Intervalli di confidenza per la media della popolazione a) Intervallo di confidenza per la media di una popolazione con varianza nota: 9 >>clear all >>rand('state' ,sum(100*clock)) >>mu= 0; >>sigma=1; >>n = 1seguito dall’ultima cifra del vostro giorno di nascita); >>x = normrnd (mu, sigma, n, 1); >>intconf= 0.95; >>xmedio = mean (x) >>qn =norminv ((1+intconf)/2, 0, 1) >>deltan= qn*sigma/sqrt(n) >>intervallo = [xmedio-deltan xmedio+deltan] Riprovate la precedente procedura rispettivamente con n=10seguito dall’ultima cifra del vostro giorno di nascita e con=100seguito dall’ultima cifra del vostro giorno di nascita e notate come diminuisce l'ampiezza dell'intervallo al variare di n. b) Intervallo di confidenza per la media di una popolazione con varianza incognita: >>clear all >>rand('state' ,sum(100*clock)) >>mu= 0; >>sigma=1; >>n = 1seguito dall’ultima cifra del vostro giorno di nascita); >>x = normrnd (mu, sigma, n, 1); >>intconf= 0.95; >>xmedio = mean (x) >>s=std(x) >>qt =tinv ((1+intconf)/2, n-1) >>deltat= qt*s/sqrt(n) >>intervallo = [xmedio-deltat xmedio+deltat] Riprovate anche in questo caso la precedente procedura con n=10seguito dall’ultima cifra del vostro giorno di nascita) e con=100seguito dall’ultima cifra del vostro giorno di nascita) e notate come diminuisce l'ampiezza dell'intervallo al variare di n. 5) Test d’ipotesi sulla media con varianza nota Considerate il seguente esempio: Una ditta sta commercializzando un nuovo prodotto ed e' interessata a conoscere l'altezza di tale manufatto. Si suppone che tale altezza sia normalmente distribuita con deviazione standard nota e pari a 20 mm. Disponendo dei seguenti dati (in mm) riguardo all'altezza di N=40 prodotti scelti a caso: 194 195 226 224 222 178 183 180 174 205 186 235 186 196 158 185 201 198 215 178 177 182 198 204 212 173 168 191 201 178 196 208 220 181 163 204 197 200 173 182 l’azienda intende effettuare il seguente test di ipotesi sulla media: 10 H0 (ipotesi nulla):la media e' uguale a 188 mm. H1 (ipotesi alternativa):la media e' diversa da 180 mm. 1) Utilizzando soltanto i primi n(<=N) dati del campione e come statistica la media campionaria, trovare la regione di accettazione per l'ipotesi nulla ad un livello di significativita' del 5% e trarre una conclusione sull'ipotesi fatta 2) Confrontare i risultati al punto 1) con quelli ottenuti con un livello di significativita' dell'1% 3) Confrontare i risultati al punto 1) con quelli ottenuti utilizzando tutti gli N=40 dati del campione. Impostiamo il problema con MATLAB: Punto 1) >>clear all >>sigma = 20; >>Dati =[194 195 226 224 222 178 183 180 174 205 186 235 186 196 158 185 201 198 215 178 177 182 198 204 212 173 168 191 201 178 196 208 220 181 163 204 197 200 173 182]; >>mu = 188; % Ipotesi nulla >>n =2seguito dall’ultima cifra del vostro giorno di nascita; >>xmedio = mean(Dati(1:n)); >>alpha = 0.05; % alpha = P(di rigettare l'ipotesi nulla anche se è vera) >>b= 1-alpha/2; >>qb= norminv(b,0,1); >>delta = qb * sigma / sqrt(n); >>mupiu = xmedio+ delta; >>mumeno = xmedio- delta; >>Test = mu > mumeno & mu < mupiu % Test = 1 ipotesi accettata, Test = 0 ipotesi rifiutata Punto 2) Per rispondere a questo punto occorre ripetere la successione di istruzioni precedente inserendo l’opportuno valore di alpha. Punto 3) Si tratta anche in questo caso di ripetere la procedura del punto 1) ponendo n=40 ed alpha=0.05. 6) Un’esercitazione un po’ più laboriosa (ma non meno interessante) Generate un campione di 360 numeri interi di una cifra estratti a caso da una distribuzione uniforme e disponeteli in 40 gruppi di 9 cifre . Per generare con MATLAB una tale tabella attenetevi alle seguenti istruzioni: >>n=360; >>rand('state' ,sum(100*clock)); >>N=fix(10*rand(n,1)); 11 >>hist(N) % per avere una visione d’insieme della distribuzione del vostro campione di cifre >>fprintf('%3.0f %3.0f %3.0f %3.0f %3.0f %3.0f %3.0f %3.0f %3.0f \n',N) %mantenete gli spazi vuoti indicati tra i gruppi di cifre da visualizzare sullo schermo). Dopo l’ultima istruzione apparirà nella videata del Command Window di MATLAB una successione di numeri casuali interi di una cifra disposti in quaranta righe di 9 elementi spaziati opportunamente per l’elaborazione successiva. Selezionate quindi col tasto destro del mouse nel Command Window di MATLAB la successione di cifre che compare sullo schermo e copiatela su un documento Word. Avrete così la vostra tabella personalizzata sulla quale lavorare. Il valore atteso e la varianza di una variabile casuale n, che assume i 10 valori interi da zero a nove con equiprobabilità (p=1/10), sono rispettivamente: 10 E[n] ni / 10 4.5 i 1 10 E[n E[n]]2 (ni E[n]) 2 / 10 8.5 2 i 1 Selezionate inizialmente dalla vostra tabella un sottoinsieme di K=90 numeri di una cifra. La cosa migliore è prendere una successione di numeri consecutivi per evitare di influire sulla loro selezione. Dopo aver sistemato i dati in una tabella di frequenza del tipo: Frequenza Freq. ass. Fi Cifra Freq. rel. fi 0 1 2 3 4 5 6 7 8 9 10 calcolate, utilizzando MATLAB, il valor medio campionario n n F i 1 10 i i F i 1 i 10 e la varianza campionaria s2 F (n n ) i 1 i 2 i K 1 Per evitare di riportare singolarmente nella istruzione dati=[…….] tutte le 90 cifre selezionate, ritornate con il cursore del Command Window di MATLAB sulla successione di 360 cifre e aggiungete manualmente alla fine di ogni riga (eccetto l’ultima) tre puntini (…) per indicare che l’istruzione continua al rigo successivo, dopodichè selezionate tutte le righe interessate e inseritele 12 nelle parentesi dell’istruzione dati=[…….]. Per calcolare la media e la varianza utilizzate poi le opportune istruzioni MATLAB (mean(dati) e var(dati)). Non sarebbe sorprendente se per il vostro campione di dimensione limitata di elementi trovaste che la media e la varianza si discostano dai valori attesi. Ci aspettiamo tuttavia che l’accordo migliori con campioni di K=180 e 360 elementi rispettivamente. Valutate la media e la varianza empiriche anche per questi campioni e confrontatele con i valori attesi. Considerate ora i gruppi di tre cifre della vostra tabella di 360 numeri interi e valutate qual è la frequenza del numero m= ultima cifra del vostro giorno di nascita, in ciascun gruppo di tre cifre (gruppi in numero totale di 120). Cioè quanti gruppi di tre cifre non contengono nessun m, quanti ne contengono uno, quanti ne contengono due, quanti ne contengono tre? La variabile casuale individuata dai quattro valori n=0,1,2,3 di frequenza considerati, è descritta da una distribuzione teorica di tipo binomiale N PN , p (n) p n (1 p) N n con N=3 p=1/10 n e con parametri di posizione e di larghezza rispettivamente dati da: E[n] N p 3 1 0.3 10 2 E[n E[n]] 2 N p (1 p) 3 1 9 27 0.27 10 10 100 Dopo aver registrato le frequenze sperimentali in una tabella del tipo: variabile n Frequenza 0 1 2 3 assoluta relativa valutate il valor medio e la varianza campionari della variabile n. Come si confrontano i valori di frequenza relativa con i valori di probabilità della distribuzione teorica? Utilizzate MATLAB per ricavare questi ultimi valori. Verificate l’attendibilità dell’ipotesi sulle frequenze, applicando (eventualmente con l’uso di MATLAB) un test del chiquadro al livello di significatività del 5%. Prendete ora in considerazione i gruppi di nove cifre nella tabella di di 360 numeri a caso a vostra disposizione (40 gruppi in totale). Effettuate un calcolo della distribuzione delle frequenze della cifra m (usata in precedenza) nei gruppi di nove cifre, considerando solo i valori di n=0,1,2,3 e 4. Costruite una tabella simile alla precedente e confrontate anche in questo caso, applicando ancora un test del chiquadro al livello di significatività del 5%, i valori di frequenza relativa con i rispettivi valori di probabilità (valutati utilizzando MATLAB) della corrispondente distribuzione teorica binomiale (stavolta con N=9 e p=1/10) Considerate infine l’approssimazione di Poisson per la distribuzione di frequenza delle cifre nei gruppi di nove numeri estratti a caso. Si ha N=9 e p=1/10, per cui lambda = N p =0.9 13 Calcolate, utilizzando MATLAB, le probabilità per i valori di n=0,1,2,3 e 4 considerando una distribuzione poissoniana con parametro lambda=0.9. Naturalmente non ci si deve attendere un accordo troppo elevato tra frequenze relative e probabilità perché N=9 è molto distante da N=∞ e p=1/10 non è un valore di probabilità troppo piccolo, ma comunque il confronto con la nostra distribuzione di frequenza campionaria resta interessante. Verificate con un test del chiquadro al livello di significatività del 5% l’attendibilità dell’adattamento della poissoniana al vostro campione di frequenze. 14