Elementi Excel Avanzato · Elementi Excel Avanzato Argomenti: Numeri casuali Grafico XY con linea...
Transcript of Elementi Excel Avanzato · Elementi Excel Avanzato Argomenti: Numeri casuali Grafico XY con linea...
Elementi Excel Avanzato
Argomenti:
Numeri casuali
Grafico XY con linea di tendenza
Considerazioni di carattere statistico sull’esempio
La funzione SE
La funzione CERCA.VERT
Filtri Automatici
Tabelle Pivot
Risolutore
Nota bene: la versione di riferimento qui usata è la 2007 in Italiano.
Legame (pseudo) casuale in Excel
Supponiamo di avere una situazione tipo la seguente:
I numeri della colonna Y possono essere quelli che si preferisce ma perché l’esempio abbia senso
devono contenere un minimo di casualità, andando così a simulare risultati sperimentali di misure.
“Un minimo” vuol dire che sono o del tutto casuali (vedi di seguito il “Breve Inciso”) o che hanno una
parte casuale (vedi “Trovare un esempio che dà più soddisfazione”).
Breve Inciso sui numeri casuali
Nell’esempio sono stati messi numeri puramente casuali fra 0 e 100, che con Excel è possibile
calcolare con questa funzione (da scrivere in tutte le celle fra C3 e C17):
100*CASUALE()
Notare che la generazione di numeri casuali in un PC viene fatta a partire da un valore di data (con
minuti, secondi etc…) corrente. In sostanza questi valori tutte le volte che modificate il file (aggiungete
o togliete qualcosa o date F9, cioè “Aggiorna”) cambiano, diventando ad esempio:
Questo comportamento è di norma non desiderato. Per fare in modo ce i valori casuali, una volta
“calcolati” rimangano sempre quelli non resta che sostituire alle formule i valori in questo modo:
Selezionare l’intervallo C3:C17
Tasto DX del Mouse/Copia
Tasto DX del Mouse/Incolla Speciale (Scegliendo l’opzione Valori)
Ovvero:
Come si vedrà adesso nelle celle non ci sono più formule ma appunto valori fissi tipo
48,8270470755895
Grafico XY con linea di tendenza
Passiamo adesso al grafico vero e proprio. Inseriamo un grafico XY selezionando l’area dati e poi
prendendo la prima tipologia di “Grafico a Dispersione” (scheda “Inserisci”):
Excel è “abbastanza intelligente” da capire che nella prima colonna ci sono i valori di X (variabile
indipendente) e nella seconda i valori di Y (variabile indipendente) e che X e Y sono i nomi delle due
serie di valori, quindi facendo come sopra si ottiene questo:
Il grafico l’abbiamo già fatto, adesso occorre formattarlo come si desidera e aggiungere la linea di
tendenza.
Premesso che alcune cose si possono editare direttamente (ad esempio il titolo, il carattere delle
scritte etc…), alle proprietà del grafico si accede con un Click Destro del Mouse sull’area sfruttando una
di queste due funzioni del menu contestuale:
In questo caso la linea di tendenza è riferita non al grafico ma alla serie in azzurro (un grafico in
generale può contenere più serie, ad esempio Vendite (Y1) e Costi (Y2) vs Anni (X)), quindi bisogna
selezionare uno dei punti di questa serie, fare click destro e in scegliere la funzione “aggiungi linea
di tendenza”:
Otteniamo la finestra “formato linea di tendenza” con cui possiamo scegliere che curva vogliamo e
quale formattazione deve avere. Noi facciamo le selezioni sotto evidenziate:
Al netto di qualche formattazione di pura estetica (fatta con le funzioni precedentemente illustrate),
questo è il risultato finale:
Breve Inciso sul significato statistico dell’esempio
Abbiamo preso un insieme di valori (Y) e abbiamo calcolato qual è la retta migliore per approssimare il
legame (X;Y). Questo vuol dire che se volessimo calcolare Y di 6,5 (dove non esiste alcuna misura)
potremmo farlo così:
Questa approssimazione del legame sperimentale fra X e Y è buona? Non tanto, e quindi non è molto
consigliabile usarla per fare interpolazioni come quella del 6,5. Perché? Beh, perché stiamo cercando di
approssimare una nuvola di punti molto sparsa con una retta. Le cose potevano cambiare un po’ in
meglio scegliendo una nuova linea di regressione, ad esempio una polinomiale che avrebbe seguito
meglio il profilo dei nostri punti:
Come si vede R2 è aumentato. Infatti questo valore è un indice della bontà della nostra linea (o curva)
approssimante. Che cos’è R? Nel caso rettilineo è il cosiddetto coefficiente di Pearson che si calcola con
questa funzione Excel:
Abbiamo dunque, come ci aveva anticipato l’equazione sul grafico:
Matematicamente R è la covarianza fra X e Y divisa per il prodotto delle deviazioni standard delle due
variabili, ossia risulta in formule:
Abbiamo questi fatti:
se R>0, allora se cresce X, (mediamente) cresce Y, se R<0 decresce (come nell’esempio)
più R è vicino a 1 più Y e X sono legate (ovvero Y dipende da X) e il loro legame è una retta
Questo coefficiente viene anche detto “correlazione”. Se è alto (diciamo sopra 0,6-0,7) si dice che le due
variabili sono correlate, espressione abbastanza diffusa anche nel linguaggio comune.
Ed R2 cos’è? E’ la cosiddetta varianza spiegata (percentuale) dal nostro modello statistico, ovvero
quanta della varianza della Y originaria si ritrova nella Y prevista dal modello. In generale (ossia nel
caso lineare, ma anche polinomiale, esponenziale etc..), detti:
Y1,Y2 etc.., i valori della y del campione
MY, il valore della media aritmetica dei precedenti
Yp1, Yp2 etc…, i valori della y previsti1
il suo calcolo viene fatto così:
Essendo:
ESS = Explained Sum of Squares = (Yp1-MY)2+(Yp2-MY)2+ ... 1 Nell’esempio specifico con la nostra funzione y = -1,7804x + 54,687, nel caso di altri tipi di regressione con funzioni matematiche di altro tipo.
TSS = Total Sum of Squares = (Y1-MY)2+(Y2-MY)2+ ...
RSS = Residual Sum of Squares = (Y1-Yp1)2+(Y2-Yp2)2+ ...
Nel caso lineare è possible utilizzare delle formule semplificate, per cui:
R2 è proprio il quadrato della quantità R sopra definita (=PEARSON() in Excel)
b = pendenza della retta di regressione = (x/y)*R
Qualche verifica applicativa per capire meglio. Vediamo intanto che R2 corrisponde effettivamente al
rapporto fra varianza calcolata e reale. Riprendiamo il nostro quadro numerico:
Esso è uguale a quello iniziale ma ha in più (a parte un inserimento “estetico” di colonna) queste
formule:
C18 = VAR(C3:C17)
D18 = VAR(D3:D17)
E18 = VAR(E3:E17)
F18 =E18/D18
La varianza della Y calcolata è poco più di 1/10 dell’altra, ovvero la Y calcolata “non ce la fa” a seguire
adeguatamente la “cromaticità” della variabile che vorrebbe inseguire. Ok.
Che questo valore (R2) corrisponde effettivamente a R*R dove R=PEARSON()=-0,338 lo avevamo già
visto. Rimane la verifica sulla pendenza della retta di regressione:
b = -RADQ(F18*D18/C18) = -1,780
Come Volevasi Dimostrare.
In conclusione e in generale:
Abbiamo trovato dei parametri statistici complessivi che ci permettono di descrivere
abbastanza bene un campione, ovvero media, deviazione standard di X e Y, coefficiente di
correlazione, coefficienti della retta di regressione e coefficiente di determinazione o R2.
Questi parametri si possono trovare con Excel con le funzioni MEDIA(), DEV.ST(), PEARSON() e
con le opzioni “Visualizza l’equazione sul grafico” e “Visualizza il valore di R al quadrato sul
grafico” di “Aggiungi linea di tendenza”;
R2 (scritto da Excel sul grafico, ovvero calcolato manualmente con la formula 1-ESS/TSS o sue
equivalenti) ci dice la percentuale della variabilità originaria siamo riusciti a includere nel
modello. Più ci si avvicina ad uno e meglio è.
R (calcolato con la funzione PEARSON(X,Y)) ci dice se X e Y si possono interpretare come
concordi o discordi (cresce una, cresce o decresce l’altra) e quanto sono interdipendenti
(0=indipendenza totale, 1=dipendenza totale e legame lineare). La differenza fra l’R2 ottimale
ed R*R ci dice quanto il campione si presta ad essere approssimato da una relazione (non)
lineare.
Punti di attenzione: R potrebbe essere vicino a 1 senza che il legame sia lineare e viceversa può
essere vicino a zero se si ha dipendenza anche forte ma non lineare. R ed R2 per essere
significativi devono essere “robusti” cioè non variare di molto se non si considera una parte
qualunque, minoritaria, del campione. Quindi, è importante anche guardare con i propri occhi
il grafico dei dati e non solo gli indicatori sintetici. Infine: Vogliamo trovare una relazione che
valga sul campione o sulla popolazione? (Per questo vedi di seguito).
Ne deriva che in questo esempio, usando l’approccio della regressione lineare, siamo stati capaci di
riprodurre solo l’11% della dinamica originaria. Abbiamo, infatti, descritto come proporzionali e
quindi dipendenti due variabili discordi (e fin qui nessun problema) che in realtà sono molto
indipendenti (R=-0,33). Insomma, come statistici non siamo stati gran che…
Trovare un esempio che dà più soddisfazione
Il problema dell’esempio precedente è che il dataset originario era troppo casuale e, se Y è puramente
casuale, è ovvio che non è legato (idealmente) a niente, quindi nemmeno a X. Proviamo, in altri termini,
a mettere in Y una formula in cui la casualità sia solo una parte residua, es.:
C3=(1+CASUALE())*B3
In questo caso il rapporto fra la media della parte deterministica (8) e casuale (4,1) è quasi di 2:1
quindi il caso “sporca” solo per 1/3 il rapporto y/x. Dunque tale rapporto viene approssimato bene da
una retta che ricostruisce correttamente la variabilità del campione:
Ancora qualche domanda teorica
Ora che abbiamo trovato una buona formula per il dataset iniziale, che ne ricostruisce bene media e
variabilità, il campione iniziale (al netto dei margini di approssimazione) mi serve a qualcosa o posso
dimenticarlo?
In generale la risposta è “non va dimenticato”, perché ulteriori analisi potrebbero costringerci a
riprenderlo in considerazione per costruire approssimazioni diverse/migliori. Il campione nella sua
interezza è poi utile anche verificare che la formula trovata non cambi troppo escludendo una piccola
parte del campione (eccessiva sensibilità ai valori anomali o outliers)
Inoltre: dove vogliamo utilizzare la nostra linea di tendenza? Se è per interpolazioni dentro il
range della variabile dipendente del campione (es. x fra 1 e 15) può anche aver senso andare senza
troppi indugi alla ricerca di R alti, anche con funzioni complesse, ad esempio polinomiali.
Se però tale linea va usata per previsioni/estrapolazioni (ad esempio trovare l’Y atteso in
corrispondenza di X=18) bisogna stare attenti a generare delle predizioni accettabili. Specie con
funzioni non lineari capita spesso che queste risultino eccessivamente specializzate sul campione
(overfitting) – ad esempio avendo un andamento troppo rapidamente crescente/decrescente per
X>16). Inoltre: attenzione alla decomposizione del valori del campione in Trend, Stagionalità ed
Errore, cosa che è abbastanza difficile fare in Excel e che, ad esempio, si può fare con il modulo Time
Series di R.
La funzione SE(.)
La funzione probabilmente più importante per un utilizzo avanzato di Excel è senz’altro il SE(.). Il suo
utilizzo base è molto semplice ed è riconducibile a questo formato:
=SE(condizione,output_se_vero, output_se_falso)
Così ad esempio se scriviamo nella casella C3 quanto segue:
=SE(B3="Rosso";"Mi Piace !!!!";"Non mi piace")
(e così anche nelle celle sottostanti ma riferito a B4, B5…) otteniamo questo output (dal che
apprendiamo che la funzione SE(.) quando nella condizione ha confronti fra stringhe è key
insensitive):
I valori di output possono essere stringhe ma anche numeri e date. La condizione può coinvolgere
anche funzioni molto complicate. Sono espressioni valide tutte le seguenti:
Espressione Note =SE(B3>0;1;0) Ha senso se B3 è numerico =SE(B3="Persona Fisica";C3 & " " & D3;"") Concatena nome (C3) e cognome (D3) solo se si
sta parlando di una Persona Fisica, altrimenti lascia vuota la cella
=SE(SOMMA(B3:B8)>C5; "In attivo";"In perdita") La condizione in questo caso è un’espressione che coinvolge un intervallo e una cella
Da notare che SE() è a sua volta una funzione, ossia qualcosa che ritorna un valore. Quindi sono
ammissibili anche somme o prodotti di funzioni SE o funzioni SE a cascate, utili per classificazioni
secondo condizioni complesse. Esempi:
Espressione Note =SE(B3>0;1;0)*SE(C3>0;1;1)
La cella dove è contenuta questa espressione è 1 se B3 e C3 sono tutte e due positive altrimenti è zero.
= SE(B3>0;SE(C3>0;1;0);0) Modo analogo per esprimere la condizione precedente ma con due SE innestati.
=SE(E((B3>0);(C3>0));1;0) Modo ancora analogo ma con l’utilizzo della funzione E() che restituisce una valore vero se tutti i suoi argomenti sono veri.
=SE(O((B3>0);(C3>0));1;0) La cella dove è contenuta questa espressione è 1 se B3>0 oppure (funzione logica O() simile alla E() vista prima) C3>0 altrimenti è zero.
= SE(SE(B3>0;1;0)+SE(C3>0;1;1)>1;1;0)
Modo analogo per ottenere quanto sopra. Il SE più esterno serve per gestire il caso in cui B3>0 e C3>0 e mettere nella cella 1 (e non 2).
=2*SE(B3="S";1;0)+ 3*SE(C3="S";1;0) Se rispondi “S” alla prima domanda (risposta da mettere in B3) 2 punti, se rispondi “S” alla seconda (in C3), 3 punti.
Insomma, la funzione SE è un vero coltellino svizzero, che permette di ottenere risultati quasi da
linguaggio di programmazione senza dover scrivere codice vero e proprio.
Nota bene: attenzione nel fare il copia/incolla da questo file ad Excel al carattere doppie virgolette (ad
esempio quello che normalmente usa il Cambria, usato nelle colonne a destra, non va bene).
La funzione CERCA.VERT()
Questa funzione è per certi versi un SE che opera non su una singola condizione ma su una matrice. In
pratica prende il valore di una cella e lo confronta con tutte le celle di una specifica colonna di una
matrice. Se trova qualcosa, restituisce quel valore o il valore che si trova in una colonna adiacente,
dalla parte destra.
Vediamo un esempio. Supponiamo di avere il seguente listino (in sola lettura, condizione evidenziata
dalle celle in grigio, contenente un massimo di 10 articoli):
Vogliamo utilizzarlo per riempire le celle descrizione e far apparire i totali di imponibile, iva e totale
inserendo i codici articoli in questa tabella:
dove:
K11 = SOMMA(K2:K10)
K12= K11*0,22
K13=K11+K12
La cosa si può ottenere inserendo nelle celle I2 e K2 (poi I3 e K3 etc..) questi comandi:
I2=CERCA.VERT(H2;$A$1:$C$10;2;FALSO)
K2=J2*CERCA.VERT(H2;$A$1:$C$10;3;FALSO)
Ecco un esempio di funzionamento:
In realtà c’è un ultimo pezzo da aggiungere. Facendo esattamente come indicato sopra con quell’input
avremmo ottenuto questo:
Tutti questi #N/D (=errore di non disponibile) derivano dal fatto che ad esempio nella cella H5 non c’è
alcun articolo, quindi CERCA.VERT non riesce a trovare né la corrispondente descrizione né il
corrispondente prezzo unitario nella matrice. Il problema principale è che questi #N/D fanno saltare le
formule di Imponibile, IVA 22% e Totale perché ad esempio:
1800+600+500+#N/D=#N/D
Come risolvere questo problema? Con la funzione se e una ulteriore funzione chiamata VAL.ERRORE()
che vale VERO se il suo argomento è #N/D (ma anche #DIV/0! etc.., insomma un valore di tipo
ERRORE), FALSO altrimenti. Ecco il codice della prima riga
=J2*SE(VAL.ERRORE(CERCA.VERT(H2;$A$1:$C$10;3;FALSO))=VERO;0;CERCA.VERT(H2;$A$1:$C$10;
3;FALSO))
Ecco il conseguente risultato finale:
Filtri Automatici
Supponiamo di avere un quadro di questo tipo contenenti voci di spesa di una serie di persone in
alcune date:
Selezionando l’intero foglio (o le 4 colonne A,B,C,D come nell’esempio) e poi attivando la modalità
Dati/Filtro come in figura
…compaiono delle linguette accanto ai nomi dei campi. Cliccando su queste possiamo visualizzare ad
esempio tutte le spese di marco, oppure tutte quelle di carburante inferiori a 10 euro (in questo caso il
risultato sarà nessuna) e via dicendo:
Per disattivare la modalità filtro, basta cliccare nuovamente sull’imbuto.
Da notare che con la maschera precedente si può ordinare la colonna (e di conseguenza i dati nelle
colonne adiacenti) in modo crescente, decrescente o per colore. In più si possono anche impostare
filtri per testo e/o filtri complessi, tipo questo:
Tabella Pivot
Consideriamo l’esempio precedente e in un foglio nuovo attiviamo la funzione Inserisci/Tabella Pivot
Excel chiederà un’area dati: diamogli tutte le colonne del primo foglio
…e poi diamo OK. Otteniamo questa struttura, dove trascinando nelle varie sezioni, ad esempio:
Si possono ottenere report tipo questo (a meno di alcune formattazioni):
La tabella si chiama Pivot perché i campi possono girare, dalla zona riga alla zona colonne
oppure essere messi uno sotto l’altro realizzando gerarchie.
Le tabelle pivot sono uno strumento molto utile in analisi dati perché permettono il cosiddetto drill
down che è l’unico approccio quando i dati sono molti (es. migliaia di righe, oltre le 50.000 è
sconsigliabile usare Excel): partire da aggregati, vedere dove stanno le anomalie o i valori più
interessanti e andare a capire il dato di dettaglio da cui dipendono.
Risolutore
Excel possiede anche delle librerie abbastanza potenti per la risoluzione dei sistemi, lineari e non con
metodi iterativi. Supponiamo di dover risolvere questo sistema:
-3x+y=0
2y2+10x2=8
E’ un sistema non lineare di tipo polinomiale di due equazioni in due incognite, quindi avrà due
soluzioni. La cosa si può vedere esplicitando le due equazioni rispetto ad y e poi rappresentando con
dei grafici:
L’esempio è in due incognite ma è ovvia la possibilità di generalizzarlo a 3,4,5 etc… (ovviamente il
grafico di cui sopra possiamo farlo solo nel caso di due). Ora, possiamo riscrivere il sistema come
segue:
F1=-3*x1+x2
F2=2*x2^2+10*x1^2-8
volendo quelle coppie x1,x2 per cui:
F1=0
F2=0
Il risolutore ha bisogno di un punto di innesco, ovvero sapere un punto vicino al quale cercare la sua
soluzione. Nel nostro caso per la soluzione nel primo quadrante potremo puntare, come si vede dal
grafico, sul punto [0.5,1.0] mentre l’altra sarà vicino [-0.5,-1.0] (avrei potuto prendere anche -0.7,-1,4
andava bene lo stesso).
Allora, impostiamo questo foglio:
dove:
C5=-3*C2+C3
C6=2*C3^2+10*C2^2-8
C7= RADQ(C5^2+C6^2)
Quello che vogliamo fare è in sostanza lasciare Excel libero di “giocare” con x1 e x2 cercando di
minimizzare modulo(F) che è zero se F1 e F2 sono zero come vogliamo:
Per farlo normalmente occorre prima attivare il modulo opzionale “risolutore”, ovvero procedere
come segue a partire dalle opzioni:
Qui si è messo anche gli Strumenti di Analisi in cui potremo curiosare più avanti. Troviamo i nostri
strumenti nella scheda dati, un po’ nascosti:
Lanciamo quindi il nostro “Risolutore” a cui daremo l’obiettivo di far arrivare la cella dov’è il modulo
(C7) a zero agendo su quelle dove sono x1 e x2 (C5 e C6):
Premendo risolvi otteniamo questo risultato:
Il risolutore è andato a prendere la soluzione nel primo quadrante perché è partito da un punto lì
vicino. Se mettevamo come valor iniziali x1=-0,5 e x2=-1,0 avremmo ottenuto l’altra: