• Tidak ada hasil yang ditemukan

Interpretazione degli ordinamenti

Dalam dokumen DellOmodarme esercitazioni R (Halaman 173-178)

8.4 Analisi della corrispondenza (CA)

8.4.2 Interpretazione degli ordinamenti

Usualmente in campo ecologico `e possibile disporre di misure di grandezze quali temperatura, ele-vazione, umidit`a e altro che caratterizzano i siti di campionamento. `E allora interessante cercare di interpretare gli ordinamenti evidenziati in base a tali misurazioni, in modo da ricercare una possi-bile “spiegazione” di quanto evidenziato dallo studio. Per far ci`o `e possibile sovrapporre ai grafici di ordinamento ottenuti con tecnica CA o PCA, curve di livello che rappresentano l’andamento di ulteriori variabili in studio. Se le curve ottenute sono tra loro parallele e equispaziate l’ordinamento evidenziato sar`a lineare nel fattore (la direzione ortogonale alle curve `e quindi la cosiddetta direzione del gradiente). In R `e possibile ricorrere alla funzione ordisurf della libreria vegan, come nell’esempio seguente.

Esempio

Si supponga che le altitudini dei siti campionati nell’esempio precedente vadano da 400 a 1400 metri sul livello del mare:

> altitudine <- seq(400, 1400, by=100)

La sovrapposizione delle curve di livello per la variabile altitudine si possono sovrapporre al grafico risultante dall’analisi CA nel modo seguente:

> plot(ca, type="row")

> ordisurf(ca$rscore, altitudine, add=TRUE, col="green4")

La funzione accetta come primo argomento gli score dei siti, individuati dall’analisi di corrispondenza, e come secondo la variabile i cui livelli vanno sovraimposti al grafico di ordinamento. L’opzione add serve a aggiungere il grafico sulla finestra esistente, senza creare un nuovo oggetto vuoto. In Fig. 8.9 si vede che la variabile altitudine cresce in maniera lineare lungo il primo asse individuato dalla tecnica CA.

Capitolo 9

Analisi multivariata: metodi di classificazione

9.1 Analisi discriminante lineare (LDA)

Se l’obiettivo dello studio `e la divisione dei soggetti in r gruppi (noti a priori) a seconda dei valori delle p variabili x1, . . . , xp che vengono su di essi misurate, si pu`o ricorrere alla tecnica dell’analisi discriminante. Questa metodica porta a costruire delle funzioni lineari dei predittori che permettono di classificare al meglio i soggetti all’interno dei gruppi. L’idea originaria risale e Fisher che pens`o di ricercare la funzione lineare dei predittori che massimizza il test F per l’ANOVA a una via che usi i valori di tale funzione come variabile dipendente. A seconda del valore assunto dalla funzione si disporr`a di un metodo automatico per allocare gli oggetti nei vari gruppi e per classificarne di nuovi.

Il maggiore impiego di questa tecnica si ha quando si vuole sostituire a una procedura di classifica-zione molto onerosa, o dal punto di vista economico o procedurale, una nuova metodologia basata su rilevazione di quantit`a che siano siano meno dispendiose da misurare o pi`u rapidamente disponibili.

Il punto di partenza `e la divisione della matrice della somma dei quadrati e dei prodotti crociati T (o analogamente della matrice di covarianza S) dei dati in due parti, in modo simile a quanto si fa nel caso di ANOVA. Una parte E `e dovuta al contributo entro gruppi e una parte F `e dovuta al contributo fra gruppi. Le tre matrici sono definite nel modo seguente. Sia X la matrice dei predittori con i soggetti inseriti per riga, M la matrice in cui a ogni soggetto `e sostituito il vettore del baricentro (o centroide) del gruppo a cui esso appartiene e G una matrice n × r le cui colonne segnano l’appartenenza dei dati ai gruppi: gij= 1 se il soggetto i-esimo `e nel gruppo j-esimo, 0 altrimenti. Si ha:

T = (n − 1)S = (n − 1) Cov(X) (9.1)

E = (X − GM)T(X − GM)

n − r (9.2)

F = (GM − 1¯x)T(GM − 1¯x)

r − 1 (9.3)

dove ¯x`e il baricentro generale dei dati. Si ha la relazione di somma:

T = (n − r)E + (r − 1)F.

La miglior funzione discriminante Xa sar`a tale da massimizzare il rapporto fra la varianza fra gruppi rispetto a quella entro gruppi, ossia massimizzare il rapporto:

aTF a aTEa.

Per risolvere il problema `e consuetudine effettuare uno sphering delle variabili X = XS, in modo tale che sulle variabili trasformate la matrice E sia l’identit`a. Si deve quindi risolvere il problema di

167

massimizzare aTFa con il vincolo |a| = 1; questo equivale a dire che a deve essere l’autovettore di F corrispondente al suo massimo autovalore. Sia U la matrice che ha per colonna gli autovettori ordinati in modo tale che sulla prima colonna si abbia l’autovettore corrispondente all’autovalore massimo, e cos`ı via1. Le funzioni discriminanti sono quindi:

XU = XSU.

In R questo tipo di analisi si pu`o effettuare facendo uso della funzione lda disponibile all’interno della libreria M ASS, la quale in realt`a opera con una logica leggermente diversa preferendo alla ricerca degli autovettori la decomposizione ai valori singolari delle matrici in questione.

Esempio

Riprendendo l’esempio delle anfore cretesi, si supponga che sia nota la loro datazione. Le prime 5 anfore risalgono ad un periodo pi`u antico, le ultime 6 sono le pi`u recenti e le rimanenti 4 hanno un’et`a intermedia. Si cerca di ricavare una classificazione analoga utilizzando solo i parametri di dimensione x1, . . . , x4. Per prima cosa si crea il fattore grp che tiene traccia del gruppo di appartenenza reale delle anfore:

> grp <- factor( c(1,1,1,1,1,2,2,2,2,3,3,3,3,3,3) )

A questo punto l’analisi discriminante si esegue con la semplice chiamata:

> library(MASS)

> discr <- lda(grp ~ ., data=X)

Dove X `e, come in precendenza, il data frame che contiene i valori delle dimensioni, rilevate sulle 15 anfore. L’output della funzione `e abbastanza ricco:

> discr Call:

lda(grp ~ ., data = X)

Prior probabilities of groups:

1 2 3

0.3333333 0.2666667 0.4000000 Group means:

x1 x2 x3 x4

1 22.46000 19.20000 29.66 9.900 2 24.60000 21.05000 32.85 10.925 3 24.28333 20.96667 33.10 10.550 Coefficients of linear discriminants:

LD1 LD2

x1 -1.8266939 -3.0112168 x2 2.2243913 2.7660701 x3 -0.6399994 0.3771298 x4 -0.7181312 -0.2750134 Proportion of trace:

LD1 LD2

0.8942 0.1058

1In generale `e possibile costruire al massimo min(p, r − 1) funzioni discriminanti dato che questo `e il numero massimo di autovalori non nulli che ammette la matrice F.

9.1 Analisi discriminante lineare (LDA) 169

Dapprima vengono valutate le probabilit`a a priori di far parte di un dato gruppo. In mancanza di informazioni specificate dallo sperimentatore (tramite l’opzione prior della funzione lda) esse sono esattamente le proporzioni di soggetti nei vari gruppi di grp. A questa informazione segue una tabella in cui vengono riepilogate le medie dei predittori all’interno dei tre gruppi definiti dal fattore grp.

Questi vettori di coordinate definiscono i centroidi dei gruppi. Infine vi `e la tabella dei coefficienti delle funzioni lineari che meglio separano i soggetti rispetto alle classi specificate dal fattore cronologico in esame. Dato che i gruppi sono tre `e possibile costruire due funzioni di questo genere (indicate da R con le sigle LD1 e LD2). Secondo i dati dell’analisi, la funzione lineare dei predittori che meglio separa i dati, identificata da LD1, `e:

LD1 = −1.83 ∗ x1 + 2.22 ∗ x2 − 0.64 ∗ x3 − 0.72 ∗ x4.

Tale funzione separa le tre popolazioni di anfore molto meglio di quanto non farebbe la funzione LD2, come si evince dall’ultima riga dell’output. Per ogni funzione discriminante il valore riportato `e infatti il rapporto fra l’autovalore corrispondente della matrice F e la somma degli autovalori stessi. Questa quantit`a rappresenta proprio la proporzione di varianza fra gruppi interpretata dalle funzioni lineari trovate.

Per verificare i calcoli dell’algoritmo `e possibile effettuare manualmente la procedura:

> S <- cov(X) # matrice di covarianza totale

> M <- discr$means # coordinate dei centroidi

> G <- NULL; for(i in 1:3) G <- cbind(G, as.numeric(grp == levels(grp)[i]))

> E <- t(as.matrix(anfore) - G %*% M) %*% (as.matrix(anfore) - G %*% M) / 12

> F <- (14 * S - 12 * E)/2

> eigen( solve(E) %*% F )

$values

[1] 8.892942e+00 1.052540e+00 -5.553715e-14 -1.207411e-14

$vectors

[,1] [,2] [,3] [,4]

[1,] -0.6019148 -0.7316967 -0.5933035 -0.68597423 [2,] 0.7329603 0.6721284 0.7546568 0.06526138 [3,] -0.2108865 0.0916389 -0.1208490 0.19837373 [4,] -0.2366318 -0.0668256 0.2527443 0.69701375

Si hanno le componenti degli autovettori (non scalate) e i corrispondenti autovalori. Per questo problema si possono avere un massimo di due funzioni discriminanti. In effetti si nota che, entro la precisione algoritmica, gli ultimi due autovalori sono nulli; nei calcoli seguenti si possono quindi trascurare i relativi autovettori. La proporzione di varianza fra gruppi spiegata dalla prima funzione discriminante `e:

> 8.892942e+00/(8.892942e+00 + 1.052540e+00) [1] 0.894169

risultato coincidente con quanto visto in precedenza. Per quanto riguarda la matrice degli autovettori si procede alla scalatura in modo da rendere approssimativamente circolare la dispersione dei punti nei gruppi. Detta U la matrice degli autovettori questo risultato si ottiene dividendo ogni autovettore uk per la radice quadrata della quantit`a uTkEuk (la varianza entro gruppi dell’autovettore uk). In notazione matriciale la matrice normalizzata C `e:

C = U (UTEU )−1/2

dove la matrice di scalatura UTEU `e diagonale. Nel caso dell’esempio in questione si ha:

> U <- eigen( solve(E) %*% F )$vectors[,1:2]

−2 −1 0 1 2 3

−1.5−1.0−0.50.00.51.01.52.0

LD1

LD2

1 1

1

1

1

2

2 2

2 3

3

3 3

3

3

Figura 9.1: Grafico dei gruppi, corrispondenti alle diverse datazioni delle 15 anfore (dalle pi`u antiche individuate dal numero 1, alle pi`u recenti individuate dal numero 3), sul piano individuato dalle prime due funzioni lineari discriminanti. Si nota una buona separazione fra le tre popolazioni.

> scale <- sqrt(diag(diag((t(U) %*% E %*% U)))) # matrice di scalatura

> C <- U %*% solve(scale)

> C

[,1] [,2]

[1,] -1.8266939 -3.0112168 [2,] 2.2243913 2.7660701 [3,] -0.6399994 0.3771298 [4,] -0.7181312 -0.2750134

Si verifica che questo `e quanto riportato dall’algoritmo lda (eventualmente a meno del segno).

Per avere un’idea della bont`a delle funzioni discriminanti individuate `e possibile graficare i valori che assumono LD1 e LD2 sugli individui e segnare ogni punto con il corrispondente valore del fattore grp. Se, in questa particolare visualizzazione, le popolazioni risultano ben separate si pu`o concludere che la tecnica ha raggiunto il suo scopo (si noti per inciso che questo avviene quando la varianza all’interno dei gruppi `e piccola rispetto a quella fra gruppi). In R `e possibile realizzare questo grafico con la chiamata:

> plot(discr)

che produce l’output di Fig. 9.1, da cui si pu`o concludere che i tre gruppi di anfore sono sufficientemente ben separate dalle due funzioni LD1 e LD2. Nel calcolare i valori che le funzioni assumono sui dati campionari, al posto dei vettori x1, . . . , x4 vengono usati i vettori traslati x1 − ¯x1, . . . , x4 − ¯x4.

Dalam dokumen DellOmodarme esercitazioni R (Halaman 173-178)