Come misurare se una distribuzione discreta è uniforme o no?

Aug 24 2020

Diciamo che ho due vettori [1,2,1,2,2] e [1,2,1,1,1]. Il numero in ogni dimensione è la frequenza di un elemento. Come misuro se questi due vettori sono vicini alla distribuzione uniforme? So che se si tratta di valori continui, posso calcolare l'entropia dei due vettori. Quello con maggiore entropia è più vicino a una distribuzione uniforme. Ma ora sto risolvendo un problema di ottimizzazione discreta, quindi posso usare solo valori interi.

Attualmente, sto pensando di calcolare il valore max([1,2,1,2,2]) - min([1,2,1,2,2]). Il vettore con il punteggio più basso è più vicino alla distribuzione uniforme. Esiste un metodo migliore?

Risposte

5 Glen_b Aug 24 2020 at 19:00

Il tuo suggerimento dovrebbe funzionare.

Farò un altro suggerimento, che fornisce anche un valore intero per la discrepanza dall'uniformità. Come indicato nei commenti, non abbiamo davvero abbastanza informazioni per dire se è meglio per la tua applicazione.

La solita statistica della bontà di adattamento del chi quadrato è$\sum_i (O_i-E_i)^2/E_i$(dove$O_i$è il conteggio osservato nella categoria$i$e$E_i$è il conteggio previsto). Quando viene utilizzato per la deviazione dalla perfetta uniformità,$E_i=N/k$, dove$N=\sum_i O_i$è il conteggio totale e$k$è il numero di categorie.

Questa statistica del chi quadrato dall'uniformità è anche correlata alla semplice varianza dei conteggi.

Si noti che questa statistica semplifica nel caso di uniformità, come segue:

\begin{eqnarray} \sum_i (O_i-E_i)^2/E_i &=& \sum_i (O_i-N/k)^2/(N/k)\\ &=& \frac{k}{N} \ sum_i (O_i-N/k)^2\\ &=& \frac{k}{N} \sum_i [O_i^2-2N/k\cdot O_i+(N/k)^2]\\ &=& \ frac{k}{N} [\sum_i O_i^2-2N/k \sum_i O_i+\sum_i (N/k)^2)]\\ &=& \frac{k}{N} [\sum_i O_i^2 -2N/k\cdot N+ k\cdot(N/k)^2)]\\ &=& (\frac{k}{N} \sum_i O_i^2)-2N+ N\\ &=& (\frac {k}{N} \sum_i O_i^2)-N \end{eqnarray}

Si ha quindi un semplice ridimensionamento lineare della statistica chi quadrato$\sum_i O_i^2$, che avrà un valore intero.

Insieme a$r={N\mod k}$, puoi calcolare il valore più piccolo possibile inserendo$\lfloor N/k\rfloor$(il conteggio medio arrotondato per difetto) in$k-r$bidoni e$\lceil N/k \rceil$(lo stesso, arrotondato per eccesso) in$r$bidoni. Sarebbe ragionevole, ma non necessario, sottrarre la somma dei conteggi al quadrato per questa disposizione dalla somma dei conteggi al quadrato di cui sopra. Questo darebbe un accordo come$[1,2,1,2,2]$ottenere il valore$0$, poiché non può essere ridotto. Se desideri che un tale accordo ottenga un valore diverso da zero, il valore di$\sum O_i^2$sotto esattamente uguale allocazione è$N^2/k$, ma in questi casi non sarà un numero intero, quindi dovrai arrotondarlo per difetto prima di sottrarre da$\sum O_i^2$(l'arrotondamento per difetto significherebbe la differenza$(\sum O_i^2)-\lfloor N^2/k\rfloor$sarebbe esattamente zero solo quando lo spread fosse perfettamente uniforme).

3 kjetilbhalvorsen Aug 24 2020 at 23:58

Puoi usare l'entropia sia nel caso discreto che nel caso continuo. La distribuzione uniforme discreta su, diciamo,$\{ 1,2,\dotsc,n \}$massimizza anche l'entropia tra tutte le distribuzioni sullo stesso supporto. Nota che non importa se quell'insieme di supporto è costituito da numeri interi solo su indici in un insieme discreto$\{ x_1, x_2, \dotsc, x_n \}$dall'entropia$$ H=-\sum_i p_i \log p_i $$non coinvolge affatto i valori effettivi nell'insieme di supporto. Questa è una differenza importante rispetto all'entropia continua$-\int f(x)\log f(x)\; dx$che utilizza effettivamente i valori nel supporto tramite il differenziale$d x$.

Quindi usa solo l'entropia, ma ci sono anche altre possibilità.