Ho un intervallo di date e di una misurazione su ciascuno di tali date. Id come per calcolare una media mobile esponenziale per ciascuna delle date. Qualcuno sa come fare questo Im nuovo a Python. Esso non sembra che le medie sono costruiti nella libreria standard di Python, il che mi sembra un po 'strano. Forse Im non cercando nel posto giusto. Quindi, dato il seguente codice, come avrei potuto calcolare la media mobile ponderata di punti di QI per date di calendario (C'è probabilmente un modo migliore per strutturare i dati, tutto il consiglio sarebbe apprezzato) ha chiesto 28 gennaio 09 alle 18:01 Il mio pitone è un po 'arrugginito (chiunque può sentirsi libero di modificarla questo codice per fare le correzioni, se Ive incasinato la sintassi in qualche modo), ma qui va. Questa funzione sposta all'indietro, dalla fine della lista all'inizio, calcolando la media mobile esponenziale per ciascun valore lavorando all'indietro fino il coefficiente di peso per un elemento è inferiore alla proposta epsilon. Alla fine della funzione, inverte i valori prima di tornare alla lista (in modo che theyre nell'ordine corretto per il chiamante). (Nota a margine: se stavo usando una lingua diversa da pitone, Id creare una full-size array vuoto e poi riempirla all'indietro-ordine, in modo che io andrei devo per invertire tale tendenza, alla fine, ma io non credo che si possa dichiarare. un grande array vuoto in pitone. E nelle liste di pitone, aggiunta è molto meno costoso di anteponendo, che è il motivo per cui ho costruito la lista in ordine inverso. si prega di correggere se Im sbagliato.) l'argomento alfa è il fattore di decadimento ad ogni iterazione. Ad esempio, se si è utilizzato un alfa di 0,5, quindi oggi si muove valore medio sarebbe composto dai seguenti valori ponderati: Naturalmente, se avete ottenuto una vasta gamma di valori, i valori da dieci o quindici giorni fa contribuiscono abituato molto alla oggi la media ponderata. L'argomento epsilon consente di impostare un punto di taglio, sotto il quale si cesserà di preoccuparsi vecchi valori (in quanto il loro contributo al valore di oggi sarà trascurabile). Youd richiamare la funzione qualcosa di simile: risposto 28 gennaio 09 alle 18:46 Non so Python, ma per la parte media, vuoi dire un filtro passa-basso diminuisce in modo esponenziale della forma in cui alfa dttau, dt il passo temporale del filtro , tau la costante di tempo del filtro (la forma variabile passo temporale di questo è come segue, solo clip di dttau di non essere più di 1.0) Se si desidera filtrare qualcosa di simile a una data, assicurarsi che si converte ad una quantità in virgola mobile come di secondi dal 1 gennaio 1970. risposto 28 gennaio 09 alle 18:10 ho trovato il frammento di codice di cui sopra da Earino molto utile - ma avevo bisogno di qualcosa che potrebbe spianare continuamente un flusso di valori - così ho refactoring a questo: e io uso in questo modo: (dove pin. read () produce il successivo valore Id piace consumare). rispose Feb 12 14 alle 20:35 Im calcolando sempre EMAs con i panda: Ecco un esempio di come farlo: Ulteriori informazioni su Pandas EWMA: 4-ott-15 ha risposto alle 12:42 Don39t nuove versioni di Panda hanno nuove e migliori funzioni. ndash Cristian Ciupitu 11 Maggio 16 alle 14:10 Si noti che diversamente loro foglio di calcolo, io non calcolare la SMA, e io non vedo l'ora di generare l'EMA dopo 10 campioni. Questo significa che i miei valori sono divergenti, ma se a tracciare, esso segue esattamente dopo 10 campioni. Durante i primi 10 campioni, l'EMA a calcolare in modo appropriato è smoothed. Hmmm, sembra che questo quoteasy a implementquot funzione è in realtà abbastanza facile da ottenere sbagliato e ha favorito una buona discussione sulla efficienza della memoria. I39m felice di avere troppo grosso se questo significa sapere che something39s stato fatto a destra. ndash Richard 20 settembre 14 a 19:23 NumPys mancanza di una particolare funzione specifica per dominio è forse dovuta alla disciplina core team e la fedeltà al NumPys prima direttiva: fornire un tipo di matrice N-dimensionale. così come le funzioni per la creazione, e l'indicizzazione questi array. Come molti obiettivi fondamentali, questo non è piccolo, e NumPy lo fa brillantemente. Il (molto) più grande SciPy contiene una molto più grande collezione di librerie specifici del dominio (denominati sottopacchetti di sviluppatori SciPy) - per esempio, l'ottimizzazione numerica (optimize), il segnale processsing (segnale), e calcolo integrale (integrazione). La mia ipotesi è che la funzione siete dopo è in almeno uno dei sottopacchetti SciPy (scipy. signal forse), tuttavia, vorrei guardare prima nella collezione di scikits SciPy. identificare la scikit rilevanti (s) e cercare la funzione di interesse lì. Scikits sono sviluppati in modo indipendente pacchetti basati su NumPySciPy e diretto ad una particolare disciplina tecnica (ad es scikits-immagine. Scikits-imparare ecc.) Molti di questi erano (in particolare, il OpenOpt impressionante per l'ottimizzazione numerica) sono stati molto apprezzato, lungo progetti maturi prima di scegliere di risiedere sotto la relativamente nuova scikits rubrica. La homepage Scikits voluto sopra elenca circa 30 tali scikits. anche se almeno alcuni di quelli non più in fase di sviluppo attivo sono. A seguito di questo consiglio che porterebbe a scikits-timeseries tuttavia, che il pacchetto non è più in fase di sviluppo attivo In effetti è, Panda è diventata, per quanto ne so, il fatto NumPy a base di libreria di serie temporali. Panda ha diverse funzioni che possono essere utilizzate per calcolare una media mobile il più semplice di questi è probabilmente rollingmean. che si usa in questo modo: Ora, basta chiamare la funzione rollingmean passando l'oggetto Series e una dimensione della finestra. che nel mio esempio qui sotto è di 10 giorni. verificare che ha funzionato - ad es. valori confrontati 10 - 15 nella serie originale contro la nuova serie lisciato con rotolamento significare la funzione di rollingmean, insieme a circa una decina di altre funzioni sono informalmente raggruppate nella documentazione Panda sotto la rubrica in movimento le funzioni della finestra di un secondo, gruppo correlato di funzioni in Pandas si riferisce a funzioni in modo esponenziale ponderate (ad es EWMA. che calcola in modo esponenziale media mobile ponderata). Il fatto che questo secondo gruppo non è incluso nel primo (funzioni finestra mobile) è forse perché le trasformazioni in modo esponenziale ponderate dont contare su un windowIm di lunghezza fissa nel processo di creazione di un algoritmo di forex trading e ho voluto provare il mio colpo a calcolare EMA (mobile esponenziale Medie). I miei risultati sembrano essere corrette (rispetto ai calcoli che ho fatto a mano) quindi credo che il seguente metodo funziona, ma solo voluto ottenere un ulteriore set di occhi per fa in modo im non manca nulla. Si noti che questo solo restituisce l'EMA per l'ultimo prezzo, si pretende molto restituire un array di EMA come quello non è quello che mi serve per la mia applicazione. La ricorsione è un buon strumento per il lavoro giusto, ma qui è utilizzato per realizzare semplici loop. Come tale codice. è più difficile da leggere e ragionare su. è più lento perché gran parte del codice in ema ha solo bisogno di eseguire una sola volta. non riuscirà con valore sufficientemente grande di finestra a causa traboccante Pythons Stack di chiamate. Si prega di documentare almeno i parametri di ogni funzione, ad es. quella finestra è la lunghezza della finestra, e che la posizione conta all'indietro dalla fine dei dati. (In realtà le cose sarebbero più chiare se la posizione fosse un indice in avanti normale in dati) Sollevare un'eccezione quando si trova un parametro ha un valore non valido. Tornando Nessuno invece causerà solo una eccezione più confusione in seguito. In effetti, se provo indicatori (). EMA (closeprices, 600) ottengo ricorsione infinita perché sma restituisce None. che rende chiamata ema SMA più e più volte. Il punto precedente rivela anche che, se len (dati) Finestra lt 2 non è il controllo di validità destra. Il 1 nei dati-window2 1: 1 - window non sembrano corrette per me. Suppongo che si desidera che i dati-window2: - window Il previousema ritorno affermazione è in un posto strano perché a quel punto si è calcolato un nuovo currentema. Questo è il caso base della ricorsione, ed è consuetudine per gestire il caso prima base. La mia proposta per ema: risposta 26 novembre 14 a 18:56 recensione piuttosto superficiale: Non avete bisogno di scrivere una classe per quello che stai facendo (e vi suggerisco di dare un'occhiata a questo video). La classe non incapsulare tutti i dati e basta usarlo per avere le funzioni in una stessa entità. Credo che le cose sarebbero più facili da capire se si dovesse definire classmethod per rendere evidente che voi non davvero fare affidamento su qualsiasi istanza di sorta. Tuttavia, una opzione ancora meglio sarebbe definire solo funzioni in un modulo di segnalazione. risposto 24 novembre 14 a 18:04 Grazie per i suggerimenti in realtà ho fatto avere loro come classmethods e dibattuti andando avanti e indietro tra anche utilizzando una classe o semplicemente definendo le funzioni in un modulo di segnalazione (che io ora fare). ndash ChrisC 25 novembre 14 alle 19:12 Appena visto il video di troppo, roba grande. ndash ChrisC 25 novembre 14 a 19:43 tua risposta 2017 Stack Exchange, IncSmoothing con medie mobili ponderata esponenzialmente Una media mobile richiede una serie temporale rumoroso e sostituisce ogni valore con il valore medio di un quartiere circa il valore dato. Questa zona può consistere in dati puramente storici, o può essere centrata attorno al valore determinato. Inoltre, i valori del quartiere possono essere ponderati con diverse serie di pesi. Ecco un esempio di tre punti la media ponderata altrettanto in movimento, utilizzando i dati storici, qui, rappresenta il segnale livellato, e rappresenta la serie storica rumoroso. In contrasto con semplici medie mobili, una esponenzialmente ponderata media mobile (EWMA) regola un valore in base a una somma esponenzialmente ponderata di tutti i valori precedenti. Questa è l'idea di base, Questo è bello perché si don8217t si deve preoccupare di avere una finestra di tre punti, contro una finestra di cinque punti, o preoccuparsi l'adeguatezza del sistema di ponderazione. Con l'EWMA, perturbazioni precedenti 8220remembered, 8221 e 8220slowly dimenticato, 8221 con il termine della ultima equazione, mentre con una finestra o di quartiere con i confini discreti, una perturbazione è dimenticato non appena si passa fuori dalla finestra. La media dei EWMA per ospitare Trends Dopo aver letto su EWMAs in un libro di analisi dei dati, ero andato lungo felicemente utilizzo di questo strumento su ogni singola applicazione levigante che mi sono imbattuto. Non è stato solo più tardi che ho imparato che la funzione EWMA è davvero appropriato solo per i dati fissi, vale a dire i dati senza trend o stagionalità. In particolare, la funzione EWMA resiste tendenze dalla media corrente it8217s già 8220seen8221. Quindi, se si dispone di una funzione di cappello rumoroso che va da 0, a 1, e poi di nuovo a 0, allora la funzione EWMA restituirà valori bassi sul lato in salita, e alti valori sul lato verso il basso-collina. Un modo per aggirare questo è per lisciare il segnale in entrambe le direzioni, marcia in avanti, e poi marcia indietro, e poi la media dei due. Qui, useremo la funzione EWMA fornita dal modulo panda. Holt-Winters Secondo Ordine EWMA Ed ecco qualche codice Python attuazione del metodo secondo ordine Holt-Winters su un'altra funzione cappello rumoroso, come prima. navigazione Messaggio messaggi recenti
No comments:
Post a Comment