Come posso calcolare una deviazione standard ponderata? In Excel?


29

Quindi, ho un set di dati di percentuali come questo:

100   /   10000   = 1% (0.01)
2     /     5     = 40% (0.4)
4     /     3     = 133% (1.3) 
1000  /   2000    = 50% (0.5)

Voglio trovare la deviazione standard delle percentuali, ma ponderata per il loro volume di dati. cioè, il primo e l'ultimo punto dati dovrebbero dominare il calcolo.

Come lo faccio? E c'è un modo semplice per farlo in Excel?


La formula con (M-1) / M è corretta. In caso di dubbi, verificarlo impostando tutti i pesi uguali a 1 e si otterrà la formula classica per la stima imparziale per la deviazione standard con (N-1) nel denominatore. Per whuber: insolito non significa errato.

1
La formula con (M-1) / M NON È CORRETTA. Immagina di aggiungere un milione di punti con pesi di un trilionesimo. Non cambi affatto la tua risposta indipendentemente da quali siano quei pesi, ma il tuo termine diventa 1? Assolutamente no! Se ti interessa , ti importa anche che sia sbagliato. ( M - 1 ) / M 1(M-1)/M(M-1)/M1
Rex Kerr,

Il voto più alto è corretto. Si prega di controllare itl.nist.gov/div898/software/dataplot/refman2/ch2/weightsd.pdf
Bo Wang

Mi chiedo perché vuoi la deviazione standard qui? hai solo numeri! Com'è che sono troppi numeri? Soprattutto quando le percentuali sono più facilmente spiegate e comprese. 4
probabilityislogic

@probabilityislogic è stato un esempio semplificato per mantenere breve la domanda.
Yahel,

Risposte:


35

La formula per la deviazione standard ponderata è:

Σio=1Nwio(Xio-X¯*)2(M-1)MΣio=1Nwio,

dove

N è il numero di osservazioni.

M è il numero di pesi diversi da zero.

wio sono i pesi

Xio sono le osservazioni.

X¯* è la media ponderata.

Ricorda che la formula per la media ponderata è:

X¯*=Σio=1NwioXioΣio=1Nwio.

Utilizzare i pesi appropriati per ottenere il risultato desiderato. Nel tuo caso, suggerirei di utilizzare .Numero di casi nel segmentoNumero totale di casi

Per fare ciò in Excel, devi prima calcolare la media ponderata. Quindi calcola in una colonna separata. Il resto deve essere molto semplice.(Xio-X¯*)2


2
@Gilles, hai ragione. deps_stats, la frazione nella SD è insolita. Hai una citazione per questa formula o puoi almeno spiegare il motivo dell'inclusione di quel termine? (M1)/M
whuber

4
I pesi @Aaron non sono sempre definiti per riassumere in unità, come esemplificato dai pesi dati in questa domanda!
whuber

2
(-1) Sto annullando questa risposta perché non è stata fornita alcuna giustificazione o riferimento per il termine (e sono abbastanza sicuro che non rende imparziale la stima della varianza, il che sarebbe evidente motivazione). (M1)/M
whuber

1
Alla luce del riferimento aggiunto (che non è autorevole, ma è un riferimento) sto rimuovendo il voto negativo. Non sto votando questa risposta, tuttavia, poiché i calcoli mostrano che la ponderazione proposta non produce affatto una stima imparziale di nulla (tranne quando tutti i pesi sono uguali a ). La vera difficoltà qui - che è colpa della domanda, non della risposta - è che non è chiaro cosa questa "deviazione standard ponderata" stia tentando di stimare. Senza una stima definita, non vi è alcuna giustificazione per introdurre un fattore ( M - 1 ) / M per "ridurre la distorsione" (o per qualsiasi altra ragione). 1(M-1)/M
whuber

1
@Mikhail Hai ragione sul fatto che "insolito" e "giusto" hanno poco a che fare l'uno con l'altro. Tuttavia, risultati insoliti richiedono implicitamente un po 'più di giustificazione perché essere insoliti è un indicatore che potrebbe essere stato fatto un errore. La tua argomentazione non è valida: sebbene la formula si riduca effettivamente a una per uno stimatore imparziale quando tutti i pesi sono uguali, ciò non implica che lo stimatore rimanga imparziale quando si usano pesi disuguali. Non sto affermando che la tua conclusione sia sbagliata, ma solo che finora non è stata offerta alcuna giustificazione valida.
whuber

18

Le formule sono disponibili in vari luoghi, tra cui Wikipedia .

La chiave è notare che dipende dal significato dei pesi . In particolare, otterrai risposte diverse se i pesi sono frequenze (ovvero stai solo cercando di evitare di sommare l'intera somma), se i pesi sono in realtà la varianza di ogni misurazione o se sono solo alcuni valori esterni che imporre ai tuoi dati.

Nel tuo caso, sembra superficialmente che i pesi siano frequenze ma non lo sono . Generi i tuoi dati dalle frequenze, ma non è semplice avere 45 record di 3 e 15 record di 4 nel tuo set di dati. Invece, è necessario utilizzare l'ultimo metodo. (In realtà, tutto questo è spazzatura - devi davvero usare un modello più sofisticato del processo che sta generando questi numeri! Apparentemente non hai qualcosa che sputa numeri distribuiti normalmente, quindi caratterizzando il sistema con la deviazione standard non è la cosa giusta da fare.)

In ogni caso, la formula per la varianza (da cui si calcola la deviazione standard in modo normale) con pesi di "affidabilità" è

Σwio(Xio-X*)2Σwio-Σwio2Σwio

X*=ΣwioXio/Σwio

Non hai una stima per i pesi, che presumo tu voglia prendere per essere proporzionale all'affidabilità. Prendere le percentuali nel modo in cui stai andando renderà complicata l'analisi anche se sono generate da un processo di Bernoulli, perché se ottieni un punteggio di 20 e 0, hai una percentuale infinita. La ponderazione dall'inverso del SEM è una cosa comune e talvolta ottimale da fare. Forse dovresti usare una stima bayesiana o un intervallo di punteggio Wilson .


2
+1. La discussione sui diversi significati dei pesi era ciò che cercavo da sempre in questo thread. È un contributo importante a tutte le domande di questo sito sulle statistiche ponderate. (Sono un po 'preoccupato per le osservazioni tra parentesi relative alle distribuzioni normali e alle deviazioni standard, perché suggeriscono erroneamente che le SD non hanno alcun uso al di fuori di un modello basato sulla normalità.)
whuber

@whuber - Beh, teorema limite centrale per il salvataggio, ovviamente! Ma per quello che stava facendo l'OP, cercare di caratterizzare quell'insieme di numeri con una deviazione media e standard sembra estremamente sconsigliabile. E in generale, per molti usi la deviazione standard finisce per attirare uno in un falso senso di comprensione. Ad esempio, se la distribuzione è tutt'altro che normale (o una buona approssimazione della stessa), fare affidamento sulla deviazione standard ti darà una cattiva idea della forma delle code, quando sono esattamente quelle code che ti interessano di più in ambito statistico test.
Rex Kerr,

@RexKerr Difficilmente possiamo incolpare la deviazione standard se le persone vi collocano interpretazioni immeritate. Ma allontaniamoci dalla normalità e consideriamo la classe molto più ampia di distribuzioni unimodali continue, simmetriche con varianza finita (per esempio). Quindi tra l'89 e il 100 percento della distribuzione rientra in due deviazioni standard. Questo è spesso abbastanza utile da sapere (e il 95% si trova praticamente nel mezzo, quindi non è mai più del 7% di sconto); con molte distribuzioni comuni, l'aspetto della simmetria che cade non cambia molto (es. guarda l'esponenziale, per esempio) .... ctd
Glen_b -Reinstate Monica

ctd ... - o se non facciamo nessuna di queste ipotesi, ci sono sempre i normali limiti di Chebyshev che dicono almeno qualcosa sulle code e sulla deviazione standard ..
Glen_b -Reinstate Monica

1
@Gabriel - Sì, scusa, ero sciatto. (Immagino che la gente possa dire quale sia dando un'occhiata.) Ho corretto la mia descrizione.
Rex Kerr,

5
=SQRT(SUM(G7:G16*(H7:H16-(SUMPRODUCT(G7:G16,H7:H16)/SUM(G7:G16)))^2)/
     ((COUNTIFS(G7:G16,"<>0")-1)/COUNTIFS(G7:G16,"<>0")*SUM(G7:G16)))

Le colonne Gsono pesi, le colonne Hsono valori


Usando Ctrl + Maiusc + Invio è stato un problema per me, ma questo sembra funzionare diversamente.
philipkd,

1

pio=vioΣiovio,
vio

μ^=ΣiopioXio,
σ^2=Σiopio(Xio-μ^)2

0
Option Explicit

Function wsdv(vals As Range, wates As Range)
Dim i, xV, xW, y As Integer
Dim wi, xi, WgtAvg, N
Dim sumProd, SUMwi

    sumProd = 0
    SUMwi = 0
    N = vals.Count  ' number of values to determine W Standard Deviation
    xV = vals.Column  ' Column number of first value element
    xW = wates.Column  ' Column number of first weight element
    y = vals.Row - 1  ' Row number of the values and weights

    WgtAvg = WorksheetFunction.SumProduct(vals, wates) / WorksheetFunction.Sum(wates)

    For i = 1 To N  ' step through the elements, calculating the sum of values and the sumproduct
        wi = ActiveSheet.Cells(i + y, xW).Value  ' (i+y, xW) is the cell containing the weight element
        SUMwi = SUMwi + wi
        xi = ActiveSheet.Cells(i + y, xV).Value  ' (i+y, xV) is the cell containing the value element
        sumProd = sumProd + wi * (xi - WgtAvg) ^ 2
    Next i

    wsdv = (sumProd / SUMwi * N / (N - 1)) ^ (1 / 2)  ' output of weighted standard deviation

End Function

2
Benvenuto nel sito, @ uswer71015. Questo sembra essere solo codice. Puoi aggiungere del testo / spiegazione su come funziona il codice e su come risponde alla domanda?
gung - Ripristina Monica
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.