Re: [semi-OT] "media pesata ... convergiuta" ?

From: Soviet_Mario <SovietMario_at_CCCP.MIR>
Date: Tue, 08 Nov 2016 20:04:21 +0100

Il 03/11/2016 19.22, Giorgio Bibbiani ha scritto:
> Soviet_Mario ha scritto:
>> un tipo di media
>> pesata a pesi "auto-adattivi", che non è difficile definire
>> in modo "RICORSIVO", ma che chiederei se si possa calcolare
>> analiticamente (non so se il termine sia corretto, ma con
>> ciò intendo una formula non ricorsiva, semplicemente)
>
> Si dice "iterativamente"?

mmm, mi sbaglierò sicuramente io, ma informaticamente (anche
se di fatto alla fine ho implementato con una routine
iterativa perché usavo banalmente il VBA il cui debugger è
ridicolo, e notoriamente le routine ricorsive ti annodano la
memoria) mi pare più ricorsiva come struttura : prende in
input il valore dello stadio precedente.
Cmq ripeto, mi pare sia stato dimostrato che qualsiasi
algoritmo "nativamente" ricorsivo, si può mappare in
iterazioni, magari annidate, lineari con l'ausilio di
qualche variabile di controllo (che poi è solo "visibile" e
surroga lo stato come fa lo stack in modo trasparente,
sicché non è nemmeno detto che l'uso della memoria sia meno
efficiente)

>
>> Allora, supponiamo di avere dati da mediare, e supponiamo
>> che per qualche ragione si sappia che i dati lontani dalla
>> media, quale che sia, contengano un maggiore errore
>
> Cosa significa cio' *concretamente*, di quale errore si tratta?

Si, la natura dell'esigenza nasce proprio da questo, anche
se non era un dettaglio importante, nel senso che poteva
restare implicito.
Allora può trattarsi di due scenari
1) errori di misura ma non necessariamente strumentali,
bensì che possano includere, ma non spesso, errori grossolani
2) rilevazioni, laddove in campioni statistici, qualcuno sia
tentato di barare sui dati per spostare la sua valutazione e
truffare un algoritmo

> In Fisica il termine errore ha un significato ben preciso e
> differente nei vari contesti...

Si : in realtà sto migliorando un valutatore automatico di
dati "auto-certificati", e laddove prima ottimizzavo i pesi
solo a mano, ora sto cercando di rendere più auto-pesante
l'algoritmo. Sicché ho la necessità di rendere più solide le
medie, "ripulendole" per quanto possibile dall'influenza
nefasta di dati taroccati o contenenti sviste di
compilazione etc.
Questo candita automaticamente i dati estremali. Che, nota,
non è detto che siano per forza taroccati o errati (se no li
avrei semplicemente esclusi !), ma diciamo che invece i dati
mediani sembrerebbero molto probabilmente dati privi degli
errori suddetti (sicché devono venire sovrapesati in
automatico).
La ricorsione nasce dal fatto che GNUisnotunix, no, scherzo,
nel senso che il loro peso si stabilisce solo con la media,
ma la media viene calcolata sulla base del loro peso.
Sicché adotto una metodica variazionale ad affinamenti
progressivi. BTW ... si, converge, almeno i pochi esempio
che ho fatto, poi mi sono stufato.

Se interessa posso stampare qualche log di simulazione.

>
>> e vadano
>> sottopesati, diciamo "col senno del poi", mentre i dati
>> vicini alla media, quale che sia, contengano un minore
>> errore e vadano sovrapesati, diciamo "col senno del poi". I
>> dati in questione non sono misure fisiche per cui si possa
>> ritenere costante l'errore né casuale, diciamo, ma appunto
>> l'errore sia viziato quando i dati sono agli estremi.
>>
>> faccio un ulteriore assunto ma non so SE e QUANTO importante
>>> la distribuzione dei dati sia sufficientemente SIMMETRICA rispetto
>>> alla media.
>
> Non lo so neanche io ;-), visto che il problema e' nebuloso,
> ma male non fa!

:)

>
>> quindi ogni dato avrà un coefficiente (normalizzato a 1),
>> che per lo step J della ricorsione avrebbe un aspetto simile a
>> alfa_n = ABS(val_n - media_j) / range_mezzi
>
> Lo prendo per buono, ma mi chiedo perche' magari
> non il suo quadrato o cubo o radice ecc. ecc.?

si, la ripidità della dipendenza era proprio uno degli
aspetti su chiedevo consiglio.
In assenza di indicazioni precise, ho pensato che
l'esponente uno, lineare, fosse il più neutrale.

Più che altro perché esponenti maggiori di uno, applicati
ricorsivamente, ho temuto che mi facessero convergere la
media sulla mediana o cose simili. Ma boh, è un parametro
libero su cui appunto ho dubbi

>
>> dove range_mezzi è il valore max.-min.
>>
>> Si possono anche trovare altri fattori di peso variabile
>> adattivo, tanto poi vengono normalizzati, ma questo mi
>> pareva tra i più lineari
>>
>> media_J+1 = sum_da_1_a_n (alfa_n * dato_n)
>
> Non mi sembra che funzioni, dovresti dividere per alfa_n,
> non moltiplicare...

ah, ovviamente nell'algoritmo vero poi ho tracciato la summa
dei pesi, e ho diviso quella somma per detta somma. Era
quello l'elemento rinormalizzante.
Quindi non dividere per n, ma per sum_pesi

>
>> (non mi ricordo se si deve dividere la sommatoria per n, ma
>> siccome i pesi alfa sono normalizzati, probabilmente no ...
>> boh ! Intuitelo :))
>>
>
> La formula normalizzata sarebbe:
>
> alfa_n = ABS(val_n - media_j)
>
> (qui sopra non serve dividere per range_mezzi),
>
> media_J+1 > sum_da_1_a_n (dato_n / alfa_n) / sum_da_1_a_n (1 / alfa_n)
>
> (sperando che nessun dato coincida con la media...).

boh, ho rinormalizzato in un modo che mi pare diverso, ma
funge uguale, e è insensibile a divisioni per zero.

>
> Servira' poi allo scopo, sara' la formula migliore, chi lo sa? ;-)

su questo punto spero di avere chiarito meglio il contesto :
depurare la popolazione di dati da errori grossolani e non
variazioni fisiologiche o dati intenzionalmente taroccati.

>
>> Ora la mia domanda sarebbe. Ammettendo di iterare
>> all'infinito, ottenendo medie ogni volta diverse, esiste
>> (si, no, sempre, talvolta, mai ...) una convergenza della
>> media ? A naso direi che deve convergere, perché anche i
>> pesi mi pare che si stabilizzerebbero, ma nn sono sicuro
>
> Anch'io a naso penso che convergerebbe.

su 3 - 4 serie di numeri piccoli, ho visto che converge. Non
in modo particolarmente rapido, ma converge.

>
>> Ammesso che converga, esiste qualche formula analitica che
>> consentirebbe di calcolare questa media "convergiuta" ?
>>
>> Al momento non ho tempo di scrivere codice, ma magari prima
>> o poi proverò a computare esempi col PC.
>>
>> Nel frattempo se avete qualche idea a prescindere, ditemela.
>
> Certamente dovresti precisare meglio il problema, specificando
> quale fosse l'origine e la numerosita' dei dati e quale lo scopo
> del calcolo...

la numerosità è piccola : meno di 40 dati.

> Se proprio devo tirare a indovinare :-(, forse gia' la semplice
> media aritmetica dei dati (calcolata una sola volta) potrebbe
> bastare...

non è molto robusta a prova di furbastro in realtà. Ho visto
l'esito del valutatore ed era permeabile a dati anomali,
perché non li compensava in nessun modo.

Ora non ho word aperto e quindi non lancio la macro. Ma se
vuoi posto sia il codice che due o tre log di prova.

>
> Ciao
>


-- 
1) Resistere, resistere, resistere.
2) Se tutti pagano le tasse, le tasse le pagano tutti
Soviet_Mario - (aka Gatto_Vizzato)
---
Questa e-mail è stata controllata per individuare virus con Avast antivirus.
https://www.avast.com/antivirus
Received on Tue Nov 08 2016 - 20:04:21 CET

This archive was generated by hypermail 2.3.0 : Wed Sep 18 2024 - 05:10:11 CEST