Come si può cercare di approssimare un grafico sperimentale (il grafico della relazione tra due grandezze, un istogramma di distribuzione frutto di un rilevamento statistico, ...) con una curva "bella" (cioè che si può descrivere facilmente mediante funzioni elementari)?
Innanzi tutto facciamo qualche chiarimento terminologico, a partire da un esempio.
Interpolazione e approssimazione
Supponiamo di avere le 5 informazioni rappresentate sotto nella figura A relativamente a come un fenomeno y varia in funzione del fenomeno x. Per stimare i valori assunti da y per i valori di x intermedi possiamo approssimare l'intero fenomeno congiungendo i punti con segmenti (figura B). Questa tecnica si chiama interpolazione lineare: si ottiene una funzione (continua lineare a tratti) che nei 5 punti noti coincide con la nostra y in funzione di x; la possiamo usare per approssimare y per gli altri valori di x. Volendo ottenere una curva "totalmente liscia" (continua con tutte le sue derivate) potremmo individuare la funzione polinomiale di grado minimo che passa per tutti i 5 punti (figura C); ma questa interpolazione polinomiale in genere dà luogo a cattive approssimazioni. Un'ulteriore possibilità è approssimare l'andamento tra i vari dati rilevati con diverse funzioni polinomiali tali da garantire che la curva risultante sia abbastanza liscia (interpolazione con spline): ad esempio con funzioni polinomiali di 2° grado, imponendo che la funzione risultante sia derivabile anche nei 5 punti (e un'ulteriore condizione, ad es. che il primo tratto sia rettilineo) o di 3° grado, imponendo che essa sia derivabile fino al 2° ordine, e che le derivate seconde nel primo e nell'ultimo punto siano nulle (figura D).
Sotto sono rappresentati graficamente gli esiti di 12 rilevamenti della portata d'acqua in m3/s (asse verticale) di un fiume italiano effettuati nel corso di un anno, a distanza di circa 30 giorni (asse orizzontale) l'uno dall'altro. Per stimare la portata negli altri giorni l'intero fenomeno è stato approssimato (al centro) con una interpolazione lieneare e (a destra) con una spline cubica.
Qui e qui trovi esempi di tracciamenti di spline cubiche con R.
Non si parla, invece, di interpolazione, ma solo di approssimazione, se si vuole trovare una funzione il cui grafico passi vicino ai vari punti noti, senza necessariamente passare per essi. Questo è ciò che si farebbe se si volessero individuare delle regolarità nel fenomeno e si cercasse di descriverlo in modo sintetico, o se (ma non è questo il caso) si trattasse di rilevamenti ad alta sensibilità, soggetti a errori casuali non stimabili a priori, per cui non avrebbe senso porsi il problema di trovare curve che passino esattamente per i punti sperimentali.
Si parla di estrapolazione quando si cerca di prolungare un'interpolazione a sinistra (oltre il primo dato) o a destra (oltre l'ultimo).
In inglese si parla di curve fitting per indicare la costuzione di una curva che approssimi o interpoli dei punti sperimentali (la curva che abbia "the best fit", il migliore adattamento, secondo i criteri stabiliti).
Noi ci occuperemo in particolare di alcune tecniche generali di approssimazione.
Uso di scale semilogaritmiche, bilogaritmiche, quadratiche e cubiche.
Calcolo e rappresentazione delle pendenze
Nel file bilog.htm
sono contenute delle coppie (x,y) ottenute tabulando una funzione polinomiale, sotto a sinistra rappresentate graficamente. Per capire di quale grado è il polinomio possiamo rappresentare i dati su carta bilogaritimica come quella raffigurata a fianco, ossia in cui sull'asse orizzontale e su quello verticale sono usate delle scale logaritmiche ( Ovvero possiamo trasformare i dati applicando il logaritmo sia alle x che alle y (dopo aver traslato i dati in modo da renderli positivi: figura sotto a destra) e rappresentare i nuovi dati in un usuale sistema di riferimento, come nella figura a sinistra nella riga successiva, e osservare che tendono a disporsi lungo una retta. |
Infatti y = axn+bxn1+
per x → ∞ tende a comportarsi come y = axn,
che è trasformata in Qui puoi vedere come realizzare tutto ciò con R. |
Il metodo precedente ha successo se i dati hanno andamento polinomiale. Se supponiamo che i dati abbiano andamento
esponenziale, come quelli nel file semilog.txt, rappresentato graficamente sotto
a sinistra, possiamo usare una carta semilogaritmica, ovvero con scala logaritmica solo sull'asse y, o,
in altri termini, usando
y = a eb x → Y =
Ecco, a destra, la trasformazione del grafico precedente ottenuta in tal modo. Cerchiamo di trovare a e b.
È stata tracciata una retta approssimante. Essa ha equazione
Ho b ≈ 0.1. Da log(a) = 2.35 deduco che:
a ≈ e2.35 ≈ 0.09536916 ≈ 0.1.
Qui puoi vedere come realizzare tutto ciò con R (con una stima migliore di y = 0.1·exp(−1).
I dati ad andamento polinomiale studiati sopra con una trasformazione bilogaritmica possono essere studiati anche attraverso successivi passaggi al grafico della pendenza. Se si impiegano n passaggi per arrivare a punti con andamento approssimativamente rettilineo, ciò significa che i dati avevano approssimativamente andamento polinomiale di grado n+1. Ecco la rappresentazione grafica di alcuni dati e quelle delle successive pendenze:
Con 2 passaggi alla pendenza si è arrivati a un andamento (quasi) lineare; quindi la funzione tabulata era approssimativamente un polinomio di grado 3. Dal fatto che l'ultimo grafico è, circa, la retta di ordinata 12 deduco che il coefficiente direttivo del polinomio è, con buona approssimazione, 12/3/2 = 2. Qui puoi vedere come realizzare tutto ciò (e approfondire lo studio) con R.
Se si fossero rappresentate le successive pendenze di un file di dati ad andamento esponenziale si sarebbero sempre ottenuti grafici crescenti (la derivata di una funzione esponenziale è ancora una funzione esponenziale).
Nel caso di dati con andamento del tipo
Una tecnica molto impiegata per approssimare dati è costituita dall'uso delle medie mobili (di ordine 3), in particolare per analizzare serie storiche. Essa consiste nel sostituire ogni punto con quello avente comme coordinate le medie delle coordinate sue e dei punti ad esso precedente e seguente (il punto inziale e quello finale non vengono modificati, o vengono eliminati nella nuova rappresentazione). Ecco l'impiego di questa tecnica per analizzare i dati relativi alle piogge a Genova contenuti nel file pioggia.txt e, in particolare, per individuare i fattori stagionali:
[clicca l'immagine per ingrandirla] |
Qui trovi esempi di tracciamenti di medie mobili con R. Qui trovi uno script per studiarle facilmente online.
Le tecniche viste possono essere in parte anche applicate ricorrendo a un foglio di calcolo. Ecco ad es. come usarne uno per analizzare i dati (1,2.25), (2,19.3), (3,65.2), (4,149), (5,302), (6,515), (7,820) con il metodo della pendenza. In questo caso Δx è sempre 1, per cui invece che calcolare pendenze successive mi posso limitare a calcolare delle differenze successive:
- riproduco a destra la "formula" della cella B2 (automaticamente vengono modificati i riferimenti alle celle); - riproduco la riga in basso più volte, saltando la prima cella. Dall'analisi della tabella, tenendo conto che i dati non sono esatti e che gli errori di approssimazione facendo le sottrazioni aumentano
(ad es. se su 149, 302, 515 e 820 l'errore fosse 5, sulle differenze prime sarebbe 10 e sulle terze sarebbe 20),
posso ritenere che le differenze terze siano in crescita e che le quarte si siano stabilizzate. |
|
Nel caso in cui si sia in grado di calcolare i valori di una funzione e si voglia capirne l'andamento, si può ricorre alla tecnica dei rapporti: se
Questo metodo è molto comodo anche per studiare sperimentalmente ordini di infinito/infinitesimo
(
B dipende da A secondo la relazione B = 21.8 + 0.80·A, rappresentata graficamente mediante una retta
nella figura sottostante a sinistra.
Ciascuna di queste informazioni sulla figura in basso a sinistra è rappresentata con un rettangolino, come si
vede meglio nell'ingrandimento qui a destra: i lati orizzontali corrispondono all'intervallo di indeterminazione per A,
i lati verticali a quello per B. |
[clicca le immagini per ingrandire]
Se mi interessasse solo conoscere il valore di k (ossia del fattore di proporzionalità
tra la variazione di A e la variazione di B) potrei concludere che esso sta tra queste due pendenze, ossia tra
• Se sapessi anche che h = 21.8 i potenziali grafici di B in funzione di A dovrebbero
passare, oltre che per i tre rettangolini, anche per il punto di ordinata 21.8 dell'asse verticale:
vedi figura sopra a destra.
In questo caso, con un ragionamento analogo, potrei concludere che k sta tra
Qui abbiamo studiato l'individuazione dei parametri di una funzione lineare che si adatti ad alcuni dati sperimentali. Il problema può essere esteso ad altri tipi di funzioni. A questi aspetti accenneremo in una voce successiva.
Esercizi (ulteriori rispetto a quelli presenti nel testo)
uno sol. due sol. tre sol. quattro sol. cinque sol. sei sol. sette sol.