Statistica multivariata con R
|
|
|
- Marina Fede
- 10 anni fa
- Просмотров:
Транскрипт
1 Statistica multivariata con R Sergio Polini 4 novembre 2009 Indice 1 Prime sintesi dei dati Tabelle di contingenza Matrici di percentuali Matrice degli scarti Matrice degli scarti standardizzati Matrice di codevianza Matrice di covarianza Matrice di correlazione Varianza totale Varianza generalizzata di Wilks Analisi delle componenti principali Il punto di vista geometrico Segnale e rumore Variabili omogenee La prima componente Le componenti successive Variabili eterogenee Scelta e valutazione delle componenti principali La matrice Factor Pattern Scelta delle componenti Valutazione delle variabili Valutazione delle unità statistiche Valutazione congiunta Indici di contribuzione relativa L ACP con R La funzione ACP() La funzione prcomp() La funzione princomp() Appendici Notazioni di calcolo differenziale Scomposizione ai valori singolari Scomposizione di matrici standardizzate Scomposizione di matrici centrate Il codice delle funzioni ACP() e acp.*() La funzione ACP() La funzione acp.screeplot() La funzione acp.corrplot() La funzione acp.unitplot()
2 1 Prime sintesi dei dati Data una matrice X n,k, contenente la rilevazione delle modalità di k caratteri su n unità statistiche, le prime sintesi consistono o nella costruzione di una tabella di contingenza, o nella costruzione di altre matrici contenenti trasformazioni dei dati. 1.1 Tabelle di contingenza Nel caso alcuni dei k caratteri siano qualitativi, si possono distinguere due casi: a) se le modalità di un carattere sono solo due, si attua la codifica binaria assegnando 0 ad una modalità è 1 all altra; b) se le modalità sono più di due, si attua la codifica disgiuntiva completa, che consiste nello scomporre il carattere in tanti caratteri con le due modalità sì/no, quindi 1/0, quante sono le modalità originarie; ad esempio: Regione N C C S N diventa: N ord Centro Sud Può tuttavia convenire la codifica disgiuntiva completa anche nel caso di un carattere con due sole modalità, scomponendolo in due caratteri con modalità sì/no. Così facendo, infatti, si trattano nello stesso modo i caratteri con due o più di due modalità e, anche se aumenta il numero dei caratteri, si perviene facilmente ad una tabella di contingenza. Ad esempio, se si rilevano su n unità statistiche due caratteri qualitativi, il primo con due modalità ed il secondo con tre, con la codifica disgiuntiva completa si arriva a due matrici le cui colonne contengono solo 0 e 1: X 1 n,2 non è altro che il prodotto: X 1 X 2 = A 2,n n,3 2,3 Infatti, ipotizzando un caso in cui n sia pari a 5: X 1 5, = e X 3 n,3 X 2 5,3. La relativa tabella di contingenza = Il prodotto X 1 X 2 è: 2,5 5, ( ) = ( 1 0 )
3 cdc <- function(x, names=null) { if (!is.vector(x)) stop(" x deve essere un vettore") if (!is.factor(x)) x <- factor(x) n <- length(levels(x)) m <- NULL for (i in 1:n) { yes <- levels(x)[i] v <- as.numeric(x == yes) if (is.null(m)) { m <- v } else { m <- cbind(m,v) } } if (is.null(names)) { colnames(m) <- levels(x) } else { colnames(m) <- names } m } Figura 1. Funzione R per la codifica disgiuntiva completa di un carattere. Si vede che l elemento a 11 della matrice prodotto è 1 perché nell esecuzione del prodotto righe per colonne capita una sola volta che si abbia un risultato non nullo (solo i primi elementi della prima riga di X 1 e della prima colonna di X 2 sono entrambi pari a 1), l elemento a 12 è 0 perché non capita mai, l elemento a 1,3 è 2 perché capita due volte (il secondo ed il quarto elemento sia della prima riga di X 1 che della terza colonna di X 2). Gli elementi della matrice prodotto sono quindi frequenze congiunte. R calcola le tabelle di contingenza con la funzione table(), ma, se si volesse comunque procedere alla codifica disgiuntiva completa per i singoli caratteri, si potrebbe utilizzare una funzione cdc() come quella riportata nella figura 1 che, dato in input un carattere (un vector o un factor), restituisce una matrice le cui colonne, contenenti solo 0 e 1, sono le modalità del carattere. Il parametro opzionale names consente di attribuire espressamente nomi ai nuovi caratteri così ottenuti: > regioni <- c("n","c","c","s","n") > cdc(regioni) C N S [1,] [2,] [3,] [4,]
4 [5,] Esempio 1.1. Il comunicato ISTAT sulle forze di lavoro al 2 trimestre riporta, tra l altro, i dati destagionalizzati relativi alla ripartizione di occupati e persone in cerca di occupazione nel nord, nel centro e nel sud d Italia. I dati possono essere immessi in R come segue: > occupati <- factor(c(rep(1,11996),rep(0,612),rep(1,4853),rep(0,353), + rep(1,6318),rep(0,874))) > regioni <- factor(c(rep("n",12608),rep("c",5206),rep("s",7192))) Si assegnano così al vettore occupati, nell ordine, occupati (modalità 1) e persone in cerca di lavoro (modalità 0) nel nord, occupati e persone in cerca di lavoro nel centro, occupati e persone in cerca di lavoro nel sud; al vettore regioni le forze di lavoro, rispettivamente, del nord, del centro e del sud. La funzione table() consente di costruire subito una tabella di contingenza: > table(occupati, regioni) regioni occupati C N S Si può ottenere lo stesso risultato con la codifica disgiuntiva completa. Nel caso del carattere regioni, le colonne della matrice ottenuta con cdc() avranno come nomi le modalità ( C, N e S ); nel caso del carattere occupati, essendo le modalità 0/1, conviene assegnare espressamente i nomi di colonna, indicando come primo nome quello per la colonna relativa allo stato 0 (in questo caso si potrebbe usare D per disoccupato, ovvero persona in cerca di occupazione) e come secondo quello per l altra (in questo caso O per occupato): > X1 <- cdc(occupati, names=c("d","o")) > X2 <- cdc(regioni) La tabella di contingenza può ora essere ottenuta col prodotto: che in R si esegue con: > t(x1) %*% X2 C N S D O X 1 X 2 = A 2,n n,3 2,3 (t(x1) rende la trasposta di X1, l operatore %*% esegue il prodotto righe per colonne di matrici). Va notato che si può procedere alla codifica disgiuntiva completa anche nel caso di dati quantitativi, dopo averli raggruppari in classi. In questo caso, una colonna verrà trasformata in tante colonne quante sono le classi
5 1.2 Matrici di percentuali Le matrici di percentuali sono matrici in cui l originaria matrice dei dati X n,k viene trasformata sostituendo i suoi elementi x ij con percentuali rispetto ad un totale: a) matrice di percentuali sul totale, t P n,k : se le colonne sono omogenee (stesso carattere, stessa unità di misura), si sostituiscono i singoli dati con le loro percentuali sull ammontare totale del carattere: t p ij = x ij ni=1 kj=1 x ij 100 t P n,k = 100 ni=1 kj=1 x ij X n,k si tratta quindi di moltiplicare la matrice dei dati per la costante 100 ammontare totale in R, se X è la matrice dei dati, il comando sum(x) restituisce il totale dei suoi elementi, quindi è sufficiente: P.tot <- X / sum(x) * 100 b) matrici di percentuali per riga, r P n,k : se le colonne sono omogenee, come sopra, si sostituiscono i singoli dati con le loro percentuali sui totali di riga: r p ij = x ij kj=1 x ij 100 r P n,k = r D n,n X n,k 100 dove r D è una matrice diagonale n n avente come elementi non nulli gli n reciproci dei totali di riga; 2 infatti premoltiplicando una matrice per una matrice diagonale si ottiene una matrice in ciascuna riga della quale compaiono i prodotti dei corrispondenti elementi della stessa riga della matrice data per l unico elemento non nullo della stessa riga della matrice diagonale; in R le matrici diagonali si ottengono con la funzione diag() in vari modi, anche semplicemente passando il vettore degli elementi della diagonale principale, che in questo caso saranno i reciproci delle somme per riga della matrice dei dati: P.row <- ( diag(1/rowsums(x)) %*% X) * 100 c) matrici di percentuali per colonna, c P: i singoli dati vengono sostituiti con le loro n,k percentuali sui totali di colonna (non è quindi necessario che le colonne siano tra loro omogenee): c p ij = x ij ni=1 x ij 100 c P = 100 X cd n,k n,k k,k dove c D è una matrice diagonale k k avente come elementi non nulli i k reciproci dei totali di colonna; 3 infatti postmoltiplicando una matrice per una matrice diagonale si ottiene una matrice in ciascuna colonna della quale compaiono i prodotti dei corrispondenti elementi della stessa colonna della matrice data per l unico elemento non nullo della stessa colonna della matrice diagonale; in R: 2 Può essere anche intesa come l inversa di una matrice diagonale avente come elementi non nulli i totali di riga. 3 Può essere anche intesa come l inversa di una matrice diagonale avente come elementi non nulli i totali di colonna. 5
6 P.col <- (X %*% diag(1/colsums(x))) * 100 Esempio 1.2. Costruiamo una matrice X prendendo dalla contabilità nazionale i dati in milioni di euro relativi a produzione ai prezzi base, importazioni cif, imposte nette e margini distributivi (tre caratteri quantitativi omogenei) relativi alle unità statistiche costituite dai tre settori agricoltura, industria e servizi: 4 > Rpa <- matrix(c(47133, , , 9258, , 40804, , , ), nrow=3) > rownames(rpa) <- c("agricoltura", "Industria", "Servizi") > colnames(rpa) <- c("produzione pb", "Import. cif", "Imposte e margini") > Rpa Produzione pb Import. cif Imposte e margini Agricoltura Industria Servizi Per ricavare la matrice delle percentuali sull ammontare totale (che è il totale delle risorse ai prezzi di acquisto): > P.tot <- Rpa / sum(rpa) * 100 > P.tot Produzione pb Import. cif Imposte e margini Agricoltura Industria Servizi Matrice degli scarti In una matrice degli scarti, S n,k, i dati della matrice dei dati vengono sostituiti con i loro scarti dalle medie di colonna: 5 s ij = x ij x j S = X 1 n x n,k n,k n,1 1,k dove 1 n è un vettore colonna contenente tutti 1 e x è un vettore riga contenente le medie di colonna; il loro prodotto è una matrice n k in cui la riga i-esima contiene le medie delle k colonne. Ad esempio: 1 x 1 x 2 x 3 1 ) x (x 1 1 x 2 x 3 = 1 x 2 x 3 x 1 x 2 x 3 1 x 1 x 2 x 3 Si deve notare che la matrice degli scarti opera una semplice traslazione: la nuvola dei punti di R k, vettori i cui componenti sono le modalità dei caratteri quantitativi, viene 4 Tabella 4.2, pag. 9; da notare che i totali non sembrano esatti (ci sono alcune differenze sull ultima cifra) in quanto i dati sono arrotondati. 5 Nel teso di Zani-Cerioli la matrice degli scarti è indicata con X. 6
7 spostata in modo che il suo baricentro coincida con l origine del sistema di coordinate, ma la variabilità rimane immutata. Con R si potrebbero facilmente costruire i vettori 1 n e x ed il prodotto 1 n x, ad esempio, se n è il numero di righe della matrice di dati X > u <- rep(1,n) > x.mean <- colmeans(x) > u %*% t(x-mean) ma si può usare anche la funzione sweep() che toglie valori (in inglese to sweep vuol dire spazzare via ) dalle righe o dalle colonne di matrice; il suo secondo argomento è 1 nel primo caso, 2 nel secondo. In particolare, se X è un dataframe la funzione mean() fornisce un vettore delle medie di colonna, se invece X è una matrice si usa colmeans(), che può peraltro essere usato anche con i dataframe. Quindi, per ottenere a X una matrice degli scarti dalla media: > x.mean <- colmeans(x) > sweep(x, 2, x.mean) Esempio 1.3. Il testo di Zani-Cerioli 6 contiene diverse matrici di dati. La tabella 1.1, a pag. 8, contiene la matrice dei dati relativi a 25 modelli di home theatre per i quali si sono rilevati sette caratteri; vi sono tre caratteri quantitativi: 1) PREZZO (in euro); 2) POTENZA (in watt); 3) CASSE (numero); e quattro caratteri qualitativi in codifica binaria: 4) DVDREC (presente la funzione recorder per i DVD); 5) WIRELESS (possibili collegamenti senza fili); 6) DVX (capacità di leggere i DVX); 7) RDS (presenza di Radio Data System). I dati si possono caricare in R come dataframe col comando: 7 > H <- read.csv("tab0101.csv", row.names=1) > H PREZZO POTENZA CASSE DVDREC WIREL DVX RDS Akai Hitachi K Sony RH Yamaha YHT Per ottenere la matrice degli scarti limitatamente alle prime tre colonne: 6 Sergio Zani e Andrea Cerioli, Analisi dei dati e data mining per le decisioni aziendali, Giuffré, Milano, La tabella 1.1 può essere scaricata da tab0101.csv. 7
8 > h.mean <- colmeans(h[,1:3]) > h.mean PREZZO POTENZA CASSE > sweep(h[,1:3], 2, h.mean) PREZZO POTENZA CASSE Akai Hitachi K Sony RH Yamaha YHT Matrice degli scarti standardizzati In una matrice degli scarti standardizzati, Z n,k, ciascun dato è sostituito dal rapporto tra il suo scarto dalla media di colonna e lo scostamento quadratico medio di colonna: z ij = s ij σ j Z = S σd n,k n,k k,k dove S è la matrice degli scarti e σ D è una matrice diagonale k k i cui elementi non nulli sono i reciproci degli scostamenti quadratici medi di colonna. In R, se X è la matrice dei dati: > S <- sweep(x, 2, colmeans(x)) > D <- diag(1/sd(x)) > Z <- S %*% D Si deve notare che la matrice degli scarti standardizzati non opera una semplice traslazione dei dati, come la matrice degli scarti dalle medie di colonna, ma deforma la nuvola dei punti; diminuisce infatti la variabilità dei caratteri con σ > 1, aumenta quella dei caratteri con σ < 1. Esempio 1.4. Nell esempio 1.3 H è un dataframe; per usare il prodotto righe per colonne di matrici si può convertire H in matrice, oppure si può convertire la sola matrice degli scarti; limitandosi alle prime tre colonne (quelle relative ai caratteri quantitativi): > S <- as.matrix(sweep(h[,1:3], 2, colmeans(h[,1:3]))) > D <- diag(1/sd(h[,1:3])) > Z <- S %*% D > colnames(z) <- colnames(h[,1:3]) > Z PREZZO POTENZA CASSE Akai Hitachi K Sony RH Yamaha YHT
9 var2 <- function(x, def = NROW(x), w = NULL) { if (!is.vector(x)) stop(" x deve essere un vettore") if (is.null(w)) v <- sum((x-mean(x))^2) / def else { n <- length(x) if (length(w)!= n) stop(" x e w devono avere uguale lunghezza") if (any(w < 0) (s <- sum(w)) == 0) stop("i pesi devono essere non negativi e non tutti nulli") w <- w / s w.mean <- weighted.mean(x, w) v <- sum((x-w.mean)^2*w) } v } Figura 2. Funzione R per il calcolo della varianza con un prefissato numero di gradi di libertà oppure su dati ponderati. I risultati possono essere confrontati con quelli riportati dallo Zani-Cerioli nella tabella 1.4, a pag. 21. In R la funzione sd() ritorna la radice quadrata della varianza come calcolata con var(), la quale a sua volta ritorna la somma dei quadrati degli scarti dalla media divisa per n 1 (i gradi di libertà nel caso più frequente). A volte risulta necessario sia dividere per un diverso numero di gradi di libertà, sia usare gli scarti da medie ponderate; può quindi essere opportuno definire funzioni più generali. La funzione var2() (figura 2) calcola la varianza di un vettore di dati; per default, calcola la somma dei quadrati degli scarti dalla media aritmetica divisa per n, ma si può dividere per il numero di gradi di libertà che interessa usando il parametro def (degrees of freedom). Si può anche indicare un vettore di pesi e, in questo caso, si procede in modo diverso. La varianza usata nella statistica descrittiva è definita da: Var(x) = n i=1 1 n (x i x) 2 Si calcola quindi la somma dei quadrati degli scarti dalla media aritmetica e ogni quadrato è diviso per n, cioè moltiplicato per il peso 1/n, uguale per tutti. La somma degli n pesi è ovviamente uguale ad 1. Usando un vettore di pesi la cui somma sia sempre 1, si ottiene: n Var(x, p) = (x i x) 2 p i i=1 dove p i è il peso, compreso tra 0 e 1, dell elemento x i. 9
10 sd2 <- function(x, def = NROW(x), w = NULL) { if (is.matrix(x)) apply(x, 2, sd2, def = def, w = w) else if (is.vector(x)) sqrt(var2(x, def = def, w = w)) else if (is.data.frame(x)) sapply(x, sd2, def = def, w = w) else sqrt(var2(as.vector(x), def = def, w = w)) } Figura 3. Funzione R per il calcolo dello scarto quadratico medio con un prefissato numero di gradi di libertà oppure su dati ponderati. Usando la funzione var2() si può passare un vettore di pesi non normalizzati; in questo caso, i pesi vengono automaticamente divisi per il loro totale. È solo necessario che i pesi siano non negativi e non tutti nulli. Da notare che la funzione var() di R opera anche su matrici, restituendo in tal caso la matrice di covarianza, mentre var2() opera solo su vettori (per la matrice di covarianza v. sez. 1.6). La funzione sd2() (figura 3) è modellata sulla sd() di R: 8 usa la funzione per il calcolo della varianza, ma può essere usata su matrici o dataframe e, in questi casi, fornisce un vettore degli scarti di colonna. Esempio 1.5. La tabella 1.5 dello Zani-Cerioli contiene alcuni dati e indicatori economici relativi a 14 settori industriali. Negli esempi del testo viene eliminata la sesta riga, relativa alle raffinerie, per i motivi spiegati a pag. 24; possiamo quindi procedere così: 9 > X <- read.csv("tab0105.csv", row.names=1) > X <- X[c(1:5,7:14),] I caratteri rilevati sono: 1) addetti: numero di imprenditori, coadiuvanti e dipendenti; 2) fatturato: il fatturato in milioni di euro; 3) valoreagg: il valore aggiunto in milioni di euro; 4) vafatt: percentale del valore aggiunto sul fatturato; 5) vaad: il valore aggiunto per addetto in migliaia di euro; 6) coslav: il costo del lavoro per dipendente in migliaia di euro; 7) retrib: la retribuzione lorda per dipendente in migliaia di euro; 8) invest: gli investimenti per addetto in migliaia di euro. Possiamo ottenere le medie degli indicatori (i caratteri dal 4 all 8 ) con: 8 Per vedere il sorgente di una funzione di R basta digitarne il nome non seguito da parentesi e dare invio. 9 La tabella è scaricabile da 10
11 > mean(x[,4:8]) vafatt vaad coslav retrib invest ma anche le medie ponderate con gli addetti o con il valore aggiunto, ricorrendo alla funzione sapply(): > sapply(x[,4:8], weighted.mean, w = X$addetti) vafatt vaad coslav retrib invest > sapply(x[,4:8], weighted.mean, w = X$valoreagg) vafatt vaad coslav retrib invest Possiamo inoltre ottenere gli scarti quadratici medi campionari, usando sd(): > sd(x[,4:8]) vafatt vaad coslav retrib invest ma anche quelli dei dati ponderati con gli addetti o con il valore aggiunto: > sd2(x[,4:8], w = X$addetti) vafatt vaad coslav retrib invest > sd2(x[,4:8], w = X$valoreagg) vafatt vaad coslav retrib invest I risultati così ottenuti possono essere confrontati con quelli riportati nella tabella 1.6 dello Zani-Cerioli (pag. 26); non sono esattamente uguali per i primi due indicatori (vafatt e vaad) perché i dati riportati nella tabella 1.5 del testo sono arrotondati. La funzione sd2() può essere usata per ottenere una matrice degli scarti standardizzati in cui gli scarti siano calcolati dividendo per n invece che per n 1. Esempio 1.6. Tornando ai dati relativi a 25 modelli di home theatre (esempi 1.3 e 1.4): > S <- sweep(h[,1:3], 2, colmeans(h[,1:3])) > D <- diag(1/sd2(h[,1:3])) > Z <- as.matrix(s) %*% D > colnames(z) <- colnames(h[,1:3]) > Z PREZZO POTENZA CASSE Akai Hitachi K Sony RH Yamaha YHT
12 Si può notare che i dati differiscono da quelli ottenuti nell esempio 1.4 di un fattore 1 / 1 25 =, che rappresenta la differenza tra la divisione della varianza prima per n = 25, poi per n 1 = 24; ad esempio, il valore standardizzato del prezzo dell Akai 4200 era , ora è e si ha: = Matrice di codevianza La matrice di codevianza, T k,k, detta anche matrice di devianza-codevianza, è una matrice quadrata simmetrica che ha sulla diagonale principale la devianza di ciascuna colonna della matrice dei dati e altrove la codevianza tra la i-esima e la j-esima colonna. Poiché la devianza non è altro che la somma dei quadrati degli scarti dalla media, mentre la codevianza non è altro che la somma dei prodotti degli scarti di due variabili dalle rispettive medie: Cod(X i, X j ) = Dev(X i ) = Cod(X i, X i ) = n (x hi x i )(x hj x j ) = nσ ij h=1 n h=1 (x hi x i ) 2 = nσ 2 i La matrice di codevianza si ottiene dalla matrice degli scarti: t ij = Cod(x i, x j ) T k,k = S k,n S n,k Con R, se X è una matrice di dati: > S <- sweep(x, 2, colmeans(x) > T <- t(s) %*% S Dato che la devianza è sempre non negativa (è un quadrato), la matrice T come anche le matrici di covarianza e di correlazione è quadrata, simmetrica, con elementi tutti non negativi sulla diagonale principale ed inoltre semidefinita positiva. Esempio 1.7. Usando ancora il dataframe H dei 25 modelli di home theatre: > S <- as.matrix(sweep(h[,1:3], 2, colmeans(h[,1:3]))) > T <- t(s) %*% S > T PREZZO POTENZA CASSE PREZZO POTENZA CASSE
13 varcov <- function(x, def = nrow(x), w = rep(1/nrow(x), nrow(x)), center = TRUE) { m <- cov.wt(x, wt = w, center = center) m <- m$cov m * (nrow(x)-1) / def } Figura 4. Funzione R per il calcolo della matrice di covarianza con il desiderato numero di gradi di libertà ed eventualmente su dati ponderati. 1.6 Matrice di covarianza La matrice di covarianza, Σ k,k, detta anche matrice di varianza-covarianza, si ottiene semplicemente dividendo per n, o per n 1, la matrice di codevianza; ad esempio, dividendo per n: Σ = 1 k,k n T = 1 k,k n S S k,n n,k Dividere per n equivale ad assegnare a tutte le unità statistiche un peso pari a 1 n e poi dividere per la somma dei pesi. Capita spesso, in realtà, di assegnare pesi diversi alle unità statistiche; in questi casi, la matrice di covarianza si ottiene con: Σ = S P S k,k k,n n,nn,k dove P n,n è una matrice diagonale contenente i pesi (la cui somma deve essere pari a 1). In R le funzioni var() e cov(), quando si passa loro una matrice o un dataframe, restituiscono entrambe la matrice di covarianza, dividendo per n 1 la matrice di devianza. Esiste inoltre una funzione cov.wt() che fornisce una matrice di covarianza ponderata, in cui si divide comunque per n 1; i pesi sono, per default, pari a 1/n. La funzione cov.wt() consente anche di ottenere una matrice di covarianza centrata; si può infatti usare il parametro center: a) se center = TRUE (default), i dati sono centrati sulla loro media (ponderata, se si passano anche i pesi); b) se center = FALSE, i dati sono centrati sullo 0; c) se center è un vettore (che deve essere di lunghezza uguale al numero delle colonne della matrice o del dataframe), i dati di ciascuna colonna sono centrati sul corrispondente valore del vettore. Esempio 1.8. Usando ancora i dati dei 25 modelli di home theatre (v. esempio 1.3), la matrice di covarianza tra prezzo e potenza in watt può essere ottenuta con: > n <- nrow(h) > varcov(h[,1:2], def = n-1) PREZZO POTENZA PREZZO POTENZA
14 se si desidera una matrice calcolata su n 1 gradi di libertà, 10 oppure, se si preferiscono n gradi di libertà, con: > varcov(h[,1:2]) PREZZO POTENZA PREZZO POTENZA Si verifica subito che i valori ottenuti in quest ultimo modo sono uguali a quelli ottenuti con def = n-1 (ri)moltiplicati per n 1 e divisi per n: 1.7 Matrice di correlazione /25 = La matrice di correlazione, R k,k, è una matrice quadrata simmetrica che ha sulla diagonale principale tutti 1 (coefficienti di correlazione delle colonne con se stesse) e altrove i coefficienti di correlazione tra la i-esima e la j-esima colonna della matrice dei dati. Si può ottenere in due modi: a) dividendo ciascun elemento a ij della matrice di covarianza per σ i σ j : R k,k = σ D k,k Σ k,k σ D k,k dove σ D è una matrice diagonale con i reciproci degli scarti quadratici medi delle colonne della matrice dei dati; b) calcolando la matrice di covarianza a partire dalla matrice degli scarti standardizzati: Quindi: R = 1 σ D S S σ D = 1 k,n k,k n k,k k,n n,k k,k n Z Z n,k S σ D 1 n S S X Σ σ D Σ σ D Z R 1 n Z Z In R si può ottenere la matrice di correlazione con la funzione cor(), ma anche con cov.wt(..., cor = TRUE). La funzione cov.wt() non restituisce infatti un unico valore, ma una lista contenente la matrice di covarianza $cov, i centri delle colonne $center, il numero delle unità statistiche $n.obs ed anche, se cor = TRUE, la matrice di correlazione $cor. Si può quindi pensare ad una semplice funzione cor2() (figura 5) che chiami cov.wt() per poter ponderare i dati, ma poi restituisca solo la matrice di correlazione. Esempio 1.9. Usando i dati relativi a 13 settori industriali dell esempio 1.5, si possono calcolare come segue le matrici di correlazione dei dati semplici oppure ponderati con gli addetti o con il valore aggiunto: Cfr. la tabella 2.1 dello Zani-Cerioli, pag I risultati possono essere confrontati con la tabella 2.3 dello Zani-Cerioli, pag. 44. Vi sono alcune differenze perché i dati della tabella 1.5 del testo sono arrotondati. 14
15 cor2 <- function(x, w = rep(1/nrow(x), nrow(x)), center = TRUE) { m <- cov.wt(x, wt = w, center = center, cor = TRUE) m <- m$cor m } Figura 5. Funzione R per il calcolo della matrice di correlazione di dati eventualmente ponderati. > cor2(x[,4:8]) vafatt vaad coslav retrib invest vafatt vaad coslav retrib invest > cor2(x[,4:8], w = X$addetti) vafatt vaad coslav retrib invest vafatt vaad coslav retrib invest > cor2(x[,4:8], w = X$valoreagg) vafatt vaad coslav retrib invest vafatt vaad coslav retrib invest Varianza totale La varianza totale, Var T, non è altro che la somma delle varianze delle colonne della matrice dei dati, quindi la traccia della matrice di covarianza: Da notare che: Var T = tr(σ) a) ha senso solo se le colonne interessate sono espresse nella stessa unità di misura; b) tiene conto solo della variabilità univariata. In R esiste una funzione trace(), che però ha tutt altro scopo (v. la relativa pagina della guida). Calcolare la traccia di una matrice X è sostanzialmente semplice, in quanto basta sommare gli elementi che hanno l indice di riga, row(x), e quello di colonna, col(x), uguali: > sum(x[row(x)==col(x)] 15
16 totvar <- function(x, def = nrow(x), w = rep(1/nrow(x), nrow(x)), center = TRUE) { if (sum(t(x) == x) == length(x)) # simmetrica t <- sum(x[row(x)==col(x)]) else { m <- varcov(x, def = def, w = w, center = center) t <- sum(m[row(m)==col(m)]) } t } Figura 6. Funzione R per il calcolo della varianza totale. Si può comunque pensare ad una funzione totvar() (figura 6) che calcoli la traccia di una matrice di covarianza sia a partire da questa, se disponibile, sia a partire da una matrice di dati o da un dataframe. Per distinguere tra i due casi, la funzione assume che la matrice passata sia una matrice di covarianza se risulta simmetrica. Esempio Nell esempio 1.8 avevamo calcolato la matrice di covarianza tra prezzo e potenza dei 25 modelli di home theatre prima con n 1 poi con n gradi di libertà. Per calcolare le rispettive varianze totali, usando prima la matrice di covarianza, poi il dataframe: > M <- varcov(h[,1:2], def = 24) > totvar(m) [1] > totvar(h[,1:2]) [1] Varianza generalizzata di Wilks La varianza generalizzata di Wilks è una misura di variabilità multidimensionale che tiene conto di tutti gli elementi della matrice di convarianza, in quanto ne è il determinante: Var G = Σ In valore assoluto la varianza generalizzata varia da 0 (almeno una variabile è perfettamente correlata con un altra) ad un massimo pari al prodotto delle varianze delle k colonne. Si dimostra, inoltre, che il rapporto tra la varianza generalizzata ed il suo massimo è uguale al determinante della matrice di correlazione. Si può quindi definire una varianza generalizzata relativa: Da notare che: V R = Σ kj=1 σ 2 j = R a) il determinante tende a diminuire all aumentare di k, quindi si possono confrontare le varianze generalizzate (assolute o relative) di diverse matrici di dati solo se queste presentano lo stesso numero di caratteri; 16
17 b) la matrice di correlazione contiene solo le correlazioni a coppie; pertanto, non consente di individuare né di escludere relazioni lineari del tipo X 1 = ax 2 + bx 3. In R il determinante di una matrice si calcola col comando det(), quindi: > M <- varcov(h[,1:2], def = 24) > det(m) # varianza generalizzata [1] > R <- cor2(h[,1:2]) > det(r) # varianza generalizzata relativa [1] Analisi delle componenti principali L analisi delle componenti principali (ACP; in inglese PCA, Principal Components Analysis) consente di sostituire ad una matrice di dati X n,k, contenente k variabili quantitative, una nuova matrice Y n,p contenente p k variabili tra loro incorrelate (ortogonali) ed elencate in ordine decrescente di variabilità. 2.1 Il punto di vista geometrico Obiettivo dell ACP è l individuazione di un sottospazio su cui sia possibile proiettare lo spazio delle osservazioni in modo da mantenerne quanto più possibile la variabilità. Per intendere cosa ciò vuol dire, si può immaginare di disporre dei valori di 2 variabili quantitative osservati su n unità statistiche: se non c è correlazione tra le due variabili, il relativo scatter plot appare come una nuvola di punti racchiusa in una circonferenza; se invece c è correlazione, la nuvola di punti appare racchiusa in un ellisse. In quest ultimo caso, gli assi dell ellisse passano entrambi per il punto le cui coordinate sono le medie delle due variabili. Soprattutto, l asse maggiore ha la direzione dell autovettore relativo all autovalore maggiore della matrice di covarianza, l asse minore quella dell altro autovettore. Le lunghezze degli assi, inoltre, sono proporzionali alle radici quadrate dei relativi autovalori. Esempio 2.1. Il file T3_7_SONS.DAT 12 contiene, tra l altro, le misure della lunghezza (V1) e della larghezza (V2) della testa del primo figlio adulto di 25 famiglie. Caricati i dati in un dataframe: > dat <- read.table("t3_7_sons.dat") > dat <- dat[,1:2] # per considerare solo V1 e V2 si può apprezzare visivamente la correlazione tra le due variabili con il comando plot(). Per semplificare la rappresentazione grafica conviene tracciare gli scarti delle variabili dalle rispettive medie: > plot(dat$v1-mean(dat$v1), dat$v2-mean(dat$v2), + xlim=range(-30,30), ylim=range(-30,30)) 12 Scaricabile da 17
18 Per tracciare l ellisse si può usare la funzione ellipse(), contenuta nella omonima libreria, che richiede come parametro una matrice di covarianza (o di correlazione): > library(ellipse) > S <- cov(dat) > lines(ellipse(s)) Gli autovalori (eigenvalues in inglese) e gli autovalori (eigenvectors) di una matrice si trovano con la funzione eigen(): > eig <- eigen(s) > eig $values [1] $vectors [,1] [,2] [1,] [2,] Aggiungendo gli autovettori al grafico (con lunghezze proporzionali alle radici quadrate dei relativi autovalori): lambda <- eig$values a1 <- eig$vectors[,1] a2 <- eig$vectors[,2] arrows(0, 0, sqrt(lambda[1])*a1[1], sqrt(lambda[1])*a1[2], length=0.1) arrows(0, 0, sqrt(lambda[2])*a2[1], sqrt(lambda[2])*a2[2], length=0.1) si ottiene il grafico riprodotto nella figura 7. Nel caso di tre variabili si ottiene un ellissoide. Se la nuvola di punti tridimensionale riempie l ellissoide, risulta difficile prescindere da uno dei suoi tre assi; se invece la nuvola è sì racchiusa nell ellissoide, ma ha la forma di un osso di seppia, si possono considerare solo i due assi lungo i quali si estende maggiormente ottenendo comunque una buona approssimazione della variabilità osservata; si può cioè approssimare l ellissoide considerando l ellisse proiettata sul piano individuato dai suoi due assi maggiori. Analogamente nel caso di più variabili. L analisi delle componenti principali, quindi, consiste nel tentativo di proiettare la nuvola di punti dello spazio originario in uno spazio di dimensione minore, individuato dagli assi lungo i quali l (iper)ellissoide si estende maggiormente. Tali assi, come si è visto nel caso di due variabili, hanno la direzione degli autovettori della matrice di covarianza e lunghezza proporzionale alla radice quadrata dei relativi autovalori Segnale e rumore Si tratta di capire perché, nel caso di due dimensioni, l asse maggiore dell ellisse ha la direzione dell autovettore relativo all autovalore maggiore della matrice di covarianza e perché i due assi hanno lunghezza proporzionale alla radice quadrata degli autovalori. 18
19 dat$v2 mean(dat$v2) dat$v1 mean(dat$v1) Figura 7. Una nuvola di punti a forma di ellisse i cui assi sono paralleli agli autovettori della matrice di covarianza e di lunghezza proporzionale alla radice quadrata dei relativi autovalori. Si può pensare alla nuvola di punti come ad un insieme di osservazioni che ci si aspetta lungo l asse delle ascisse V1, il segnale, accompagnate da un rumore rappresentato dalle ordinate dei punti, V2. La variabilità lungo l asse delle ascisse è la variabilità del segnale, cioè del fenomeno che si intende rilevare, e può essere misurata dalla varianza σv 2 1 ; la variabilità lungo l asse delle ordinate è invece quella del rumore, σ2 V 2. Il rumore è tanto più fastidioso quanto più è correlato, positivamente o negativamente, al segnale, cioè quanto maggiore in valore assoluto è la covarianza tra segnale e rumore, σ V 1,V 2. Per isolare quanto più possibile il segnale dal rumore, quindi, si tratta di passare dallo spazio generato dai vettori (1, 0) e (0, 1) elementi della base canonica dello spazio rappresentato dal piano cartesiano su cui è tracciato il grafico della figura 7 ad uno spazio generato da due vettori che rappresentino uno il segnale, l altro il rumore, e abbiano covarianza nulla. Si tratta quindi di passare dalla matrice di covarianza di V1 e V2, Σ, ad una matrice di covarianza tra Y1 (segnale) e Y2 (rumore) che abbia nulli tutti gli elementi non siti sulla diagonale principale: [ ] [ ] σ 2 V 1 σ V 1,V 2 σ 2 σ V 2,V 1 σv 2 Y σy 2 2 L algebra lineare insegna che ciò significa diagonalizzare Σ, quindi trovare una matrice Λ simile a Σ che sia una matrice diagonale avente gli autovalori di Σ sulla diagonale principale. In questo modo: a) mentre Σ rappresenta le covarianze tra le rilevazioni effettuate nello spazio generato dai 19
20 vettori (1, 0) e (0, 1), la matrice diagonale Λ rappresenta le covarianze tra le rilevazioni come risulterebbero se effettuate nello spazio generato dagli autovettori di Σ; b) dato che Σ è una matrice simmetrica, i suoi due autovalori sono reali e i due autovettori sono tra loro ortogonali, quindi la loro covarianza è nulla 2.2 Variabili omogenee L ACP opera sempre su matrici centrate. Se le variabili originarie sotto tutte espresse (o esprimibili) nella stessa unità di misura, si usa la matrice degli scarti S n,k La prima componente La prima componente Y 1 viene espressa come combinazione lineare delle k variabili con coefficienti i k elementi di un vettore a 1, quindi come prodotto tra la matrice dei dati e tale vettore: Y 1 = S a 1 n,1 n,k k,1 con l obiettivo di massimizzare la varianza σy 2 1 della componente Y 1, sottoposto al vincolo di normalizzazione a 1 = a 1 a 1 = k i=1 a 2 i1 = 1. Il problema di massimizzazione si risolve impiegando un moltiplicatore di Lagrange λ. Poiché: 13 k k σy 2 1 = Var(Sa 1 ) = a i1 a j1 σ ij = a 1Σa 1 si ha (cfr. Appendice 3.1): i=1 j=1 L = σ 2 Y 1 + λ(1 a 1a 1 ) = a 1Σa 1 + λ(1 a 1a 1 ) L a 1 = 2Σa 1 2λa 1 = 0 (Σ λi k )a 1 = 0 dove I k è la matrice identità di ordine k. Ne segue che trovare i λ che soddisfano la condizione di massimizzazione vincolata equivale a trovare gli autovalori della matrice di covarianza Σ k,k. Essendo la matrice di covarianza simmetrica, con traccia non negativa e semidefinita positiva, tutti gli autovalori sono reali e non negativi L i-esimo elemento di Y 1 è una combinazione lineare degli i-esimi elementi delle colonne di S con coefficienti gli elementi di a 1, quindi il prodotto della i-esima riga di S per a 1: y i1 = a 11s i1 + a 21s i2 + + a k1 s ik = S (i) 1,k Tenendo conto del fatto che la media di ciascuna colonna di Y è 0, in quanto combinazione lineare delle colonne di S che hanno a loro volta media nulla, la varianza di Y 1 è: σ 2 Y 1 = 1 n n yi1 2 = 1 n i=1 n i=1 a 1 1,k S (i) k,1 S (i) 1,k a 1 = 1 k,1 n a 1 S 1,k k,n a 1 k,1 S a 1 = a 1 Σ a 1 n,k k,1 k,k k,1 14 Più precisamente, gli autovalori sono reali perché Σ è una matrice simmetrica; inoltre, per la definizione di autovalore e autovettore, se λ è un autovalore di Σ e v è un relativo autovettore, si 20
21 Inoltre, premoltiplicando Σa 1 λa 1 = 0 per a 1 si ottiene: da cui, essendo a 1 a 1: a 1Σa 1 λa 1a 1 = 0 σ 2 Y 1 λ = 0 λ = σ 2 Y 1 Poiché l obiettivo è la massimizzazione della varianza della prima componente, si sceglie l autovalore massimo λ 1 e a 1 è il relativo autovettore. La prima componente, Y 1, è quindi: Le componenti successive Y 1 = Sa 1 La seconda componente deve ancora massimizzare la varianza con vincolo a 2 a 2 = 1, ma deve essere anche ortogonale alla prima; si aggiunge quindi il vincolo a 1 a 2 = 0. Quindi: L = a 2Σa 2 + λ 2 (1 a 2a 2 ) + λ 3 a 1a 2 L a 2 = 2Σa 2 2λa 2 + λ 3 a 1 = 0 2(Σ λ 2 I k )a 2 + λ 3 a 1 = 0 Premoltiplicando per a 1 e ricordando che a 1 a 2 = 0 e a 1 a 1 = 1: 2a 1Σa 2 2λa 1a 2 + λ 3 a 1a 1 = 0 λ 3 = 2a 1Σa 2 Nello sviluppo della prima componente si era però visto che 2(Σ λ 1 I k )a 1 = 0; premoltiplicando tale uguaglianza per a 2 : 2a 2Σa 1 2λ 1 a 2a 1 = 0 2a 2Σa 1 = 0 Poiché 2a 1 Σa 2 = 2a 2 Σa 1 (sono entrambi scalari ed uno scalare è uguale al suo trasposto), ne segue λ 3 = 0. Rimane: 2(Σ λ 2 I k )a 2 = 0 Analogamente a quanto operato per la prima componente, si prende il secondo autovalore di Σ, λ 2, che risulta uguale alla varianza di: dove a 2 è l autovettore relativo a λ 2. ha: Y 2 = Sa 2 Σv = λv Poiché Σ = 1 n S S, ponendo M = S/ n si ha M M = 1 n S S e quindi: Premoltiplicando per v : M Mv = λv v M Mv = v λv Mv 2 = λ v 2 λ = Mv 2 v
22 Si procede ugualmente per le componenti successive, ottendo infine una matrice Y = S A n,k n,k k,k dove A, detta matrice di pesi, è una matrice che ha per colonne gli autovettori di norma 1 di Σ, tra loro ortogonali. 15 Le colonne di Y hanno inoltre varianze decrescenti, rispettivamente uguali agli autovalori di Σ. Esempio 2.2. Riprendendo i dati dell esempio 1.2, si può procedere come segue: a) si calcolano la matrice degli scarti dalla media e la matrice di covarianza: > S <- sweep(rpa, 2, colmeans(rpa)) > C <- varcov(s) b) si calcolano gli autovalori e gli autovettori usando la funzione eigen(): 16 > eig <- eigen(c) > lambda <- eig$values > lambda [1] e e e-07 si nota che l ultimo autovalore è molto piccolo; in questi casi, conviene considerarlo pari a zero, ed escluderlo dai calcoli successivi, sia perché è probabile che sia effettivamente zero e non risulti tale solo per problemi di arrotondamento, 17 sia perché indica che la varianza dell ultima componente principale è comunque molto piccola e non può contribuire che in misura trascurabile a spiegare la varianza totale dei dati; quindi, ad esempio: > lambda <- lambda * (abs(lambda) > ) > lambda [1] si esclude, pertanto, l ultima colonna della matrice A (l autovettore di autovalore 0) e si calcolano solo le prime due componenti principali: 15 Il teorema spettrale dell algebra lineare assicura, tra l altro, che gli autovettori di una matrice simmetrica sono tra loro ortogonali. Infatti, se v i e v j sono due autovettori di Σ e λ i e λ j sono i relativi, diversi, autovalori, premoltiplicando Σv i = λ iv i per v j si ha: v jσv i = λ iv jv i Ma v jσ è uguale a (Σ v j), che è a sua volta uguale a (Σv j) = λ jv j in quanto Σ è una matrice simmetrica; quindi: λ jv jv i = λ iv jv i (λ j λ i)v jv i = 0 v jv i = 0 16 Si può usare anche la funzione svd() che opera una scomposizione ai valori singolari di S e produce risultati numericamente più accurati; cfr. Appendice I computer lavorano con un numero massimo di cifre decimali e, pertanto, sono costretti ad arrotondare quando operano su numeri irrazioniali oppure con decimali periodici o con un alto numero di cifre decimali. In R il numero reale più piccolo in valore assoluto che può essere gestito è assegnato alla variabile.machine$double.eps. 22
23 > A <- eig$vectors[,1:2] > A [,1] [,2] [1,] [2,] [3,] > Rpa.Y <- S %*% A > Rpa.Y [,1] [,2] [1,] [2,] [3,] Variabili eterogenee Se le variabili della matrice dei dati non sono espresse, né eprimibili, nella stessa unità di misura, si deve trasformare X in una matrice omogenea. Ciò può essere fatto in vari modi, ad esempio dividendo ciascuna colonna per la sua media o mediana, ma la soluzione adottata più spesso consiste nell operare sulla matrice degli scarti standardizzati Z. La costruzione della matrice Y avviene come nel caso di matrice X omogenea, tuttavia, poiché la matrice di covarianza di una matrice degli scarti standardizzati è uguale alla matrice di correlazione R, si procede direttamente da questa trovandone autovalori ed autovettori e poi eseguendo il prodotto Y = ZA. Esempio 2.3. Lo Zani-Cerioli propone nella tebella 6.2, a pag. 231, i valori osservati, su 15 tipi di gelati, di 6 variabili eterogenee. 18 Una volta caricata la tabella in forma di matrice: > X <- as.matrix(read.csv("tab0602.csv", row.names=1)) > X kcal proteine carboidr grassi fibre peso CORNETTO CALIPPO si può procedere come segue: a) si calcolano le matrici degli scarti standardizzati Z e la matrice di correlazione R: 19 > Z <- sweep(x, 2, colmeans(x)) %*% diag(1/sd2(x)) > R <- cor(x) # anche R <- cor2(x) produce lo stesso risultato b) si calcolano autovalori ed autovettori come nell esempio precedente: > eig <- eigen(r) > lambda <- eig$values > round(lambda, 5) 18 La tabella si può scaricare da csv. 19 Cfr. Zani-Cerioli, tabella 6.3 a pag. 232, seconda parte, per la matrice di correlazione. 23
24 [1] > A <- eig$vectors > round(a, 3) [,1] [,2] [,3] [,4] [,5] [,6] [1,] [2,] [3,] [4,] [5,] [6,] c) si calcolano le componenti, quindi la matrice Y, moltiplicando la matrice degli scarti standardizzati per la matrice dei pesi: > X.Y <- Z %*% A I risultati possono essere confrontati con quelli dello Zani-Cerioli: gli autovalori sono nella tabella 6.5, a pag. 233 (seconda colonna), mentre i primi due autovettori sono a pag Si può notare che gli autovettori sono uguali nei valori assoluti ma diversi nei segni. Un autovettore può avere infatti norma 1 anche cambiando i segni dei suoi elementi e, in effetti, si possono scegliere i segni che risultano più idonei ad esprimere le relazioni tra le variabili (le colonne della matrice dei dati) e le componenti (le colonne della matrice Y). 2.4 Scelta e valutazione delle componenti principali La matrice Factor Pattern Ciascuna componente principale (ciascuna colonna della matrice Y) è una combinazione lineare delle variabili osservate. La varianza della componente Y i è λ i, quindi la varianza totale di Y è uguale alla somma degli autovalori; questa è a sua volta uguale alla traccia della matrice di covarianza, 20 quindi alla varianza totale di X (a sua volta uguale a quella della matrice degli scarti S, che è solo una traslazione della X): k k Var T (X) = σj 2 = tr(σ) = λ j = Var T (Y) n,k k,k j=1 j=1 Nel caso di variabili standardizzate (matrice Z), la somma di autovalori è uguale alla traccia della matrice di correlazione, quindi, avendo questa tutti 1 sulla diagonale principale, al numero degli autovalori: k k Var T ( Z ) = σj 2 = tr(r) = λ j = k n,k k,k j=1 j=1 La componente j-esima, Y j, presenta una quota della varianza totale data dal rapporto tra λ j e la varianza totale: kh=1 λ j. Scegliendo i primi p autovalori, quindi le prime λ h 20 Indicando con Λ la matrice diagonale avente come elementi gli autovalori, si ha Σ = AΛA 1 ; Σ e Λ sono quindi matrici simili e matrici simili hanno la stessa traccia. 24
25 p componenti Y j, si ottiene la quota della varianza totale spiegata da esse, p j=1 λ j kj=1 λ j, p j=1 rapporto che diventa λ j nel caso di variabili standardizzate. k In linea di massima, si sceglie quindi p in modo che la varianza spiegata sia una quota della varianza totale ritenuta sufficiente, ma si deve anche tenere conto dei contributi di ciascuna variabile alle diverse componenti. Tali contributi sono espressi dai pesi a ij. La componente Y j è una combinazione lineare delle colonne di S (o di Z), a ciascuna delle quali viene attribuito un peso (il coefficiente della combinazione lineare) uguale al corrispondente elemento di a j. In prima approssimazione, se a ij è grande la i-esima variabile contribuisce molto alla j-esima componente, quindi questa spiega una buona parte della varianza totale attribuibile a quella variabile, viceversa se a ij è piccolo. Le colonne di Y hanno però varianze diverse, quindi si calcolano le correlazioni tra le componenti e le variabili. A tale scopo si costruisce una matrice detta Factor Pattern, 21 in cui l elemento di riga i e colonna j è il coefficiente di correlazione tra la i-esima colonna di X (la i-esima variabile) e la j-esima colonna di Y (la j-esima componente principale). Nel caso in cui le variabili della matrice dei dati siano omogenee (espresse nella stessa unità di misura), l analisi può partire dalla matrice centrata S. Gli scarti degli elementi di X dalle rispettive medie di colonna non sono altro che gli elementi di S, le cui colonne hanno media nulla; inoltre, anche Y è una matrice centrata le cui colonne hanno media nulla. 22 I coefficienti di correlazioni sono quindi: r Xi,Y j = 1 n nr=1 s ir y jr σ Si λj = S i Y j nσ Si λj = S i Sa j nσ Si λj Si può notare che, poiché la matrice degli scarti opera una semplice traslazione delle variabili senza influire sulla loro variabilità, σ Si = σ Xi. Il prodotto S S non è altro che la matrice di codevianza (sez. 1.5), a sua volta uguale alla matrice di covarianza moltiplicata per n (sez. 1.6); il prodotto S is non è quindi altro che la i-esima riga della matrice di covarianza moltiplicata per n: ] S is = n [σ i1... σi 2... σ ik = nσ (i) quindi: S isa j = nσ (i) a j Poiché (Σ λ j I k )a j = 0 (sez ), ovvero Σa j = λ j a j, si ha Σ (i) a j = λ j a ij, quindi: r Xi,Y j = nλ ja ij = a ij nσ Si λj λj σ Si = a ij λj σ Xi Se si parte invece da una matrice standardizzata (Z), le varianze delle variabili sono tutte unitarie; i coefficienti di correlazione diventano quindi: r Xi,Y j = a ij λ j 21 Lo Zani-Cerioli la chiama matrice di componenti; v.tabella 6.6 a pag Ogni colonna di Y ha media nulla perché è una combinazione lineare di colonne con medie nulle, quelle di S. 25
26 Esempio 2.4. La matrice Factor Pactern potrebbe essere costruita usando l espressione analitica dei coefficienti di correlazione, quindi, indicando con X la matrice dei dati, con A qella dei pesi e con λ gli autovalori, con un istruzione del tipo: diag(1/sd2(x)) %*% A %*% diag(sqrt(lambda)) Tuttavia, se alcuni autovalori fossero stati esclusi perché nulli, come nell esempio 2.2, bisognerebbe tenerne conto, ad esempio con: > diag(1/sd2(rpa)) %*% cbind(a, c(0,0,0)) %*% diag(c(sqrt(lambda), 0)) e si otterrebbe comunque una matrice con l ultima colonna tutta nulla (perché è nullo il terzo autovalore). Conviene quindi usare direttamente la funzione cor(): > cor(rpa, Rpa.Y) [,1] [,2] [1,] [2,] [3,] Con i dati dell esempio 2.3: 23 > round(cor(x, X.Y), 3) [,1] [,2] [,3] [,4] [,5] [,6] kcal proteine carboidr grassi fibre peso Scelta delle componenti Una matrice Factor Pattern presenta le seguenti proprietà: 1) la somma dei quadrati degli elementi di una qualsiasi riga è pari ad 1; la somma dei quadrati della i-esima riga limitata alle prime p colonne esprime la quota della variabilità della i-esima variabile spiegata dalle prime p componenti principali; 2) la somma dei quadrati degli elementi della j-esima colonna è uguale a: λ j, se si era partiti da una matrice standardizzata: λ j k i=1 k k rx 2 i,y j = λ j a 2 ij = λ j a ja j = λ j i=1 i=1 a 2 ij σ 2 X i, se si era partiti da una matrice centrata. 23 I risultati possono essere confrontati con la tabella 6.6 dello Zani-Cerioli, pag. 234, che riporta solo le prime due colonne della matrice. Quanto alle differenze nei segni, cfr. pag
27 Somme dei quadrati di riga. La prima proprietà va interpretata considerando che le componenti principali non sono altro che combinazioni lineari, con i coefficienti della matrice dei pesi A, della matrice S (o Z), quindi vi è correlazione perfetta tra ciascuna variabile e tutte le componenti principali. 24 Se ci si limita alle prime p componenti principali, la somma dei quadrati dei primi p elementi di ciascuna riga dà quindi la misura in cui quelle p componenti spiegano la variabilità delle diverse variabili (aspetto detto comunalità dallo Zani-Cerioli). Esempio 2.5. Usando la matrice Factor Pattern ottenuta dai dati dei gelati (l ultima dell esempio precedente) e limitandosi alle prime due componenti principali: > FP <- cor(x, X.Y) > round(rowsums(fp[,1:2]^2), 3) kcal proteine carboidr grassi fibre peso Si ottengono così le quote di varianza di ciascuna variabile (standardizzata) spiegate dalle prime due componenti principali. 25 Somme dei quadrati di colonna. La seconda proprietà concerne, invece, la quota della varianza totale spiegata dalle prime p componenti principali. Nel caso di dati standardizzati la somma dei quadrati di ciascuna colonna è uguale al corrispondente autovalore e questo è uguale alla quota della varianza totale spiegata dalla relativa componenente principale. Esempio 2.6. Nel caso dei dati relativi ai gelati: > FP <- cor(x, X.Y) > rowsums(fp^2) [1] > round(colsums(fp^2), 3) [1] Per avere le quote spiegate dalla sola prima componente principale, poi dalle prime due e così via fino a tutte e sei: > round(cumsum(colsums(fp^2)/6*100), 2) [1] Nel caso di dati centrati, ma non standardizzati, la somma dei quadrati di colonna è invece meno indicativa. Criteri empirici e grafici. Sono in uso alcuni criteri empirici per la scelta del numero delle componenti principali e, quindi, di una misura accettabile della varianza spiegata: 24 Ad esempio, effettuando una regressione lineare multipla tra la matrice Rpa e la sua matrice delle componenti principali con summary(lm(rpa ~ Y)) si ottengono coefficienti R 2 tutti pari a 1 ed errori senza gradi di libertà (gli scarti tra Rpa e βy sono tutti nulli). 25 Cfr. Zani-Cerioli, tabella 6.4, pag
28 Screeplot Autovalore Numero componente Figura 8. Esempio di screeplot (dati dell esempio 2.3). a) il rapporto tra la varianza spiegata dalle p componenti scelte e la varianza totale dovrebbe essere pari almeno a 0.95 k 100; 26 b) si scelgono le componenti i cui relativi autovalori siano maggiori della media degli autovalori (maggiori di 1 nel caso di dati standardizzati); c) si traccia un grafico detto screeplot, che congiunge con una spezzata i punti (numero d ordine della componente, valore del relativo autovalore), e si scelgono le componenti i cui relativi autovalori siano alla sinistra del punto in cui la pendenza della spezzata diminuisce più rapidamente Valutazione delle variabili Per valutazione delle variabili si intende la valutazione di quanta parte della variabilità di una variabile è spiegata da alcune componenti principali. Se le componenti scelte sono due, risulta utile un grafico detto cerchio delle correlazioni, 27 che consente di apprezzare visivamente quanto ricercato. Il cerchio delle correlazioni viene disegnato tracciando dei punti/vettori in un piano cartesiano i cui due assi siano intestati alle due componenti principali scelte: l asse delle ascisse alla prima, l asse delle ordinate alla seconda. Per costruire quello della figura 9 si sono cambiati i segni della matrice Factor Pattern per renderli uguali a quelli presentati nello Zani-Cerioli (v. sopra pag. 24). Le prime due colonne della matrice sono: > FP[,1:2] [,1] [,2] kcal proteine carboidr Si tratta di un criterio in realtà poco utile, in quanto la misura accettabile varia al variare di k; ad esempio, è 77.38% se k = 5, scende al 35.85% se k = Lo Zani-Cerioli lo chiama grafico delle componenti; v. pag
29 Cerchio delle correlazioni Componente peso carboidr kcal fibre proteine grassi Componente 1 Figura 9. Esempio di cerchio delle correlazioni (dati dell esempio 2.3). grassi fibre peso Il punto/vettore kcal del grafico ha come ascissa r kcal,y1 = 0.989, che è la correlazione tra la variabile kcal e la prima componente; ha come ordinata r kcal,y2 = 0.112, la correlazione tra la variabile e la seconda componente. La lunghezza del vettore, rkcal,y 2 1, rkcal,y 2 2 = 0.996, in quanto prossima a 1, indica che la variabilità di kcal è ben spiegata dalle due prime componenti. Il coseno dell angolo tra il punto/vettore kcal e l asse intitolato alla prima componente è dato dall ascissa del punto ed è tanto maggiore quanto più la variabile kcal è correlata (positivamente o negativamente) alla componente (il coseno è nullo quando la correlazione è nulla). Il seno dell angolo è invece dato dall ordinata del punto ed è tanto maggiore quanto minore è la correlazione con la seconda componente (vale 1 quando la correlazione è nulla). In sostanza, il punto/vettore kcal risulta vicino all asse Y 1 ma lontano dall asse Y 2 in quanto è molto correlato a Y 1, nettamente meno a Y 2 ; il punto/vettore peso è invece correlato in misura più omogenea alle due componenti: > FP["kcal",1:2] [,1] [,2] > FP["peso",1:2] [,1] [,2]
30 Analoghe considerazioni conducono a valutare che se l angolo tra due punti/vettori è piccolo, quindi se le due corrispondenti variabili risultano correlate in modo simile alle due componenti, sono anche ben correlate tra di loro; è il caso, ad esempio, delle variabili fibre e proteine: > FP["fibre",1:2] [,1] [,2] > FP["proteine",1:2] [,1] [,2] > cor(x[,"fibre"], X[,"proteine"]) [1] Invece, peso e grassi sono tra loro molto meno correlate: > cor(x[,"peso"], X[,"grassi"]) [1] Valutazione delle unità statistiche Per valutazione delle unità statistiche si intende la valutazione di quanto le diverse unità risultino vicine ai valori medi per gli aspetti descritti dalle singole componenti principali (ovvero rispetto alle variabili con le quali le singole componenti risultano meglio correlate). Se le componenti scelte sono le prime due, si utilizza un grafico i cui assi sono ancora intestati alle due componenti e i punti/vettori relativi alle diverse unità statistiche vengono tracciati usando, come ascissa e ordinata, i corrispondenti elementi delle prime due colonne della matrice Y (v. figura 10). Ad esempio, il punto/vettore MAGNIFICO ha coordinate (4.517, 1.001): 28 > X.Y["MAGNIFICO",1:2] [1] Si osserva in primo luogo la distanza dei punti dall origine: punti vicini indicano unità con valori delle variabili vicini alle rispettive medie, punti lontani indicano possibili unità anomale. Ciò viene confermato dalla matrice degli scarti; infatti, esaminando la somma degli scarti assoluti dei valori dalle medie: > S <- sweep(x, 2, colmeans(x)) > sort(rowsums(abs(s))) CROCCANTE CARTE D OR PASSION COPPAMUSIC SOLERO CREMINO VIENNETTA LIUK CORNETTO CUCCIOLONE CALIPPO LEMONISSIMO FIORDIFRAGOLA MAGNUM MAGNIFICO Anche in questo si sono cambiati i segni per renderli coerenti con quelli presentati dallo Zani-Cerioli. 30
31 Unita statistiche Componente CALIPPO LIUK SOLERO LEMONISSIMO CARTE D OR FIORDIFRAGOLA CORNETTO PASSION COPPAMUSIC VIENNETTA CREMINO CROCCANTE CUCCIOLONE MAGNIFICO MAGNUM Componente 1 Figura 10. Esempio di grafico che rappresenta le unità statistiche (dati dell esempio 2.3). si nota che CROCCANTE, CARTE D OR e PASSION presentano i valori minori e risultano vicini all origine, mentre MAGNIFICO presenta il valore maggiore e risulta il più lontano dall origine, seguito da MAGNUM. Analogamente, punti vicini lungo un asse mostrano valori vicini alla media per le variabili meglio correlate con la relativa componente, e viceversa. Ad esempio, MAGNUM è lontana dall origine lungo l asse delle ascisse (prima componente principale), più vicina longo l asse delle ordinate (seconda componente). La matrice Factor Pattern (la seconda dell esempio 2.4) mostra che la prima componente è meglio correlata con la variabile kcal, la seconda con peso e, in effetti, MAGNUM ha valori lontani dalla media per kcal, vicini alla media per peso: > round(colmeans(x), 2) kcal proteine carboidr grassi fibre peso > round(x["magnum",], 2) kcal proteine carboidr grassi fibre peso Valutazione congiunta Altre conclusioni si possono trarre da una sovrapposizione dei due grafici in un nuovo grafico detto biplot (figura 11). Dato che i due grafici erano stati tracciati con diverse scale di misura, per poterli sovrapporre si deve operare una trasformazione; ad esempio, si può lasciare così com è la matrice Factor Pattern (usata nel cerchio delle correlazioni e costituita da coefficienti di correlazione tutti compresi tra 1 e 1) e usare una matrice delle componenti principali standardizzate per le unità statistiche (v. Appendice 3.2, pag. 46). Un biplot consente sia di valutare separatamente le variabili e le unità statistiche, sia di valutarle congiuntamente: un unità lontana dall origine nella direzione del vettore 31
32 Biplot CALIPPO Componente LEMONISSIMO FIORDIFRAGOLA LIUK SOLERO VIENNETTA CARTE D OR COPPAMUSIC CREMINO CORNETTO CROCCANTE PASSION peso CUCCIOLONE carboidr kcal fibre proteine grassi MAGNIFICO MAGNUM Componente 1 Figura 11. Esempio di biplot. corrispondente ad una variabile segnala che l unità presenta un valore di questa variabile notevolmente maggiore della media; ad esempio, le unità CUCCIOLONE e MAGNIFICO si allontanano dall origine nella direzione del vettore della variabile carboidr e si tratta proprio delle unità che presentano i valori maggiori di carboidr: > sort(x[,"carboidr"], decreasing = TRUE)[1:2] MAGNIFICO CUCCIOLONE Indici di contribuzione relativa L individuazione di componenti principali in numero p minore del numero k delle variabili si traduce nella proiezione delle unità statistiche da uno spazio k-dimensionale (ciascuna, con i suoi k-valori delle variabili, ne è un punto) in uno spazio p-dimensionale. L informazione che così si perde può essere misurata, per ciascuna unità, considerando il rapporto tra la lunghezza del vettore nello spazio proiettato e quella del vettore nello spazio originario. Ad esempio, considerando la figura 12, si vede che la lunghezza del vettore OP, dove P è la proiezione dell unità A sullo spazio che ha Y 1 come unica dimensione, non è troppo 32
33 X 2 X A2 A (X A1, X A2 ) Y 1 B P (Y A1 ) α O X A1 X 1 Figura 12. Proiezione di due unità statistiche da uno spazio a due dimensioni in uno spazio ad una dimensione. inferiore a quella del vettore OA (X A1, X A2 ). L analoga proiezione dell unità B è invece nettamente peggiore, in quanto si riduce all origine. La lunghezza di OP è YA1, quella di OA è XA1 2 + X2 A2, il loro rapporto è il coseno dell angolo α. Il quadrato, che si indica con ρ A, detto contribuzione relativa delle p componenti alla rappresentazione dell unità A, è un indicatore della qualità di tale rappresentazione. In generale, per la i-esima unità statistica: ρ i = p j=1 Y 2 ij ki=1 X 2 ij = lunghezza del vettore nello spazio proiettato lunghezza del vettore nello spazio originario Per calcolare le contribuzioni relative con R occorrono la matrice dei dati centrata o standardizzata, secondo quella che si è usata per calcolare le componenti, e la matrice delle componenti. Ad esempio, usando la matrice dei gelati: > Contrib <- t(apply(diag(1/rowsums(z^2)) %*% Y^2, 1, cumsum)) > > rownames(contrib) <- rownames(x) > k <- ncol(x) > colnames(contrib) <- c("1", paste(rep("1:", k-1), 2:k, sep="")) La prima istruzione premoltiplica la matrice con i quadrati degli elementi delle componenti per una matrice diagonale avente come elementi i reciproci delle somme dei quadrati delle righe della matrice dei dati standardizzati; ciò equivale a dividere ciascuna y 2 ij per la somma dei quadrati degli elementi della i-esima riga di Z. La funzione apply() consente di calcolare le somme cumulate di riga; dal momento che restituisce una matrice trasposta, si usa la funzione t() per avere le righe intestate alle variabili e le colonne alle somme progressive delle componenti. Le istruzioni successive assegnano i nomi delle variabili come nomi di riga e stringhe del tipo 1:p per indicare quante componenti intervengono nella rappresentazione (cioè la dimensione dello spazio di proiezione). Si ottiene: 33
34 > round(contrib, 3) 1 1:2 1:3 1:4 1:5 1:6 CORNETTO MAGNUM CUCCIOLONE SOLERO CARTE D OR VIENNETTA LIUK CROCCANTE CREMINO PASSION COPPAMUSIC MAGNIFICO FIORDIFRAGOLA LEMONISSIMO CALIPPO Si vede che, scegliendo una sola componende (proiettando su uno spazio ad una sola dimensione), vi sono 9 unità con un indice inferiore a 0.8, tra cui alcune con valori molto bassi (0.012 e 0.259); scegliendo invece due componenti la qualità della rappresentazione mogliora sensibilmente, in quanto vi sono solo due unità con un indice inferiore a 0.9, una delle quali con un non disprezzabile L ACP con R Vi sono vari modi di effettuare l analisi delle componenti principali con R: le funzioni prcomp() e princomp(), ma anche librerie come FactoMineR e spm(qui non prese in considerazione). Al fine di mettere le due funzioni a confronto, può essere utile costruire una funzione ACP() che valga come riferimento La funzione ACP() La funzione (v. Appendice 3.3.1) prevede tre parametri: 1) x è una matrice o un dataframe che abbia tante righe quante sono le unità statistiche e tante colonne quante solo le variabili; si assume che le variabili siano quantitative; se si ha un dataframe con variabili anche qualitative, queste posso essere scartate passando alla funzione una selezione delle colonne, ad esempio con: > DF.num <- DF[,sapply(DF, is.numeric)] 2) def è il numero di gradi di libertà, per default il numero delle unità statistiche, nrow(x); 3) cor è un parametro logico con il quale si decide se lavorare sui dati standardizzati, quindi sulla matrice di correlazione (se vale TRUE, come per default), oppure su dati centrati e sulla matrice di covarianza; 4) zero è un valore soglia: autovalori minori in valore assoluto di zero vengono assunti come nulli (cfr. sopra nota 17 a pag. 22). 34
35 Dopo aver convertito x in una matrice, nel caso fosse un dataframe, e dopo aver assegnato nomi a righe e colonne se mancano, viene calcolata ed assegnata alla variabile S la matrice dei dati centrata, oppure la matrice dei dati standardizzati se cor vale TRUE. Si procede quindi alla scomposizione di S ai valori singolari (v. Appendice 3.2), in quanto la funzione svd() produce risultati numericamente più accurati di quelli forniti da eigen() e consente di evitare il calcolo della matrice di covarianza o di correlazione. Si ottengono così gli autovalori lambda, la matrice dei pesi A, la matrice delle componenti principali Y, la matrice delle componenti principali standardizzate Ystd e la matrice Factor Pattern FP; tutte le matrici hanno tante colonne quanti sono gli autovalori non nulli (maggiori di zero in valore assoluto). Vengono infine calcolate le varianze spiegate dalle singole componenti (EVar) e la loro somma cumulata (CumEVar) sulla base degli autovalori, le somme cumulate dei quadrati di riga della matrice FP (CumComm, le cosiddette comunalità; cfr. Zani-Cerioli, pag. 233), le contribuzioni relative (Contrib). La funzione produce una lista contenente gli autovalori (tutti) e gli altri risultati dell elaborazione; ad esempio, usando la matrice dei dati relativi ai gelati (esempio 2.3): > acp <- ACP(X) > str(acp) List of 9 $ lambda: num [1:6] $ A : num [1:6, 1:6] $ Y : num [1:15, 1:6] attr(*, "dimnames")=list of 2....$ : chr [1:15] "CORNETTO" "MAGNUM" "CUCCIOLONE" "SOLERO" $ : chr [1:6] "Comp.1" "Comp.2" "Comp.3" "Comp.4"... $ Ystd : num [1:15, 1:6] attr(*, "dimnames")=list of 2....$ : chr [1:15] "CORNETTO" "MAGNUM" "CUCCIOLONE" "SOLERO" $ : chr [1:6] "Comp.1" "Comp.2" "Comp.3" "Comp.4"... $ FP : num [1:6, 1:6] attr(*, "dimnames")=list of 2....$ : chr [1:6] "kcal" "proteine" "carboidr" "grassi" $ : chr [1:6] "Comp.1" "Comp.2" "Comp.3" "Comp.4"... $ EVar : Named num [1:6] attr(*, "names")= chr [1:6] "Comp.1" "Comp.2" "Comp.3" "Comp.4"... $ CumEVar: Named num [1:6] attr(*, "names")= chr [1:6] "Comp.1" "Comp.2" "Comp.3" "Comp.4"... $ CumComm: num [1:6, 1:6] attr(*, "dimnames")=list of 2....$ : chr [1:6] "kcal" "proteine" "carboidr" "grassi" $ : chr [1:6] "1" "1:2" "1:3" "1:4"... $ Contrib: num [1:15, 1:6] attr(*, "dimnames")=list of 2....$ : chr [1:15] "CORNETTO" "MAGNUM" "CUCCIOLONE" "SOLERO" $ : chr [1:6] "1" "1:2" "1:3" "1:4"... Alcune ulteriori funzioni consentono di tracciare i grafici già esaminati. 35
36 La funzione acp.screeplot() (Appendice 3.3.2) traccia uno screeplot. Accetta come parametri o il risultato di una chiamata della funzione ACP(), acp, oppure un vettore di autovalori, lambda. La figura 8 è stata tracciata con: > acp <- ACP(X) > acp.screeplot(acp) ma potrebbe essere tracciata anche con: > acp.screeplot(lambda = acp$lambda) Il parametro percent permette di ottenere un grafico in cui sull asse delle ordinate viene riportata la quota della variabilità spiegata da ciascuna componente (i valori degli autovalori divisi per la loro somma). La funzione acp.corrplot() (Appendice 3.3.3) traccia un cerchio delle correlazioni come quello della figura 9. Accetta come parametri o il risultato di una chiamata della funzione ACP(), acp, o una matrice Factor Pattern, fp. Il terzo parametro, comp, permette di scegliere le componenti che interessano, per default le prime due. L ultimo parametro, add, consente di aggiungere il grafico ad uno prodotto da acp.unitplot() per ottenere un biplot. La funzione acp.unitplot() (Appendice 3.3.4) traccia grafici per la valutazione delle unità statistiche come quello della figura 10. Accetta come parametri o il risultato di una chiamata della funzione ACP(), acp, oppure una matrice di componenti principali, y; nel primo caso viene usata la matrice delle componenti standardizzate, acp$ystd. Il terzo parametro, comp, permette di scegliere le componenti che interessano, per default le prime due. Il quarto parametro, expand, consente di ampliare il grafico qualora fosse necessario per fare spazio ai nomi delle unità statistiche. Il biplot può essere ottenuto chiamando acp.unitplot(), usando il primo parametro o passando comunque una matrice di componenti standardizzate, poi acp.corrplot() con add = TRUE. Ad esempio, per ottenere un risultato simile a quello dello Zani-Cerioli (figura 6.7 a pag. 250), si devono prima cambiare i segni delle matrici Y e FP, poi chiamare le due funzioni: > acp$ystd[,1] <- -acp$ystd[,1] > acp$ystd[,2] <- -acp$ystd[,2] > acp$fp[,1] <- -acp$fp[,1] > acp$fp[,2] <- -acp$fp[,2] > acp.unitplot(acp) > acp.corrplot(acp, add=true) La funzione prcomp() La funzione prcomp() di R può essere chiamata in più modi; il più semplice è probabilmente: > pca <- prcomp(x, scale. = TRUE) che esegue i calcoli partendo da una una matrice di dati standardizzati. 29 Se poi si digita pca e si preme invio, vengono mostrati: 29 Meno chiaro cosa succede se si omette l opzione scale. = TRUE. Da questo punto di vista, la funzione princomp() appare più affidabile. Sembrerebbe infatti che, omettendo l opzione, l analisi venga effettuata 36
37 a) Standard deviations: sono gli scarti quadratici medi delle componenti principali, quindi le radici quadrate degli autovalori della matrice di covarianza o di correlazione (che sono uguali ai valori singolari della matrice di dati; cfr. Appendice 3.2); in termini dei risultati ottenibili con la funzione ACP(), si tratta di sqrt(acp$lambda); b) Rotation: la matrice dei pesi, acp$a, con tutte le colonne. 30 Dando invece il comando summary(pca) si ottiene un prospetto intitolato Importance of components nel quale, per ciascuna componente, vengono mostrati sia di nuovo lo scarto quadratico medio, poi la Proportion of Variance (acp$evar) e la Cumulative Proportion (acp$cumevar). Non vengono invece prodotte né la matrice delle componenti principali, né la Factor Pattern. Quanto ai grafici, i comandi plot(pca) e screeplot(pca) producono uno screeplot, mentre biplot(pca) produce un biplot La funzione princomp() Esiste anche una funzione princomp(), per eseguire la quale si può scegliere se lavorare su una matrice di scarti dalla media e sulla relativa matrice di covarianza (opzione core = FALSE, che è il default), oppure su una matrice di scarti standardizzati e relativa matrice di correlazione (cor = TRUE): > pca <- princomp(x) > # oppure > pca <- princomp(x, cor = TRUE) Se poi si digita pca e si preme invio, si ottengono solo gli scarti quadratici medi delle componenti principali. Con summary(pca), invece, si ottiene un prospetto intitolato Importance of components analogo a quello fornito da prcomp(). Sono peraltro disponibili alcuni parametri opzionali; summary(pca) equivale a: > summary(pca, loadings = FALSE, cutoff = 0.1) Usando loadings = TRUE viene mostrata anche la matrice dei pesi, lasciando in bianco i valori minori di cutoff. Esaminando più da vicino il contenuto del risultato, con str(pca), si nota che sono disponibili, tra l altro, la matrice dei pesi in pca$loadings e la matrice delle componenti principali in pca$scores (rispettivamente uguali a acp$a e acp$y). I comandi plot(pca) e screeplot(pca) producono uno screeplot, biplot(pca) produce un biplot. su una matrice di dati centrata e sulla relativa matrice di covarianza, ma i risultati che si ottengono, in particolare le varianze delle componenti principali, sono diversi da quelli che si ottengono con ACP(X, cor=false) o con princomp(x, cor=false). 30 La funzione può essere comunque chiamata con un parametro tol, analogo allo zero di ACP(). 37
38 3 Appendici 3.1 Notazioni di calcolo differenziale Sia x un vettore colonna ad n componenti: x 1 x 2 x =. e sia f(x) una funzione (scalare) delle sue componenti: x n f(x) = f(x 1, x 2,..., x n ) (1) Le derivate parziali prime della funzione (1) rispetto alle singole componenti del vettore x saranno, nell ordine: Si indica con la notazione f(x) x derivate, cioè: f(x) x 1, f(x),..., f(x) x 2 x n un vettore colonna le cui componenti sono le suddette f(x) x = f(x) x 1 f(x) x 2. f(x) x n Analogamente, si indica con f(x) x un vettore riga le cui componenti sono sempre le suddette derivate. Nel caso particolare in cui la funzione f(x) sia una forma lineare oppure una forma quadratica, si ottengono le seguenti notazioni. Sia f(x) la forma lineare: (2) n f(x) = a x = a i x i (3) i=1 Si indica con (a x) oppure (ax ) x k x k x k, cioè: la derivata parziale della (3) rispetto alla componente (a x) = (ax ) = { n } a i x i = x k x k x k i=1 n i=1 a i x i x k = a k, k = 1, 2,..., n 38
39 Quindi: oppure: (a x) x = a (4) (ax ) x = a Esempio 3.1. Siano a = (1, 2, 3) e x = (x 1, x 2, x 3 ). Si ha: [ ] a x 1 x = x 2 = x 1 + 2x 2 + 3x 3 Le derivate parziali rispetto alle componenti di x sono: Quindi: x 3 (ax) = (x 1 + 2x 2 + 3x 3 ) = 1 x 1 x 1 (ax) = (x 1 + 2x 2 + 3x 3 ) = 2 x 2 x 2 (ax) = (x 1 + 2x 2 + 3x 3 ) = 3 x 3 x 3 (a x) x = Analogamente, (ax ) [ ] x = = a. Sia ora f(x) la forma quadratica 1 2 = a 3 n n n f(x) = x n Ax = a ij x i x j = x i a ij x j (5) i=1 j=1 i=1 j=1 essendo A una matrice simmetrica. Tenuto conto della simmetria di A, con semplici passaggi, si ottiene: (x Ax) = n n x x k x k i a ij x j = i=1 j=1 Quindi, in generale: o anche: n x i n n n = a ij x j + x j x i=1 k j=1 j=1 i=1 n n n = a kj x j + x i a ik = 2 a kj x j j=1 i=1 j=1 (x Ax) x a ij x j x k = = 2Ax (6) (x Ax) x = 2x A (7) 39
40 Esempio 3.2. Sia q : R 2 R, q(x) = 2x x 1x 2 + x 2 2, una forma quadratica. La matrice associata rispetto alla base canonica è: [ ] 2 3 A = 3 1 Se x = (x 1, x 2 ) è il generico vettore di R 2 si ha, evidentemente: [ ] [ ] [ ] 2 3 x1 [ ] [ ] 2x x 1 x 2 = x x 1 + 3x 2 2 = 2x x 3x 1 + x 1 x 2 + x 2 2 = q(x) 2 Quindi: x 2 (x Ax) x 1 (x Ax) x 2 (x Ax) x = q(x) x 1 = 4x 1 + 6x 2 = q(x) = 6x 1 + 2x 2 x 2 = q(x) [ ] x = 4x1 + 6x 2 = 6x 1 + 2x 2 [ ] [ ] x1 = 2Ax x Scomposizione ai valori singolari La scomposizione ai valori singolari è una tecnica usata in algebra lineare per produrre un approssimazione ad una matrice con un altra di minor rango. Si ha, in generale: A = U Λ n,k n,k k,k V k,k dove: a) A è una qualsiasi matrice reale n k; tuttavia, dal punto di vista delle applicazioni statistiche, si suppone n > k (il numero delle unità statistiche è maggiore del numero dei caratteri rilevati); b) U è una matrice n k le cui colonne sono i k autovettori normalizzati e ortogonali relativi ai primi k autovalori, in ordine decrescente, della matrice AA (di ordine n n, quindi con n autovalori e autovettori); c) Λ è una matrice diagonale di ordine k i cui elementi sono i valori singolari di A A (matrice di ordine k k), ovvero le radici quadrate dei suoi autovalori (tutti reali e non negativi, in quanto A A è simmetrica); d) V è una matrice quadrata di ordine k le cui colonne (quindi le righe nella trasposta V ) sono gli autovalori normalizzati e ortogonali della matrice A A. I valori singolari compaiono in Λ in ordine decrescente; gli autovettori compaiono in U e in V nell ordine decrescente, da sinistra verso destra, dei relativi autovalori. Il rango della matrice Λ è uguale al rango di A. Infatti se A ha rango pieno rk(a) = rk(a A) = k, allora A A ha k autovalori non nulli ed anche Λ ha rango k; se rk(a) = r < k, vi sono r autovalori non nulli e un autovalore nullo di molteplicità algebrica k r cui corrisponde un autospazio coincidente col kernel di A A e, anche in questo caso, rk(λ) = rk(a) = r. In R la scomposizione ai valori singolari si ottiene con la funzione svd(): 40
41 > A <- matrix(c(1,1,1,1,2,1,2,3,3,2,3,4), nrow=4) > A [,1] [,2] [,3] [1,] [2,] [3,] [4,] > ULV <- svd(a) > ULV $d [1] e e e-16 $u [,1] [,2] [,3] [1,] [2,] [3,] [4,] $v [,1] [,2] [,3] [1,] [2,] [3,] > U <- ULV$u > L <- diag(ulv$d) > V <- ULV$v Da notare che valori molto piccoli, come e-16 = , vanno interpretati come uguali a zero; sono infatti diversi da zero solo per problemi di approssimazione nei calcoli numerici. 31 Si può usare la funzione round() per una rappresentazione più immediata; ad esempio: > round(l, 5) [,1] [,2] [,3] [1,] [2,] [3,] Si può verificare facilmente sia che A = UΛV : > U %*% L %*% t(v) [,1] [,2] [,3] [1,] [2,] Un qualsiasi software può effettuare calcoli solo con un numero finito di cifre decimali e, pertanto, non può calcolare esattamente risultati che coinvolgono numeri irrazionali, numeri decimali periodici o comunque con un elevato numero di cifre decimali. 41
42 [3,] [4,] sia che U e V sono matrici le cui colonne e, rispettivamente, righe sono costituite da vettori normalizzati e ortogonali, ovvero che U U = V V = I k : 32 > round(t(u) %*% U, 5) [,1] [,2] [,3] [1,] [2,] [3,] > round(t(v) %*% V, 5) [,1] [,2] [,3] [1,] [2,] [3,] Si può anche verificare che gli elementi della diagonale principale di Λ sono le radici quadrate degli autovalori di A A e che le colonne di V sono i relativi autovettori; si può usare a questo scopo la funzione eigen(), 33 che restituisce una lista i cui elementi sono $values (autovalori) e $vectors (autovettori): > ATA <- t(a) %*% A > eig <- eigen(ata) > round(sqrt(eig$values), 5) # uguale a ULV$d [1] > eig$vectors # uguale a ULV$v [,1] [,2] [,3] [1,] [2,] [3,] Si verifica analogamente che le colonne di U sono i primi k autovettori di AA. Un primo aspetto interessante della scomposizione ai valori singolari consiste nel fatto che se si usano solo le prime r colonne di U e di V e le prime r righe e colonne di Λ, dove r è il numero degli autovalori non nulli (quindi il rango) di A A, si ottengono nuove matrici il cui prodotto è ancora uguale ad A: A = U Λ n,k n,r r,r V r,k r = rk(a) Infatti eseguendo i seguenti comandi: > Ur <- U[,1:2] > Lr <- L[1:2,1:2] > Vr <- V[,1:2] 32 Per moltiplicare le colonne di U per se stesse si premoltiplica U per la sua trasposta; nel prodotto righe per colonne, infatti, le righe della trasposta sono le colonne di U, quindi gli autovettori di AA. Analogamente per V. 33 In inglese autovalori e autovettori si dicono, rispettivamente, eigenvalues e eigenvectors. 42
43 > Ur %*% Lr %*% t(vr) [,1] [,2] [,3] [1,] [2,] [3,] [4,] si ottiene ancora la matrice A. Un secondo aspetto interessante consiste nella possibilità di approssimare A con una matrice di minor rango, ottenuta usando solo le prime p < r colonne di U e di V e le prime p righe e colonne di Λ: A U Λ n,k n,p p,p V p,k p < rk(a) Per apprezzare l entità dell approssimazione è necessario misurare la distanza tra la matrice ed il prodotto U Λ V. Serve quindi una norma e si può usare la norma di n,p p,p p,k Frobenius: A F = a 2 ij tr(a = A) ottenibile con la semplice funzione: matnorm <- function(x, dec = 5) { if (!is.matrix(x)) stop(" x deve essere una matrice") xtx <- t(x) %*% x t <- sqrt(sum(diag(xtx))) round(t, dec) } i i Usando la matrice dei dati X dell esempio 2.3, che è di ordine 15 6 e ha rango 6, si possono prima creare le matrici U, Λ, V come fatto sopra: > ULV <- svd(x) > U <- ULV$u > L <- diag(ulv$d) > V <- ULV$v Si può verificare per prima cosa che A == U %*% L %*% t(v): > matnorm((u %*% L %*% t(v)) - X) [1] 0 Si può poi notare che, riducendo le dimensioni delle matrici U, Λ, V, si hanno approssimazioni via via peggiori; ad esempio, per p = 4: > U4 <- U[,1:4] > L4 <- L[1:4,1:4] > V4 <- V[,1:4] > matnorm((u4 %*% L4 %*% t(v4)) - X) [1]
44 per p = 2: > U2 <- U[,1:2] > L2 <- L[1:2,1:2] > V2 <- V[,1:2] > matnorm((u2 %*% L2 %*% t(v2)) - X) [1] Scomposizione di matrici standardizzate Siano X n,k una matrice di dati e Z n,k la relativa matrice degli scarti standardizzati. Partendo da: Z = U Λ V n,k n,k k,k k,k si nota in primo luogo che V, essendo una matrice le cui colonne sono gli autovettori di Z Z, quindi della matrice di correlazione R, non è altro che la matrice dei pesi sopra indicata con A. Infatti, da R = 1 n Z Z (cfr. pag. 14) segue: a) gli autovalori di Z Z sono le soluzioni non nulle del sistema (Z Z λ Z ZI k )a = 0; dividendo per n: ( Z Z n 1 ) n λ Z ZI k a = (R λ R I k )a = 0 λ R = 1 n λ Z Z ovvero gli autovalori di R (le varianze delle componenti principali) si possono ottenere dividendo per n quelli di Z Z. Partendo dalla matrice di dati X dell esempio 2.3, si crea la matrice Z e la si scompone: > Z <- sweep(x, 2, colmeans(x)) %*% diag(1/sd2(x)) > ULV <- svd(z) > U <- ULV$u > L <- diag(ulv$d) > V <- ULV$v i valori singolari, in ULV$d, risultano uguali alle radici quadrate degli autovalori di Z Z: > lambdaztz <- eigen(t(z) %*% Z, only.values = TRUE)$values > round(lambdaztz, 5) [1] > round(ulv$d, 5) [1] > round(sqrt(lambdaztz), 5) [1] gli autovalori di Z Z risultano, a loro volta, uguali a quelli di R moltiplicati per n: > R <- cor(x) > lambdar <- eigen(r, only.values = TRUE)$values > round(lambdar, 5) [1] > round(lambdar * nrow(x), 5) [1]
45 b) gli autospazi relativi agli autovalori di Z Z e R sono uguali in quanto, dalla definizione di autovalore e autovettore: Z Zv = λ Z Zv = nλ R v = λ R (nv) e nv appartiene ovviamente allo stesso autospazio cui appartiene v; nel caso dei dati dell esempio 2.3: > round(eigen(t(z) %*% Z)$vectors, 5) # uguale a round(v, 5) [,1] [,2] [,3] [,4] [,5] [,6] [1,] [2,] [3,] [4,] [5,] [6,] > round(eigen(r)$vectors, 5) [,1] [,2] [,3] [,4] [,5] [,6] [1,] [2,] [3,] [4,] [5,] [6,] # ne segue: > A <- V (per le differenze nei segni cfr. pag. 24). Si può quindi sostituire V con la matrice dei pesi A: Z = U Λ A n,k n,k k,k k,k Postmoltiplicando ora entrambi i membri per A si ha: ZA = UΛA A = UΛ = Y ovvero il prodotto UΛ non è altro che la matrice dei componenti principali Y = ZA: > Y <- Z %*% A > round(y, 5) [,1] [,2] [,3] [,4] [,5] [,6] CORNETTO CALIPPO > round(u %*% L, 5) [,1] [,2] [,3] [,4] [,5] [,6] [1,] [15,]
46 Postmoltiplicando poi per Λ 1 si ha: ZAΛ 1 = UΛΛ 1 = U U risulta così uguale ad una matrice ottenuta dividendo ciascuna colonna di ZA = Y per la radice quadrata del corrispondente autovalore di Z Z, quindi, essendo tali autovalori uguali a quelli di R moltiplicati per n, ciascuna componente per il suo scarto quadratico medio moltiplicato per n. Poiché le colonne di Y sono centrate (la loro somma è zero perché tale è la somma delle colonne di Z), 34 n U è una matrice delle componenti standardizzate: > round(y %*% diag(1/sd2(y)), 5) [,1] [,2] [,3] [,4] [,5] [,6] CORNETTO CALIPPO > round(u * sqrt(nrow(x)), 5) [,1] [,2] [,3] [,4] [,5] [,6] [1,] [15,] Analogamente, il prodotto ΛA è uguale alla trasposta della matrice Factor Pattern moltiplicata per n. Infatti gli elementi della matrice sono r Xi,Y j = a ij λj, dove i λ j sono gli autovalori di R, mentre Λ presenta sulla diagonale principale gli autovalori di Z Z. Quindi la matrice Factor Pattern si può ottenere sia calcolando la correlazione tra la matrice dei dati (standardizzati o meno), sia con 1 AΛ: 35 n > FP <- cor(z,y) > round(fp, 5) [,1] [,2] [,3] [,4] [,5] [,6] [1,] [6,] > round( (A %*% L) / sqrt(nrow(x)), 5) [,1] [,2] [,3] [,4] [,5] [,6] [1,] [6,] Considerando il seguente prodotto di due matrici: [ ] [ ] [ ] a11 a 12 b11 b 12 a11b 11 + a 12b 21 a 11b 12 + a 12b 22 = a 21 a 22 b 21 b 22 a 21b 11 + a 22b 21 a 21b 12 + a 22b 22 si vede che le somme delle colonne del prodotto: a 11b 11 + a 12b 21 + a 21b 11 + a 22b 21 = (a 11 + a 21)b 11 + (a 12 + a 22)b 21 a 11b 12 + a 12b 22 + a 21b 12 + a 22b 22 = (a 11 + a 21)b 12 + (a 12 + a 22)b 22 sono nulle se è nulla la somma della colonne della prima matrice. 35 Dovrebbe essere (ΛA ) = AΛ, ma, essendo Λ diagonale, Λ = Λ. 46
47 Riepilogando: a) Z = UΛV = UΛA, dove Z è la matrice degli scarti standardizzati e A è la matrice dei pesi (degli autovettori di R, ed anche di Z Z); b) n U è la matrice delle componenti pricipali standardizzate, in quanto U è la matrice delle CP standardizzate divise per n; c) λ 2 ii /n, i = 1,..., k, sono gli autovalori della matrice di correlazione R, in quanto Λ è una matrice diagonale che ha sulla diagonale principale le radici quadrate degli autovalori di Z Z = nr; d) Y = UΛ = ZA è la matrice che ha per colonne le componenti principali; 1 e) AΛ è la matrice Factor Pattern, in quanto ΛA è la trasposta di essa moltiplicata n per n Scomposizione di matrici centrate Il caso di matrici centrate è analogo, risultando diversa solo la composizione della matrice Factor Pattern. Si parte da: S = U Λ V n,k n,k k,k k,k e si ottiene che: a) S = UΛV = UΛA, dove S è la matrice degli scarti e A è la matrice dei pesi (degli autovettori di Σ, ed anche di S S); b) n U è la matrice delle componenti pricipali standardizzate, in quanto U è la matrice delle CP standardizzate divise per n; c) λ 2 ii /n, i = 1,..., k, sono gli autovalori della matrice di correlazione R, in quanto Λ è una matrice diagonale che ha sulla diagonale principale le radici quadrate degli autovalori di Z Z = nr; d) Y = UΛ = SA è la matrice che ha per colonne le componenti principali; 1 e) DAΛ, dove D è una matrice diagonale avente gli scarti quadratici medi delle n variabili sulla diagonale principale, è la matrice Factor Pattern, in quanto ΛA è la trasposta di una matrice che contiene i numeratori dei coefficienti di correlazione, λj r Xi,Y j = a ij, moltiplicati per n. σ Xi Per ottenere e verificare il tutto con R, si può usare la stessa matrice X assumendo che contenga variabili espresse nella stessa unità di misura: > # Matrice degli scarti e matrice di covarianza > S <- sweep(x, 2, colmeans(x)) > C <- varcov(s) > # Scomposizione della matrice degli scarti > ULV <- svd(s) > U <- ULV$u > L <- diag(ulv$d) > V <- ULV$v 47
48 > > # I valori singolari di S sono uguali alle > # radici quadrate degli autovalori di S S > lambdasts <- eigen(t(s) %*% S)$values > round(lambdasts, 5) [1] [6] > round(ulv$d, 5) [1] > round(sqrt(lambdasts), 5) [1] > > # Gli autovalori di S S sono uguali a quelli di C > # moltiplicati per n, quindi A == V > lambdac <- eigen(c)$values > round(lambdac, 5) [1] > round(lambdac * nrow(x), 5) [1] [6] > # Matrici V e A > round(eigen(t(s) %*% S)$vectors, 5) # uguale a round(v, 5) [,1] [,2] [,3] [,4] [,5] [,6] [1,] [2,] [3,] [4,] [5,] [6,] > round(eigen(c)$vectors, 5) [,1] [,2] [,3] [,4] [,5] [,6] [1,] [2,] [3,] [4,] [5,] [6,] > A <- V > > # La matrice delle componenti principali Y=SA > # è uguale a UL > Y <- S %*% A > round(y, 5) [,1] [,2] [,3] [,4] [,5] [,6] CORNETTO CALIPPO
49 > round(u %*% L, 5) [,1] [,2] [,3] [,4] [,5] [,6] [1,] [15,] > > # sqrt(n)*u è la matrice delle componenti > # principali standardizzate > round(y %*% diag(1/sd2(y)), 5) [,1] [,2] [,3] [,4] [,5] [,6] CORNETTO CALIPPO > round(u * sqrt(nrow(x)), 5) [,1] [,2] [,3] [,4] [,5] [,6] [1,] [15,] > > # 1/sqrt(n) DAL è uguale alla matrice > # Factor Pattern > FP <- cor(x, Y) > round(fp, 5) [,1] [,2] [,3] [,4] [,5] [,6] kcal proteine carboidr grassi fibre peso > round( diag(1/sd2(x)) %*% (A %*% L) / sqrt(nrow(x)), 5) [,1] [,2] [,3] [,4] [,5] [,6] [1,] [2,] [3,] [4,] [5,] [6,] Il codice delle funzioni ACP() e acp.*() La funzione ACP() ACP <- function(x, def = nrow(x), cor = TRUE, zero =.Machine$double.eps) { # Trasforma x in una matrice (potrebbe essere un dataframe) x <- as.matrix(x) 49
50 n <- nrow(x) if (is.null(rnames <- rownames(x))) rnames <- 1:n if (is.null(cnames <- colnames(x))) cnames <- paste(rep("v", ncol(x)), 1:ncol(x), sep = "") # Matrice degli scarti (standardizzati se cor == TRUE) S <- sweep(x, 2, colmeans(x)) if (cor) S <- S %*% diag(1/sd2(x, def=def)) # Scomposizione ai valori singolari ULA <- svd(s) U <- ULA$u L <- diag(ula$d) # Autovalori maggiori di zero e loro numero k lambda <- ULA$d^2 / n lambda <- lambda * (abs(lambda) > zero) k <- sum(lambda > 0) # Matrice dei pesi A <- ULA$v[,1:k] # Matrice delle k componenti principali Y <- U[,1:k] %*% L[1:k,1:k] colnames(y) <- paste(rep("comp.", k), 1:k, sep = "") rownames(y) <- rnames # Matrice delle componenti principali standardizzate Ystd <- U[,1:k] * sqrt(n) colnames(ystd) <- colnames(y) rownames(ystd) <- rnames # Matrice Factor Pattern FP <- cor(x, Y)[,1:k] # Varianza totale spiegata dalle singole componenti EVar <- lambda / sum(lambda) * 100 CumEVar <- cumsum(evar) # Varianza delle singole variabili (comunalita ) CumComm <- t(apply(fp^2, 1, cumsum)) colnames(cumcomm) <- c("1", paste(rep("1:", k-1), 2:k, sep="")) # Contribuzioni relative Contrib <- t(apply(diag(1/rowsums(s^2)) %*% Y^2, 1, cumsum)) 50
51 } rownames(contrib) <- rnames colnames(contrib) <- colnames(cumcomm) return(list(lambda = lambda, A = A, Y = Y, Ystd = Ystd, FP = FP, EVar = round(evar, 2), CumEVar = round(cumevar,2), CumComm = round(cumcomm, 3), Contrib = round(contrib, 3))) La funzione acp.screeplot() acp.screeplot <- function(acp = NULL, lambda = NULL, percent = FALSE) { if (is.null(lambda)) lambda = acp$lambda ylabel <- "Autovalore" if (percent) { lambda <- lambda / sum(lambda) * 100 ylabel <- "Quota di variabilità spiegata" } plot(1:length(lambda), lambda, type="o", main="screeplot", xlab="numero componente", ylab=ylabel) } La funzione acp.corrplot() acp.corrplot <- function(acp = NULL, fp = NULL, comp = c(1,2), expand = 1.3, add = FALSE) { if (is.null(fp)) fp <- acp$fp if (!add) plot(c(-expand,expand),c(-expand,expand), type="n", main="cerchio delle correlazioni", xlab = paste("componente", comp[1]), ylab = paste("componente", comp[2])) curve(sqrt(1-x^2), from = -1, to = 1, add = TRUE) curve(-sqrt(1-x^2), from = -1, to = 1, add = TRUE) x0 <- rep(0, nrow(fp)) y0 <- x0 x1 <- fp[,comp[1]] y1 <- fp[,comp[2]] arrows(x0, y0, x1, y1, length=0.05) text(fp[,comp[1]],fp[,comp[2]],rownames(fp), pos=4, cex=0.8) } La funzione acp.unitplot() acp.unitplot <- function(acp = NULL, y = NULL, comp=c(1,2), expand = 1) { if (is.null(y)) y <- acp$ystd x0 <- min(y[,comp[1]]) * expand 51
52 } y0 <- min(y[,comp[2]]) * expand x1 <- max(y[,comp[1]]) * expand y1 <- max(y[,comp[2]]) * expand if (-x0 > x1) x1 <- -x0 else x0 <- -x1 if (-y0 > y1) y1 <- -y0 else y0 <- -y1 if (x0 < y0) { y0 <- x0 y1 <- x1 } else { x0 <- y0 x1 <- y1 } plot(c(x0,x1), c(y0,y1), type="n", main="unità statistiche", xlab = paste("componente", comp[1]), ylab = paste("componente", comp[2])) points(y[,comp[1]], y[,comp[2]]) text(y[,comp[1]], y[,comp[2]], rownames(y), pos=3, cex=0.9) 52
Il concetto di valore medio in generale
Il concetto di valore medio in generale Nella statistica descrittiva si distinguono solitamente due tipi di medie: - le medie analitiche, che soddisfano ad una condizione di invarianza e si calcolano tenendo
2.1 Definizione di applicazione lineare. Siano V e W due spazi vettoriali su R. Un applicazione
Capitolo 2 MATRICI Fra tutte le applicazioni su uno spazio vettoriale interessa esaminare quelle che mantengono la struttura di spazio vettoriale e che, per questo, vengono dette lineari La loro importanza
Relazioni statistiche: regressione e correlazione
Relazioni statistiche: regressione e correlazione È detto studio della connessione lo studio si occupa della ricerca di relazioni fra due variabili statistiche o fra una mutabile e una variabile statistica
4. Operazioni elementari per righe e colonne
4. Operazioni elementari per righe e colonne Sia K un campo, e sia A una matrice m n a elementi in K. Una operazione elementare per righe sulla matrice A è una operazione di uno dei seguenti tre tipi:
Dimensione di uno Spazio vettoriale
Capitolo 4 Dimensione di uno Spazio vettoriale 4.1 Introduzione Dedichiamo questo capitolo ad un concetto fondamentale in algebra lineare: la dimensione di uno spazio vettoriale. Daremo una definizione
LE FUNZIONI A DUE VARIABILI
Capitolo I LE FUNZIONI A DUE VARIABILI In questo primo capitolo introduciamo alcune definizioni di base delle funzioni reali a due variabili reali. Nel seguito R denoterà l insieme dei numeri reali mentre
VARIANZA CAMPIONARIA E DEVIAZIONE STANDARD. Si definisce scarto quadratico medio o deviazione standard la radice quadrata della varianza.
VARIANZA CAMPIONARIA E DEVIAZIONE STANDARD Si definisce varianza campionaria l indice s 2 = 1 (x i x) 2 = 1 ( xi 2 n x 2) Si definisce scarto quadratico medio o deviazione standard la radice quadrata della
2 + (σ2 - ρσ 1 ) 2 > 0 [da -1 ρ 1] b = (σ 2. 2 - ρσ1 σ 2 ) = (σ 1
1 PORTAFOGLIO Portafoglio Markowitz (2 titoli) (rischiosi) due titoli rendimento/varianza ( μ 1, σ 1 ), ( μ 2, σ 2 ) Si suppone μ 1 > μ 2, σ 1 > σ 2 portafoglio con pesi w 1, w 2 w 1 = w, w 2 = 1- w 1
LEZIONE 23. Esempio 23.1.3. Si consideri la matrice (si veda l Esempio 22.2.5) A = 1 2 2 3 3 0
LEZIONE 23 231 Diagonalizzazione di matrici Abbiamo visto nella precedente lezione che, in generale, non è immediato che, data una matrice A k n,n con k = R, C, esista sempre una base costituita da suoi
Prova di autovalutazione Prof. Roberta Siciliano
Prova di autovalutazione Prof. Roberta Siciliano Esercizio 1 Nella seguente tabella è riportata la distribuzione di frequenza dei prezzi per camera di alcuni agriturismi, situati nella regione Basilicata.
Esempi di funzione. Scheda Tre
Scheda Tre Funzioni Consideriamo una legge f che associa ad un elemento di un insieme X al più un elemento di un insieme Y; diciamo che f è una funzione, X è l insieme di partenza e X l insieme di arrivo.
Parte 2. Determinante e matrice inversa
Parte. Determinante e matrice inversa A. Savo Appunti del Corso di Geometria 013-14 Indice delle sezioni 1 Determinante di una matrice, 1 Teorema di Cramer (caso particolare), 3 3 Determinante di una matrice
OCCUPATI SETTORE DI ATTIVITA' ECONOMICA
ESERCIZIO 1 La tabella seguente contiene i dati relativi alla composizione degli occupati in Italia relativamente ai tre macrosettori di attività (agricoltura, industria e altre attività) negli anni 1971
4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0
Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice
SISTEMI DI NUMERAZIONE E CODICI
SISTEMI DI NUMERAZIONE E CODICI Il Sistema di Numerazione Decimale Il sistema decimale o sistema di numerazione a base dieci usa dieci cifre, dette cifre decimali, da O a 9. Il sistema decimale è un sistema
LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1
LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1 I CODICI 1 IL CODICE BCD 1 Somma in BCD 2 Sottrazione BCD 5 IL CODICE ECCESSO 3 20 La trasmissione delle informazioni Quarta Parte I codici Il codice BCD
GEOMETRIA DELLE MASSE
1 DISPENSA N 2 GEOMETRIA DELLE MASSE Si prende in considerazione un sistema piano, ossia giacente nel pian x-y. Un insieme di masse posizionato nel piano X-Y, rappresentato da punti individuati dalle loro
( x) ( x) 0. Equazioni irrazionali
Equazioni irrazionali Definizione: si definisce equazione irrazionale un equazione in cui compaiono uno o più radicali contenenti l incognita. Esempio 7 Ricordiamo quanto visto sulle condizioni di esistenza
La distribuzione Normale. La distribuzione Normale
La Distribuzione Normale o Gaussiana è la distribuzione più importante ed utilizzata in tutta la statistica La curva delle frequenze della distribuzione Normale ha una forma caratteristica, simile ad una
ESEMPIO 1: eseguire il complemento a 10 di 765
COMPLEMENTO A 10 DI UN NUMERO DECIMALE Sia dato un numero N 10 in base 10 di n cifre. Il complemento a 10 di tale numero (N ) si ottiene sottraendo il numero stesso a 10 n. ESEMPIO 1: eseguire il complemento
Grandezze scalari e vettoriali
Grandezze scalari e vettoriali Esempio vettore spostamento: Esistono due tipi di grandezze fisiche. a) Grandezze scalari specificate da un valore numerico (positivo negativo o nullo) e (nel caso di grandezze
Parte 3. Rango e teorema di Rouché-Capelli
Parte 3. Rango e teorema di Rouché-Capelli A. Savo Appunti del Corso di Geometria 203-4 Indice delle sezioni Rango di una matrice, 2 Teorema degli orlati, 3 3 Calcolo con l algoritmo di Gauss, 6 4 Matrici
Analisi delle relazioni tra due caratteri
Analisi delle relazioni tra due caratteri Le misure di connessione misurano il grado di associazione tra due caratteri qualsiasi sotto il profilo statistico (e non causale in quanto non è compito della
Diagonalizzazione di matrici e applicazioni lineari
CAPITOLO 9 Diagonalizzazione di matrici e applicazioni lineari Esercizio 9.1. Verificare che v = (1, 0, 0, 1) è autovettore dell applicazione lineare T così definita T(x 1,x 2,x 3,x 4 ) = (2x 1 2x 3, x
APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI
APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................
CONTINUITÀ E DERIVABILITÀ Esercizi proposti. 1. Determinare lim M(sinx) (M(t) denota la mantissa di t)
CONTINUITÀ E DERIVABILITÀ Esercizi proposti 1. Determinare lim M(sin) (M(t) denota la mantissa di t) kπ/ al variare di k in Z. Ove tale limite non esista, discutere l esistenza dei limiti laterali. Identificare
Alessandro Pellegrini
Esercitazione sulle Rappresentazioni Numeriche Esistono 1 tipi di persone al mondo: quelli che conoscono il codice binario e quelli che non lo conoscono Alessandro Pellegrini Cosa studiare prima Conversione
ESTRAZIONE DI RADICE
ESTRAZIONE DI RADICE La radice è l operazione inversa dell elevamento a potenza. L esponente della potenza è l indice della radice che può essere: quadrata (); cubica (); quarta (4); ecc. La base della
Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.
DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti
L espressione torna invece sempre vera (quindi la soluzione originale) se cambiamo contemporaneamente il verso: 1 < 0.
EQUAZIONI E DISEQUAZIONI Le uguaglianze fra espressioni numeriche si chiamano equazioni. Cercare le soluzioni dell equazione vuol dire cercare quelle combinazioni delle lettere che vi compaiono che la
RICERCA OPERATIVA GRUPPO B prova scritta del 22 marzo 2007
RICERCA OPERATIVA GRUPPO B prova scritta del 22 marzo 2007 Rispondere alle seguenti domande marcando a penna la lettera corrispondente alla risposta ritenuta corretta (una sola tra quelle riportate). Se
Teoria in sintesi 10. Attività di sportello 1, 24 - Attività di sportello 2, 24 - Verifica conclusiva, 25. Teoria in sintesi 26
Indice L attività di recupero 6 Funzioni Teoria in sintesi 0 Obiettivo Ricerca del dominio e del codominio di funzioni note Obiettivo Ricerca del dominio di funzioni algebriche; scrittura del dominio Obiettivo
ANALISI DEI DATI PER IL MARKETING 2014
ANALISI DEI DATI PER IL MARKETING 2014 Marco Riani [email protected] http://www.riani.it RIPASSO SULLE MATRICI 1 Addizione tra matrici Moltiplicazione Matrice diagonale Matrice identità Matrice trasposta
MATEMATICA DEL DISCRETO elementi di teoria dei grafi. anno acc. 2009/2010
elementi di teoria dei grafi anno acc. 2009/2010 Grafi semplici Un grafo semplice G è una coppia ordinata (V(G), L(G)), ove V(G) è un insieme finito e non vuoto di elementi detti vertici o nodi di G, mentre
FUNZIONI ELEMENTARI - ESERCIZI SVOLTI
FUNZIONI ELEMENTARI - ESERCIZI SVOLTI 1) Determinare il dominio delle seguenti funzioni di variabile reale: (a) f(x) = x 4 (c) f(x) = 4 x x + (b) f(x) = log( x + x) (d) f(x) = 1 4 x 5 x + 6 ) Data la funzione
Elementi di informatica
Elementi di informatica Sistemi di numerazione posizionali Rappresentazione dei numeri Rappresentazione dei numeri nei calcolatori rappresentazioni finalizzate ad algoritmi efficienti per le operazioni
Fondamenti e didattica di Matematica Finanziaria
Fondamenti e didattica di Matematica Finanziaria Silvana Stefani Piazza dell Ateneo Nuovo 1-20126 MILANO U6-368 [email protected] 1 Unità 9 Contenuti della lezione Operazioni finanziarie, criterio
LA CORRELAZIONE LINEARE
LA CORRELAZIONE LINEARE La correlazione indica la tendenza che hanno due variabili (X e Y) a variare insieme, ovvero, a covariare. Ad esempio, si può supporre che vi sia una relazione tra l insoddisfazione
Kangourou della Matematica 2014 finale nazionale italiana Mirabilandia, 12 maggio 2014
Kangourou della Matematica 2014 finale nazionale italiana Mirabilandia, 12 maggio 2014 LIVELLO STUDENT K,M N CD BC A S1. (5 punti ) In figura si vede una circonferenza della quale i segmenti AB, BC e CD
ESAME DI STATO DI LICEO SCIENTIFICO CORSO SPERIMENTALE P.N.I. 2004
ESAME DI STAT DI LICE SCIENTIFIC CRS SPERIMENTALE P.N.I. 004 Il candidato risolva uno dei due problemi e 5 dei 0 quesiti in cui si articola il questionario. PRBLEMA Sia la curva d equazione: ke ove k e
1 Applicazioni Lineari tra Spazi Vettoriali
1 Applicazioni Lineari tra Spazi Vettoriali Definizione 1 (Applicazioni lineari) Si chiama applicazione lineare una applicazione tra uno spazio vettoriale ed uno spazio vettoriale sul campo tale che "!$%!
Dott.ssa Caterina Gurrieri
Dott.ssa Caterina Gurrieri Le relazioni tra caratteri Data una tabella a doppia entrata, grande importanza riveste il misurare se e in che misura le variabili in essa riportata sono in qualche modo
Algebra Lineare e Geometria
Algebra Lineare e Geometria Corso di Laurea in Ingegneria Elettronica A.A. 2013-2014 Prova d esame del 16/06/2014. 1) a) Determinare la matrice associata all applicazione lineare T : R 3 R 4 definita da
Per studio di funzione intendiamo un insieme di procedure che hanno lo scopo di analizzare le proprietà di una funzione f ( x) R R
Studio di funzione Per studio di funzione intendiamo un insieme di procedure che hanno lo scopo di analizzare le proprietà di una funzione f ( x) R R : allo scopo di determinarne le caratteristiche principali.
Parte II Indice. Operazioni aritmetiche tra valori rappresentati in binario puro. Rappresentazione di numeri con segno
Parte II Indice Operazioni aritmetiche tra valori rappresentati in binario puro somma sottrazione Rappresentazione di numeri con segno modulo e segno complemento a 2 esercizi Operazioni aritmetiche tra
GIROSCOPIO. Scopo dell esperienza: Teoria fisica. Verificare la relazione: ω p = bmg/iω
GIROSCOPIO Scopo dell esperienza: Verificare la relazione: ω p = bmg/iω dove ω p è la velocità angolare di precessione, ω è la velocità angolare di rotazione, I il momento principale d inerzia assiale,
CALCOLO COMBINATORIO
CALCOLO COMBINATORIO 1 Modi di formare gruppi di k oggetti presi da n dati 11 disposizioni semplici, permutazioni Dati n oggetti distinti a 1,, a n si chiamano disposizioni semplici di questi oggetti,
~ Copyright Ripetizionando - All rights reserved ~ http://ripetizionando.wordpress.com STUDIO DI FUNZIONE
STUDIO DI FUNZIONE Passaggi fondamentali Per effettuare uno studio di funzione completo, che non lascia quindi margine a una quasi sicuramente errata inventiva, sono necessari i seguenti 7 passaggi: 1.
RETTE, PIANI, SFERE, CIRCONFERENZE
RETTE, PIANI, SFERE, CIRCONFERENZE 1. Esercizi Esercizio 1. Dati i punti A(1, 0, 1) e B(, 1, 1) trovare (1) la loro distanza; () il punto medio del segmento AB; (3) la retta AB sia in forma parametrica,
Funzioni in C. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni
DOMINIO E LIMITI. Esercizio 3 Studiare gli insiemi di livello della funzione f, nei seguenti casi: 1) f(x,y) = y2 x 2 + y 2.
FUNZIONI DI DUE VARIABILI 1 DOMINIO E LIMITI Domini e disequazioni in due variabili. Insiemi di livello. Elementi di topologia (insiemi aperti, chiusi, limitati, convessi, connessi per archi; punti di
Federico Lastaria. Analisi e Geometria 2. Matrici simmetriche. Il teorema spettrale. 1/24
Contenuto Endomorfismi auto-aggiunti. Matrici simmetriche. Il teorema spettrale Gli autovalori di una matrice simmetrica sono tutti reali. (Dimostrazione fatta usando i numeri complessi). Dimostrazione
Statistica. Alfonso Iodice D Enza [email protected]
Statistica Alfonso Iodice D Enza [email protected] Università degli studi di Cassino () Statistica 1 / 16 Outline 1 () Statistica 2 / 16 Outline 1 2 () Statistica 2 / 16 Outline 1 2 () Statistica 2 / 16
USO DI EXCEL CLASSE PRIMAI
USO DI EXCEL CLASSE PRIMAI In queste lezioni impareremo ad usare i fogli di calcolo EXCEL per l elaborazione statistica dei dati, per esempio, di un esperienza di laboratorio. Verrà nel seguito spiegato:
RICHIAMI SULLE MATRICI. Una matrice di m righe e n colonne è rappresentata come
RICHIAMI SULLE MATRICI Una matrice di m righe e n colonne è rappresentata come A = a 11 a 12... a 1n a 21 a 22... a 2n............ a m1 a m2... a mn dove m ed n sono le dimensioni di A. La matrice A può
LE SUCCESSIONI 1. COS E UNA SUCCESSIONE
LE SUCCESSIONI 1. COS E UNA SUCCESSIONE La sequenza costituisce un esempio di SUCCESSIONE. Ecco un altro esempio di successione: Una successione è dunque una sequenza infinita di numeri reali (ma potrebbe
Percorsi di matematica per il ripasso e il recupero
Giacomo Pagina Giovanna Patri Percorsi di matematica per il ripasso e il recupero 2 per la Scuola secondaria di secondo grado UNITÀ CAMPIONE Edizioni del Quadrifoglio à t i n U 1 Sistemi di primo grado
MINIMI QUADRATI. REGRESSIONE LINEARE
MINIMI QUADRATI. REGRESSIONE LINEARE Se il coefficiente di correlazione r è prossimo a 1 o a -1 e se il diagramma di dispersione suggerisce una relazione di tipo lineare, ha senso determinare l equazione
I sistemi di numerazione
I sistemi di numerazione 01-INFORMAZIONE E SUA RAPPRESENTAZIONE Sia dato un insieme finito di caratteri distinti, che chiameremo alfabeto. Utilizzando anche ripetutamente caratteri di un alfabeto, si possono
1 Serie di Taylor di una funzione
Analisi Matematica 2 CORSO DI STUDI IN SMID CORSO DI ANALISI MATEMATICA 2 CAPITOLO 7 SERIE E POLINOMI DI TAYLOR Serie di Taylor di una funzione. Definizione di serie di Taylor Sia f(x) una funzione definita
MATRICI E DETERMINANTI
MATRICI E DETERMINANTI 1. MATRICI Si ha la seguente Definizione 1: Un insieme di numeri, reali o complessi, ordinati secondo righe e colonne è detto matrice di ordine m x n, ove m è il numero delle righe
Corso di Matematica per la Chimica
Dott.ssa Maria Carmela De Bonis a.a. 203-4 I sistemi lineari Generalità sui sistemi lineari Molti problemi dell ingegneria, della fisica, della chimica, dell informatica e dell economia, si modellizzano
Inserimento di distanze e di angoli nella carta di Gauss
Inserimento di distanze e di angoli nella carta di Gauss Corso di laurea in Ingegneria per l Ambiente e il Territorio a.a. 2006-2007 Inserimento della distanza reale misurata nella carta di Gauss (passaggio
Capitolo 25: Lo scambio nel mercato delle assicurazioni
Capitolo 25: Lo scambio nel mercato delle assicurazioni 25.1: Introduzione In questo capitolo la teoria economica discussa nei capitoli 23 e 24 viene applicata all analisi dello scambio del rischio nel
Metodi statistici per le ricerche di mercato
Metodi statistici per le ricerche di mercato Prof.ssa Isabella Mingo A.A. 2014-2015 Facoltà di Scienze Politiche, Sociologia, Comunicazione Corso di laurea Magistrale in «Organizzazione e marketing per
Consorzio Nettuno - Corso di Matematica 1 Schede di lavoro guidato per le esercitazioni
Consorzio Nettuno - Corso di Matematica 1 Schede di lavoro guidato per le esercitazioni A cura di Sebastiano Cappuccio SCHEDA N. 6 ARGOMENTO: Grafici di funzioni sottoposte a trasformazioni elementari.
Sistemi di Numerazione Binaria NB.1
Sistemi di Numerazione Binaria NB.1 Numeri e numerali Numero: entità astratta Numerale : stringa di caratteri che rappresenta un numero in un dato sistema di numerazione Lo stesso numero è rappresentato
1. PRIME PROPRIETÀ 2
RELAZIONI 1. Prime proprietà Il significato comune del concetto di relazione è facilmente intuibile: due elementi sono in relazione se c è un legame tra loro descritto da una certa proprietà; ad esempio,
La Programmazione Lineare
4 La Programmazione Lineare 4.1 INTERPRETAZIONE GEOMETRICA DI UN PROBLEMA DI PROGRAMMAZIONE LINEARE Esercizio 4.1.1 Fornire una rappresentazione geometrica e risolvere graficamente i seguenti problemi
Capitolo 6. Soluzione degli esercizi a cura di Rosa Falotico
Capitolo 6 Soluzione degli esercizi a cura di Rosa Falotico Esercizio 6.1 Dopo aver notato che quando le modalità si presentano con frequenze unitarie, la formula per il calcolo della media si semplifica,
x 1 + x 2 3x 4 = 0 x1 + x 2 + x 3 = 0 x 1 + x 2 3x 4 = 0.
Problema. Sia W il sottospazio dello spazio vettoriale R 4 dato da tutte le soluzioni dell equazione x + x 2 + x = 0. (a. Sia U R 4 il sottospazio dato da tutte le soluzioni dell equazione Si determini
Regressione Mario Guarracino Data Mining a.a. 2010/2011
Regressione Esempio Un azienda manifatturiera vuole analizzare il legame che intercorre tra il volume produttivo X per uno dei propri stabilimenti e il corrispondente costo mensile Y di produzione. Volume
ESERCIZI SVOLTI PER LA PROVA DI STATISTICA
ESERCIZI SVOLTI PER LA PROVA DI STATISTICA Stefania Naddeo (anno accademico 4/5) INDICE PARTE PRIMA: STATISTICA DESCRITTIVA. DISTRIBUZIONI DI FREQUENZA E FUNZIONE DI RIPARTIZIONE. VALORI CARATTERISTICI
Ai fini economici i costi di un impresa sono distinti principalmente in due gruppi: costi fissi e costi variabili. Vale ovviamente la relazione:
1 Lastoriadiun impresa Il Signor Isacco, che ormai conosciamo per il suo consumo di caviale, decide di intraprendere l attività di produttore di caviale! (Vuole essere sicuro della qualità del caviale
LE FIBRE DI UNA APPLICAZIONE LINEARE
LE FIBRE DI UNA APPLICAZIONE LINEARE Sia f:a B una funzione tra due insiemi. Se y appartiene all immagine di f si chiama fibra di f sopra y l insieme f -1 y) ossia l insieme di tutte le controimmagini
IL SISTEMA INFORMATIVO
LEZIONE 15 DAL MODELLO DELLE CONDIZIONI DI EQUILIBRIO AL MODELLO CONTABILE RIPRESA DEL CONCETTO DI SISTEMA AZIENDALE = COMPLESSO DI ELEMENTI MATERIALI E NO CHE DIPENDONO RECIPROCAMENTE GLI UNI DAGLI ALTRI
STATISTICA IX lezione
Anno Accademico 013-014 STATISTICA IX lezione 1 Il problema della verifica di un ipotesi statistica In termini generali, si studia la distribuzione T(X) di un opportuna grandezza X legata ai parametri
Forze come grandezze vettoriali
Forze come grandezze vettoriali L. Paolucci 23 novembre 2010 Sommario Esercizi e problemi risolti. Per la classe prima. Anno Scolastico 2010/11 Parte 1 / versione 2 Si ricordi che la risultante di due
Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno
Rappresentazione di numeri Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno Un numero e un entità teorica,
Matematica e Statistica
Matematica e Statistica Prova d esame (0/07/03) Università di Verona - Laurea in Biotecnologie - A.A. 0/3 Matematica e Statistica Prova di MATEMATICA (0/07/03) Università di Verona - Laurea in Biotecnologie
Capitolo 13: L offerta dell impresa e il surplus del produttore
Capitolo 13: L offerta dell impresa e il surplus del produttore 13.1: Introduzione L analisi dei due capitoli precedenti ha fornito tutti i concetti necessari per affrontare l argomento di questo capitolo:
ANALISI DELLE FREQUENZE: IL TEST CHI 2
ANALISI DELLE FREQUENZE: IL TEST CHI 2 Quando si hanno scale nominali o ordinali, non è possibile calcolare il t, poiché non abbiamo medie, ma solo frequenze. In questi casi, per verificare se un evento
Esercizi svolti sui numeri complessi
Francesco Daddi - ottobre 009 Esercizio 1 Risolvere l equazione z 1 + i = 1. Soluzione. Moltiplichiamo entrambi i membri per 1 + i in definitiva la soluzione è z 1 + i 1 + i = 1 1 + i z = 1 1 i. : z =
Consideriamo due polinomi
Capitolo 3 Il luogo delle radici Consideriamo due polinomi N(z) = (z z 1 )(z z 2 )... (z z m ) D(z) = (z p 1 )(z p 2 )... (z p n ) della variabile complessa z con m < n. Nelle problematiche connesse al
Tecniche di analisi multivariata
Tecniche di analisi multivariata Metodi che fanno riferimento ad un modello distributivo assunto per le osservazioni e alla base degli sviluppi inferenziali - tecniche collegate allo studio della dipendenza
Polli e conigli. problemi Piano cartesiano. Numeri e algoritmi Sistemi e loro. geometrica. Relazioni e funzioni Linguaggio naturale e
Polli e conigli Livello scolare: primo biennio Abilità Interessate Calcolo di base - sistemi Risolvere per via grafica e algebrica problemi che si formalizzano con equazioni. Analizzare semplici testi
Introduzione al MATLAB c Parte 2
Introduzione al MATLAB c Parte 2 Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ 18 gennaio 2008 Outline 1 M-file di tipo Script e Function Script Function 2 Costrutti di programmazione
Metodologia per l analisi dei dati sperimentali L analisi di studi con variabili di risposta multiple: Regressione multipla
Il metodo della regressione può essere esteso dal caso in cui si considera la variabilità della risposta della y in relazione ad una sola variabile indipendente X ad una situazione più generale in cui
risulta (x) = 1 se x < 0.
Questo file si pone come obiettivo quello di mostrarvi come lo studio di una funzione reale di una variabile reale, nella cui espressione compare un qualche valore assoluto, possa essere svolto senza necessariamente
Teoria dei Giochi. Anna Torre
Teoria dei Giochi Anna Torre Almo Collegio Borromeo 14 marzo 2013 email: [email protected] sito web del corso:www-dimat.unipv.it/atorre/borromeo2013.html IL PARI O DISPARI I II S T S (-1, 1) (1, -1)
LA MASSIMIZZAZIONE DEL PROFITTO ATTRAVERSO LA FISSAZIONE DEL PREZZO IN FUNZIONE DELLE QUANTITÀ
LA MASSIMIZZAZIONE DEL PROFITTO ATTRAVERSO LA FISSAZIONE DEL PREZZO IN FUNZIONE DELLE QUANTITÀ In questa Appendice mostreremo come trovare la tariffa in due parti che massimizza i profitti di Clearvoice,
Capitolo 2 Distribuzioni di frequenza
Edizioni Simone - Vol. 43/1 Compendio di statistica Capitolo 2 Distribuzioni di frequenza Sommario 1. Distribuzioni semplici. - 2. Distribuzioni doppie. - 3. Distribuzioni parziali: condizionate e marginali.
ESERCIZI DI ALGEBRA LINEARE E GEOMETRIA
ESERCIZI DI ALGEBRA LINEARE E GEOMETRIA Francesco Bottacin Padova, 24 febbraio 2012 Capitolo 1 Algebra Lineare 1.1 Spazi e sottospazi vettoriali Esercizio 1.1. Sia U il sottospazio di R 4 generato dai
STUDIO DI UNA FUNZIONE
STUDIO DI UNA FUNZIONE OBIETTIVO: Data l equazione Y = f(x) di una funzione a variabili reali (X R e Y R), studiare l andamento del suo grafico. PROCEDIMENTO 1. STUDIO DEL DOMINIO (CAMPO DI ESISTENZA)
Le funzioni continue. A. Pisani Liceo Classico Dante Alighieri A.S. 2002-03. A. Pisani, appunti di Matematica 1
Le funzioni continue A. Pisani Liceo Classico Dante Alighieri A.S. -3 A. Pisani, appunti di Matematica 1 Nota bene Questi appunti sono da intendere come guida allo studio e come riassunto di quanto illustrato
Epoca k Rata Rk Capitale Ck interessi Ik residuo Dk Ek 0 S 0 1 C1 Ik=i*S Dk=S-C1. n 0 S
L AMMORTAMENTO Gli ammortamenti sono un altra apllicazione delle rendite. Il prestito è un operazione finanziaria caratterizzata da un flusso di cassa positivo (mi prendo i soldi in prestito) seguito da
FUNZIONE REALE DI UNA VARIABILE
FUNZIONE REALE DI UNA VARIABILE Funzione: legge che ad ogni elemento di un insieme D (Dominio) tale che D R, fa corrispondere un elemento y R ( R = Codominio ). f : D R : f () = y ; La funzione f(): A
Esercizi su lineare indipendenza e generatori
Esercizi su lineare indipendenza e generatori Per tutto il seguito, se non specificato esplicitamente K indicherà un campo e V uno spazio vettoriale su K Cose da ricordare Definizione Dei vettori v,,v
f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da
Data una funzione reale f di variabile reale x, definita su un sottoinsieme proprio D f di R (con questo voglio dire che il dominio di f è un sottoinsieme di R che non coincide con tutto R), ci si chiede
CURRICULUM SCUOLA PRIMARIA MATEMATICA
Ministero dell istruzione, dell università e della ricerca Istituto Comprensivo Giulio Bevilacqua Via Cardinale Giulio Bevilacqua n 8 25046 Cazzago San Martino (Bs) telefono 030 / 72.50.53 - fax 030 /
