Media geometrica semplice e media geometrica ponderata Stampa
Scritto da Giorgio Rancati   
Lunedì 06 Marzo 2006 01:00

Media geometrica semplice

Problema: Data una tabella *Tabella1* e il campo *Numero* contenente i valori  10; 15; 12; 13 si vuole calcolare  la media geometrica semplice.
--------
Tabella1
Numero
10
15
12
13
--------
Matematicamente la questione è semplice, si calcola il prodotto dei valori contenuti nella colonna e poi si esegue la radice n, dove n è il numero degli elementi, esempio:  Mg = (10 * 15 * 12 * 13)^(1/4)
Nel linguaggio SQL di Access non esiste una funzione di aggregazione che esegue la moltiplicazione dei vari elementi, per risolvere possiamo trasformare le moltiplicazioni in somme e la radice in divisione grazie alle proprietà dei logaritmi.
Log(Mg)=(Log(10)+Log(15)+Log(12)+Log(13))/4
elevando il numero e all'esponente calcolato otteniamo la nostra media geometrica
Mg=Exp((Log(10)+Log(15)+Log(12)+Log(13))/4)

Abbiamo eliminato le moltiplicazioni scomode, quindi possiamo applicare la formula ad una query di Access

 SELECT Exp(Sum(Log(Numero))/Count(Numero)) AS MediaG FROM Tabella1

Visto che la sommatoria dei logaritmi diviso il loro numero non è altro che la media aritmetica, possiamo semplificare ulteriormente con la funzione di aggregazione Avg () o Media

SELECT Exp(Avg(Log(Numero))) AS MediaG FROM Tabella1

 

Media geometrica ponderata

Problema: Data una tabella *Tabella1* con il campo *Evento* contenente i valori  14; 13; 11  e il campo *Frequenza* contenente i valori 2; 3; 5 si vuole calcolare la media geometrica ponderata..
--------
Tabella1
Evento Frequenza
14        2
13        3
11        5
--------
Anche in questo caso applicando i logaritmi alla formula della media geometrica ponderata
MGp = (14^2 * 13^3 * 11^5) ^ (1/(2+3+5))
otteniamo
Log(MGp)=(Log(14)*2+Log(13)*3+Log(11)*5)/(2+3+5)
elevando il numero e all'esponente calcolato otteniamo la nostra media geometrica ponderata
MGp=Exp((Log(14)*2+Log(13)*3+Log(11)*5)/(2+3+5))

Adesso applichiamo la formula ad una query di Access

SELECT Exp(Sum(Log(Evento)*Frequenza)/Sum(Frequenza)) AS MediaGp FROM Tabella1

 

NB: per semplicità ho scritto le formule con la notazione usata nel linguaggio VBA di Office, (avrete notato che usa la funzione Log() e non Ln() per ottenere il logaritmo naturale), comunque, in questo modo con un semplice copia/incolla si possono verificare i vari passaggi nella finestra immediata dell'editor Visual Basic.

 

 

 


Sistema operativo: WIN32
Applicazioni: Access 97, Access 2000, Access 2002/XP, Access 2003

 

Ultimo aggiornamento Domenica 27 Settembre 2009 07:35