Saturday 12 August 2017

Moving Media Filtro Deviazione Standard


Qui sotto potete vedere il mio metodo per calcolare C Bande di Bollinger per ogni punto (media mobile, fino band, giù di banda). Come si può vedere questo metodo utilizza 2 per cicli per calcolare la deviazione standard in movimento utilizzando la media mobile. È usato per contenere un loop aggiuntivo per calcolare la media mobile degli ultimi n periodi. Questo ho potuto rimuovere aggiungendo il nuovo valore punto totalaverage all'inizio del ciclo e rimuovere i - n valore del punto di fine ciclo. La mia domanda ora è fondamentalmente: Posso rimuovere il ciclo interno rimanente in modo simile sono riuscito con la media mobile chiesto 31 Gennaio 13 ad 21:45 La risposta è sì, è possibile. A metà degli anni '80 ho sviluppato solo come ad un algoritmo (probabilmente non originale) in FORTRAN per un monitoraggio dei processi e controllo delle applicazioni. Purtroppo, che è stato più di 25 anni fa e non ricordo le formule esatte, ma la tecnica era un'estensione di quello per le medie mobili, con il secondo i calcoli di ordine invece di quelli appena lineari. Dopo aver guardato il codice un po ', io penso che posso suss fuori come ho fatto allora. Si noti come il vostro ciclo interno sta facendo la somma dei quadrati: più o meno allo stesso modo in cui il vostro media deve avere in origine aveva una somma di valori Le uniche due differenze sono all'ordine (il suo potere 2 invece di 1) e che si sta sottraendo alla media ogni valore prima di quadrato esso. Ora che potrebbe sembrare inseparabili, ma in realtà possono essere separati: Ora il primo termine è solo una somma di quadrati, di gestire che nello stesso modo in cui si fa la somma dei valori per la media. L'ultimo termine (K2N) sono solo i tempi media quadratica del periodo. Dal momento che si divide il risultato per il periodo in ogni caso, si può semplicemente aggiungere il nuovo media al quadrato senza il ciclo supplementare. Infine, nel secondo termine (SUM (-2vi) k), poiché SUM (vi) totale kn si può quindi cambiare in questo: o solo -2k2n. che è -2 volte la media al quadrato, una volta che il periodo (n) è suddivisa di nuovo. Così la formula finale combinato è: (assicurati di controllare la validità di questo, dal momento che sto derivandola fuori dalla parte superiore della mia testa) e incorporando nel codice dovrebbe essere simile a questo: Grazie per questo. Ho usato come base di una implementazione in C per il CLR. Ho scoperto che, in pratica, si può aggiornare in modo tale che newVar è un piccolo numero negativo, e il sqrt fallisce. Ho introdotto un if per limitare il valore zero per questo caso. Non un'idea, ma stabile. Ciò si è verificato quando ogni valore nella mia finestra aveva lo stesso valore (io ho usato una dimensione della finestra di 20 e il valore in questione era 0,5, nel caso in cui qualcuno vuole provare a riprodurre questo.) Ndash Drew Noakes 26 luglio 13 alle 15:25 Ive Usato commons-matematica (e contribuito a quella biblioteca) per qualcosa di molto simile a questo. La sua open-source, porting di C dovrebbe essere facile come comprato al supermercato torta (avete provato a fare una torta da zero). Check it out: commons. apache. orgmathapi-3.1.1index. html. Hanno una classe standarddeviation. Andare in città risposto 31 Gennaio 21:48 13 ad You39re ammessi Mi dispiace didn39t ho la risposta you39re cercando. Io sicuramente didn39t intendo suggerire porting l'intera libreria solo il codice necessario minima, che dovrebbe essere a poche centinaia di righe o giù di lì. Si noti che non ho idea di che cosa restrizioni di copyright legali Apache ha su quel codice, in modo you39d deve verificare che fuori. Nel caso in cui si perseguono esso, ecco il link. In modo che Varianza FastMath ndash Jason 31-gen-13 a 22:36 Informazioni Principali è già stato dato sopra --- ma forse questo è ancora di interesse generale. Una libreria Java molto piccolo per calcolare lo spostamento media e deviazione standard è disponibile qui: githubtools4jmeanvar L'implementazione è basata su una variante del metodo di Welfords di cui sopra. Metodi per rimuovere e sostituire i valori sono stati ricavati che può essere utilizzato per lo spostamento del valore windows. What sarebbe il modo ideale per trovare la media e la deviazione standard di un segnale per una applicazione reale tempo. Id come poter attivare un controllore quando un segnale era più di 3 deviazioni standard fuori della media per un certo periodo di tempo. Im assumendo un DSP dedicato farebbe questo abbastanza facilmente, ma non vi è alcun collegamento che non può richiedere qualcosa di così complicato chiesto 3 dicembre 11 a 05:11 C'è una falla in Jason Rs risposta, di cui si parla in Knuths Art of Computer Programming vol. 2. Il problema nasce se si dispone di una deviazione standard che è una piccola frazione della media: il calcolo di E (x2) - (E (x) 2) soffre di una grave sensibilità alla virgola mobile errori di arrotondamento. Si può anche provare da soli in uno script Python: ricevo -128,0 come una risposta, che è neanche chiaro computazionalmente valida, dal momento che la matematica prevede che il risultato dovrebbe essere non negativo. Knuth cita un approccio (mi ricordo il nome dell'inventore) per il calcolo medio di esecuzione e la deviazione standard che meno così: e poi dopo ogni passaggio, il valore di m è la media e la deviazione standard può essere calcolata come sqrt (Sn) o sqrt (Sn-1) a seconda di quale è la tua definizione preferita di deviazione standard. L'equazione che scrivo sopra è leggermente diverso da quello in Knuth, ma il suo equivalente computazionalmente. Quando ho qualche minuto, codice Ill la formula di cui sopra in Python e mostrare che il youll ottenere una risposta non negativa (che si spera è vicino al valore corretto). Update: qui si tratta. Youll nota che theres ancora qualche errore di arrotondamento, ma la sua non è male, considerando naivestats pukes solo. edit: appena notato Belisariuss commento citando Wikipedia, che fa parlare l'algoritmo Knuth. Quale sarebbe il modo ideale per trovare la media e la deviazione standard di un segnale per una applicazione reale tempo. Id come poter attivare un controllore quando un segnale era più di 3 deviazioni standard fuori della media per un certo periodo di tempo. L'approccio giusto in situazioni come questa è di solito per calcolare una deviazione media e standard di esecuzione in modo esponenziale ponderata. Nella media ponderata esponenzialmente, le stime della media e la varianza sono polarizzate verso il più recente campione che dà si stima della media e la varianza negli ultimi secondi tau. che è probabilmente quello che si vuole, piuttosto che la media aritmetica solito su tutti i campioni mai visto. Nel dominio della frequenza, una media corrente ponderata esponenzialmente è semplicemente un vero polo. È semplice da implementare nel dominio del tempo. implementazione dominio del tempo Lasciate media e meansq essere le attuali stime della media e medio della piazza del segnale. In ogni ciclo, aggiornare queste stime con il nuovo campione x: Qui 0 lt tl 1 è una costante che determina la lunghezza effettiva della media corrente. Come scegliere un è descritto di seguito in analisi. Ciò che è sopra espresso come un programma imperativo può anche essere descritta come un diagramma di flusso di segnale: L'algoritmo precedente calcola yi un xi (1-a) y dove xi è l'ingresso al campione i, e yi è l'uscita (cioè stima la media). Questo è un semplice, unipolare filtro IIR. Prendendo la trasformata Z, troviamo il frac funzione di trasferimento H (z). Condensazione i filtri IIR nelle proprie blocchi, lo schema appare come segue: Per andare al dominio continuo, facciamo la sostituzione z e dove T è il tempo di campionamento e FS 1T è la frequenza di campionamento. Soluzione 1- (1-a) e 0, troviamo che il sistema continua ha un polo a log s frac (1-a). Procedimento Ive usato prima in un'applicazione di elaborazione incorporato è di mantenere accumulatori della somma e somma dei quadrati del segnale di interesse: Inoltre, tenere traccia del tempo istantanea corrente i nelle equazioni sopra (cioè, annotare il numero di campioni che youve aggiunte accumulatori). Poi, la media campionaria e la deviazione standard in fase I sono: sigma2 operatorname (X2) - (operatorname (X)) 2 Ive usato questi con successo in passato (anche se ero preoccupato solo con stima della varianza, non deviazione standard), anche se si c'è bisogno di essere attenti ai tipi numerici si usano per tenere gli accumulatori, se si sta andando ad essere sommando per un lungo periodo di tempo non volete troppo pieno. Edit: Oltre al commento sopra overflow, va osservato che questo non è un algoritmo numericamente affidabile quando implementato in virgola mobile, causando potenzialmente grandi errori nelle statistiche stimate. Guardate Jason Ss risposta per un approccio migliore in questo caso. rispose 6 dicembre 11 alle 13:34 Sembra che ci siano un paio di errori di battitura qui. Perché è la media che viene sottratto sotto il segno di radice quadrata per Sigma dovrebbe essere mu2 per abbinare la visualizzazione equazione sigma2 E (X2) - (E (X)) 2, non Inoltre, anche se mi won39t vote down questa risposta, sono d'accordo con Jason che ci possono essere problemi numerici in questo approccio. ndash Dilip Sarwate 20 Jan 12 in 01:33 Simile alla risposta preferito sopra (Jason S.), e anche derivato dalla formula tratto da Knut (Vol.2, p 232), si può anche derivare una formula per sostituire un valore , cioè rimuovere e aggiungere un valore in un solo passaggio. Secondo i miei test, sostituire offre una migliore precisione rispetto alla versione removeadd in due fasi. Il codice qui sotto è in Java, media e s ottenere aggiornato (variabili membro globali), uguale a M e S sopra in Jasons posta. Il conteggio valore si riferisce alla dimensione della finestra n. dax include alcune funzioni di aggregazione statistici, come la media, la varianza e deviazione standard. Altri calcoli statistici tipici richiedono di scrivere più espressioni DAX. Excel, da questo punto di vista, ha un linguaggio molto più ricca. I modelli statistici sono un insieme di calcoli statistici comuni: mediana, moda, media mobile, percentile, e quartile. Vorremmo ringraziare Colin Banfield, Gerard Brueckl, e Javier Guilln, il cui blog ispirato alcuni dei seguenti modelli. Di base del modello Esempio Le formule di questo modello sono le soluzioni ai calcoli statistici specifici. È possibile utilizzare le funzioni standard DAX per calcolare la (media aritmetica) media di un insieme di valori. MEDIA. restituisce la media di tutti i numeri in una colonna numerica. MEDIA. VALORI. restituisce la media di tutti i numeri in una colonna, la manipolazione di testo e valori non numerici (conta valori di testo non numerici e vuoti come 0). AVERAGEX. calcolare la media su un'espressione valutata su un tavolo. Media mobile La media mobile è un calcolo per analizzare i punti di dati con la creazione di una serie di medie di diversi sottoinsiemi di set di dati completo. È possibile utilizzare molte tecniche DAX per implementare questo calcolo. La tecnica più semplice utilizza AVERAGEX, iterando una tabella della granularità desiderato e calcolando per ogni iterazione l'espressione che genera il punto dati singolo da utilizzare nella media. Ad esempio, la seguente formula calcola la media mobile degli ultimi 7 giorni, partendo dal presupposto che si sta utilizzando una tabella data nel vostro modello di dati. Utilizzando AVERAGEX, si calcola automaticamente la misura ad ogni livello di granularità. Quando si utilizza una misura che può essere aggregate (ad esempio SUM), poi un altro approachbased su CALCULATEmay essere più veloce. È possibile trovare questo approccio alternativo nel modello completo di media mobile. È possibile utilizzare le funzioni standard DAX per calcolare la varianza di un insieme di valori. VAR. S. restituisce la varianza dei valori in una colonna che rappresenta un campione di popolazione. VAR. P. restituisce la varianza dei valori in una colonna che rappresenta l'intera popolazione. VARX. S. restituisce la varianza di un'espressione valutata su una tabella che rappresenta un campione di popolazione. VARX. P. restituisce la varianza di un'espressione valutata su una tabella che rappresenta l'intera popolazione. Deviazione standard, è possibile utilizzare le funzioni standard DAX per calcolare la deviazione standard di un insieme di valori. STDEV. S. restituisce la deviazione standard dei valori in una colonna che rappresenta un campione di popolazione. STDEV. P. restituisce la deviazione standard dei valori in una colonna che rappresenta l'intera popolazione. STDEVX. S. restituisce la deviazione standard di un'espressione valutata su una tabella che rappresenta un campione di popolazione. STDEVX. P. restituisce la deviazione standard di un'espressione valutata su una tabella che rappresenta l'intera popolazione. La mediana è il valore numerico che separa la metà superiore di una popolazione dalla metà inferiore. Se vi è un numero dispari di righe, la mediana è il valore centrale (ordinamento delle righe dal valore minimo al valore massimo). Se vi è un numero di righe, è la media dei due valori medi. La formula ignora i valori vuoti, che non sono considerati parte della popolazione. Il risultato è identica alla funzione mediano Excel. La figura 1 mostra un confronto tra il risultato restituito da Excel e la formula DAX corrispondente per il calcolo della mediana. Figura 1 Esempio di calcolo in Excel mediana e DAX. La modalità è il valore visualizzato più spesso in un insieme di dati. La formula ignora i valori vuoti, che non sono considerati parte della popolazione. Il risultato è identico alle funzioni MODE e MODE. SNGL in Excel, che restituiscono solo il valore minimo quando ci sono più modi nel set di valori considerati. La funzione MODE. MULT Excel restituirebbe tutti i modi, ma non è possibile implementarlo come una misura in DAX. Figura 2 confronta il risultato restituito da Excel con il corrispondente formula DAX per il calcolo modalità. Figura 2 Esempio di calcolo modalità in Excel e DAX. Percentile Il percentile è il valore sotto al quale una data percentuale di valori in un gruppo scende. La formula ignora i valori vuoti, che non sono considerati parte della popolazione. Il calcolo in DAX richiede diversi passaggi, descritti nella sezione modello completo, che mostra come ottenere gli stessi risultati delle funzioni di Excel PERCENTILE, PERCENTILE. INC, e PERCENTILE. EXC. I quartili sono tre punti che dividono un insieme di valori in quattro gruppi uguali, ogni gruppo comprendente un quarto dei dati. È possibile calcolare i quartili utilizzando il modello percentile, a seguito di queste corrispondenze: Primo quartile inferiore quartile 25 ° percentile secondo quartile mediana 50 ° percentile terzo quartile superiore quartile 75 ° percentile modello completo Pochi calcoli statistici hanno una descrizione più lunga del modello completo, perché si potrebbe avere diverse implementazioni a seconda dei modelli di dati e altri requisiti. Media mobile Di solito si valuta la media mobile facendo riferimento al livello di granularità giorno. Il modello generale della seguente formula ha questi marcatori: ltnumberofdaysgt è il numero di giorni per la media mobile. ltdatecolumngt è la colonna della data della tabella data, se ne avete uno, o la colonna data della tabella contenente i valori se non vi è alcuna tabella data separata. ltmeasuregt è la misura per calcolare la media mobile. Il modello più semplice utilizza la funzione AVERAGEX in DAX, che considera automaticamente solo i giorni per i quali esiste un valore. In alternativa, è possibile utilizzare il seguente modello in modelli di dati senza una tabella data e con una misura che può essere aggregato (come SUM) per tutto il periodo considerato. La formula precedente considera un giorno con dati corrispondenti come una misura che ha valore 0. Questo può accadere solo quando si dispone di una tabella data separato, che potrebbe contenere giorni per i quali non ci sono transazioni corrispondenti. È possibile risolvere il denominatore per la media utilizzando solo il numero di giorni per i quali ci sono transazioni utilizzando il seguente schema, in cui: ltfacttablegt è la tabella relativa alla tabella di data e valori contenenti calcolato dal provvedimento. È possibile utilizzare le funzioni DATESBETWEEN o DATESINPERIOD invece di filtro, ma questi funzionano solo in una tabella appuntamento fisso, mentre è possibile applicare il modello sopra descritto anche alle tabelle di data non regolari e di modelli che non hanno una tabella data. Ad esempio, considerare i diversi risultati prodotti dai seguenti due misure. Nella Figura 3, si può vedere che non ci sono vendite su 11 settembre 2005. Tuttavia, questa data è incluso nella tabella data così, ci sono 7 giorni (dal 11 settembre al 17 settembre) che hanno solo 6 giorni con i dati. Figura 3 Esempio di calcolo di Moving Average considerando e ignorando le date con nessuna vendita. La misura media mobile 7 giorni ha un numero minore tra 11 settembre e il 17 settembre, in quanto considera dell'11 settembre come un giorno con 0 vendite. Se si desidera ignorare giorni con nessuna vendita, quindi utilizzare la misura media mobile 7 giorni nessuna Zero. Questo potrebbe essere il giusto approccio quando si dispone di una tabella data completa, ma si desidera ignorare giorni con nessuna transazione. Utilizzando la media mobile 7 Giorni formula, il risultato è corretto perché AVERAGEX considera automaticamente solo i valori non vuoti. Tenete a mente che si potrebbe migliorare le prestazioni di una media mobile persistendo il valore in una colonna calcolata di un tavolo con la granularità desiderato, come ad esempio la data, o la data e il prodotto. Tuttavia, il metodo di calcolo dinamico con una misura offre la possibilità di utilizzare un parametro per il numero di giorni di media mobile (ad esempio, sostituire ltnumberofdaysgt con una misura di applicazione del modello Tabella Parametri). La mediana corrisponde al 50 ° percentile, che si può calcolare utilizzando il modello percentile. Tuttavia, il modello mediana consente di ottimizzare e semplificare il calcolo mediana utilizzando una singola misura, al posto delle diverse misure previste dal modello percentile. È possibile utilizzare questo approccio quando si calcola la mediana dei valori inclusi nel ltvaluecolumngt, come illustrato di seguito: Per migliorare le prestazioni, si potrebbe voler persistere il valore di una misura in una colonna calcolata, se si vuole ottenere il mediano per i risultati di una misura nel modello di dati. Tuttavia, prima di fare questa ottimizzazione, è necessario implementare il calcolo MedianX basato sul seguente modello, utilizzando questi marcatori: ltgranularitytablegt è la tabella che definisce la granularità del calcolo. Ad esempio, potrebbe essere la tabella di Data se si desidera calcolare la mediana di una misura calcolata a livello di giorno, o potrebbe essere VALORI (8216DateYearMonth) se si desidera calcolare la mediana di una misura calcolata a livello di mese. ltmeasuregt è la misura di calcolare per ogni riga ltgranularitytablegt per il calcolo mediana. ltmeasuretablegt è la tabella che contiene i dati utilizzati da ltmeasuregt. Ad esempio, se il ltgranularitytablegt è una dimensione come 8216Date8217, allora il ltmeasuretablegt sarà 8216Internet Sales8217 contenente la colonna Importo Internet Sales sintetizzato dalla misura totale di Internet Sales. Ad esempio, è possibile scrivere la mediana di Internet totale vendite per tutti i clienti di Adventure Works come segue: Punta il seguente schema: viene utilizzato per rimuovere le righe da ltgranularitytablegt che non hanno dati corrispondenti nella selezione corrente. Si tratta di un modo più veloce rispetto all'utilizzo la seguente espressione: Tuttavia, si potrebbe sostituire l'intera espressione CALCULATETABLE con appena ltgranularitytablegt se si vuole considerare valori vuoti della ltmeasuregt come 0. Le prestazioni della formula MedianX dipende dal numero di righe nel tavolo iterato e sulla complessità della misura. Se le prestazioni è male, si potrebbe persistere il risultato ltmeasuregt in una colonna calcolata del lttablegt, ma questo verrà rimosso la capacità di applicare filtri per il calcolo mediana in fase di query. Percentile Excel dispone di due diverse implementazioni di calcolo del percentile con tre funzioni: PERCENTILE, PERCENTILE. INC, e PERCENTILE. EXC. Tutti restituiscono il percentile K-esimo di valori, dove K è compreso nell'intervallo da 0 a 1. La differenza è che PERCENTILE e PERCENTILE. INC considerare K come range inclusivo, mentre PERCENTILE. EXC considera l'intervallo K 0 a 1 esclusivo . Tutte queste funzioni e delle loro implementazioni DAX ricevere un valore percentile come parametro, che noi chiamiamo K. ltKgt valore percentile è nel range da 0 a 1. Le due implementazioni DAX di percentile richiedono alcune misure che sono simili, ma abbastanza diverso da richiedere due diversi set di formule. Le misure definite in ogni modello sono: KPerc. Il valore percentile corrisponde a ltKgt. PercPos. La posizione del percentile nel set ordinato di valori. ValueLow. Il valore al di sotto della posizione percentile. ValueHigh. Il valore sopra la posizione percentile. Percentile. Il calcolo finale del percentile. È necessario le misure ValueLow e ValueHigh nel caso in cui i PercPos contiene una parte decimale, perché poi si deve interpolare tra ValueLow e ValueHigh al fine di restituire il valore corretto percentile. La figura 4 mostra un esempio di calcoli effettuati con formule di Excel e Dax, utilizzando entrambi gli algoritmi di percentile (inclusivo ed esclusivo). Figura 4 calcoli percentili utilizzando formule di Excel e il calcolo DAX equivalente. Nelle sezioni seguenti, le formule percentili eseguire il calcolo su valori memorizzati in una colonna della tabella, DataValue, mentre le formule PercentileX eseguire il calcolo sui valori restituiti da una misura calcolata in un dato granularità. Percentile Inclusive percentile implementazione Inclusive è la seguente. implementazione Percentile Exclusive Il percentile Exclusive è il seguente. PercentileX Inclusive La PercentileX implementazione Inclusive si basa sul seguente modello, utilizzando questi marcatori: ltgranularitytablegt è la tabella che definisce la granularità del calcolo. Ad esempio, potrebbe essere la tabella di Data se si vuole calcolare il percentile di una misura a livello di giorno, o potrebbe essere VALORI (8216DateYearMonth) se si vuole calcolare il percentile di una misura a livello di mese. ltmeasuregt è la misura di calcolare per ogni fila di ltgranularitytablegt per il calcolo percentile. ltmeasuretablegt è la tabella che contiene i dati utilizzati da ltmeasuregt. Ad esempio, se il ltgranularitytablegt è una dimensione come 8216Date, 8217 allora il ltmeasuretablegt sarà 8216Sales8217 contenente la colonna Importo riassunta dalla misura somma totale. Ad esempio, è possibile scrivere la PercentileXInc di importo totale delle vendite per tutte le date nella tabella Data come segue: implementazione PercentileX Esclusivo The PercentileX Exclusive si basa sulla seguente modello, utilizzando gli stessi marcatori usati nella PercentileX Inclusive: Ad esempio, è in grado di scrivere il PercentileXExc del totale ammontare delle vendite per tutte le date nella tabella Data come segue: Inviami i prossimi modelli (newsletter). Deselezionare per scaricare gratuitamente il file. Pubblicato il 17 Marzo 2014

No comments:

Post a Comment