Come si scala il sistema di polari in base al numero di colonne?

Come ottenere i gradini del sistema di polari in base al numero di colonne?

Un preludio al calcolo dei variogrammi usando Polars

Foto di Yiorgos da Unsplash.

Da qualche tempo sto leggendo sui Varigrammi [1]. Questo è uno strumento di visualizzazione utilizzato in Geostatistica per vedere come una quantità specifica varia nello spazio. Può fungere da strumento diagnostico molto utile, aiutando a rispondere alle seguenti domande:

  • C’è una certa distanza d da un punto xi da cui non otteniamo più alcun valore informativo?
  • C’è ciclicità nella misura in funzione della distanza?

Sono stato curioso di applicare questa teoria ai dati delle serie temporali, in particolare perché rispetto a metodi specifici delle serie temporali come l’autocorrelazione [2], un Varigrama è valido per dati mancanti o non uniformemente spaziati (che è una caratteristica dei dati delle serie temporali reali) e può essere esteso a dimensioni superiori [3, 4].

Il problema dei variogrammi è che sono computazionalmente costosi. Tuttavia, di recente ho sperimentato con polars e ho pensato che il metodo rolling [5] e/o l’espressione si prestino bene all’algoritmo del variogramma. La parte complicata è che i variogrammi scalano con il numero di ritardi, quindi volevo vedere rapidamente se c’è una significativa diminuzione delle prestazioni quando si utilizza Expr.rolling [6] per un gran numero di colonne.

POC: Posso utilizzare Polars .rolling per i Variogrammi?

L’algoritmo per un variogramma è relativamente semplice [1]:

Dove h è il ritardo (ad esempio, una distanza), delta è una soglia di tolleranza, z è il valore che stiamo misurando e N è l’insieme di punti in cui h-delta <= j-i <=h+delta. In pratica, stiamo cercando di trovare tutte le coppie di punti i,j la cui differenza sia compresa tra [h-delta, h+delta].

La funzione di rolling di polars fa qualcosa di molto simile. Per ogni punto, crea finestre [5]:

  • (x0 + offset, x0 + offset + period]
  • (x1 + offset, x1 + offset + period]

Se definiamo offset = h — delta e lasciamo period=2*delta, allora ricreeremmo…