Vai al contenuto

Media e deviazione standard tra campi

Le funzioni di aggregazione di QGIS agiscono su un campo, ma se volessimo determinare la media e la stdev dei valori di ogni record, come faremmo?

La funzione che permette di creare una mappa per ogni record è attributes() e tramite questa risolveremo il problema.

Abbiamo uno shapefile dei comuni siciliani e la tabella degli attributi presenta, per ogni anno (dal 2012 al 2020), il valore della popolazione residente, sotto la tabella:

determinare, per ogni comune, la media e la stdev (deviazione standard campionaria)

La tabella attributi ha 11 campi, ma i valori della popolazione è negli ultimi 9 campi.

Nell'esempio occorre evitare i campi "fid", PRO_COM e COMUNE, occorre, quindi, utilizzare la seguente espressione:

  • media:
with_variable('deleteField',
        map_delete(map_delete(map_delete(
        attributes(),'PRO_COM'),'COMUNE'),'fid'),
-- media
array_mean(map_avals((@deleteField))
))

  • deviazione standard: (occorre evitare anche il campo media)
with_variable('deleteField',
        map_delete(map_delete(map_delete(map_delete(
        attributes(),'PRO_COM'),'COMUNE'),'fid'),'media'),
-- stdev campionaria
with_variable('riga',map_avals(@deleteField),
        sqrt(
                array_sum(
                        array_foreach(
                                @riga,
                                (@element-array_mean(@riga))^2))
                                /
                                (array_length(@riga)-1))
                )
)

provaci tu, qui il geopackage

scarica


Funzioni e variabili utilizzate: