Calcolo Mediana

  • Creatore Discussione Creatore Discussione jacobous
  • Data di inizio Data di inizio

jacobous

Nuovo Utente
30 Apr 2014
6
0
1
Buonasera a tutti

ho un database access con una tabella anagrafica, e dovrei calcolare la mediana dell'età.

per la media esiste la funzione standard AVG ma per la mediana non esiste nessuna funzione.

ho letto in rete che per calcolare la mediana bisogna creare un modulo , ma vorrei evitare di scrivere codice VBA.
è possibile calcolare la mediana tramite query? (anche in più passaggi) .

Grazie a tutti per la collaborazione

Andrea
 
ciao
non esiste una formula matematica.
per prima cosa, se i dati non sono raggruppati in classi, ti conviene ordinarli in modo crescente.
come saprai la mediana è quel valore che divide in due i dati, i più bassi da una parte i più alti dall'altra.
devi considerare se hai un numero di dati pari o dispari.
1) numero dati dispari
sia N il numero di dati (es: n1, n2,....n99) ordinati
dividi N per due con una divisione intera (senza arrotondare) N/2 = n
la mediana è rappresentata dal dato che (avendoli ordinati) occupa la posizione n+1
es: la mediana è data dal valore del dato 50, 99/2+1=50
2) numero di dati pari
dividi sempre N per 2 = n
in questo caso la mediana è compresa tra il dato che occupa la posizione n e quello che occupa la posizione n+1 , qundi si stima il valore
mediana= (valore[n]+valore[n+1])/2 in questo caso con gli arrotondamenti che servono
 
con MS SQL la mediana si calcola facilmente, penso che la query si spieghi da sola,
in ogni caso, si divide la tabella originale in due con le relative select,
dalla prima ordinata in modo ascendente si prende il valore massimo,
dalla seconda ordinata in modo discendente si prende il valore minimo,
si fa la media dei due valori ottenendo la mediana

se pari, estrae lo stesso record per entrambe le query
se dispari estrae i due contigui

non so come applicarla in access

grazie Borgo, spiegazione perfetta
ciao
Marino
Codice:
SELECT
(
  ( SELECT MAX(co_costo1) FROM
     ( SELECT TOP 50 PERCENT co_costo1 FROM componenti ORDER BY co_costo1 ) AS t1
  )
+ ( SELECT MIN(co_costo1) FROM
     ( SELECT TOP 50 PERCENT co_costo1 FROM componenti ORDER BY co_costo1 DESC) AS t2
  )
) / 2.0 as MEDIANA
 
scusa, ora tarda, rettifica,

se dispari, estrae lo stesso record per entrambe le query
se pari estrae i due contigui
ciao
Marino
 
ciao
una piccola notazione tecnica di statistica.
vedo che vuoi calcolare la mediana di una serie di età.
quanti dati hai?
se sono molti è molto probabile che il campione si distribuisca secondo la distribuzione normale, se è così nella distribuzione normale media, mediana e moda coincidono (almeno con grande approssimazione),
quindi è inutile calcolare la mediana (tra l'altro rognosa da trattare), ma ti basta calcolare la media che, come detto se la distribuzione è normale, coincide con la mediana.
 

Discussioni simili