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