Master di II livello in
BIG DATA ANALYTICS AND TECHNOLOGIES FOR MANAGEMENT
A.A. 2015/2016
Creazione ed implementazione di
grafi ad albero su R
Il presente lavoro ha come scopo la creazione di script che utilizzano il linguaggio di programmazione
R per la creazione di alberi delle probabilit, una modificazione degli alberi degli eventi che
includono anche le probabilit condizionate degli eventi. Gli alberi trovano applicazione in
moltissimi problemi appartenenti a svariate discipline e un loro utilizzo frequente nel valutare le
alternative delle decisioni, dove consentono di valutare tutte le possibili alternative. Per questo
possono essere un valido strumento in mano al decisore. Tali script pertanto possono essere pensati
come strumenti di ausilio nel mano del decisore, per semplificare la gestione delle decisioni e poter
valutare pro e contro di ogni possibile azione o scelta, semplificando cos il processo decisionale.
Nello studio vengono presi in considerazione degli esempi per mostrare i loro potenziali e limiti.
Indice
1. Alberi e grafi
Ogni cammino dalla radice alla foglia rappresenta una possibile via cui il decisore crede le situazioni
possano svilupparsi. I lati lungo questo percorso etichettano la sequenza di eventi che descrivono
questo sviluppo. Si parla di albero degli eventi se il fenomeno studiato non dipendente dal
decisore, ma solo dalla natura del fenomeno stesso. In un albero degli eventi ogni suo lato etichetta
certe importanti eventi condizionati nella storia. Ogni lato pu essere accompagnato dalle
informazioni relative alle probabilit condizionata degli eventi stessi. In questo caso lalbero degli
eventi si chiama albero delle probabilit. Nel presente capitolo vengono analizzati le definizioni di
tali alberi e viene data una rapida introduzione ad alcuni concetti probabilistici usati nel seguito.
Un grafo una struttura matematica costituita da nodi o vertici che possono essere collegati tra loro
da linee chiamate archi, percorsi o cammini. Detto linsieme dei vertici (finito e non vuoto) ed
un sottoinsieme del prodotto cartesiano di , un grafo una coppia = (, ). Gli
elementi di sono chiamati vertici o nodi (nodes), mentre gli elementi di sono chiamati spigoli o
archi (edges).
Ad esempio siano V = {1,2,3,4} e E = {(1,3); (1,2); (2,4); (3,4); (4,1)} la coppia di punti = (, ),
definisce un grafo raffigurato nel seguente modo:
1
4
Si distinguono due tipi basilari di grafi: i grafi orientati (o grafi diretti) e i grafi non orientati (o grafi
indiretti):
- Un grafo diretto od orientato una coppia (, ), definito da un insieme non vuoto e
da una relazione binaria su , ossia un insieme di coppie ordinate di elementi di . Un "arco
orientato" un arco caratterizzato da una direzione. In particolare, composto da una
"testa" (rappresentata solitamente dalla punta di una freccia), che si dice raggiunge un
vertice in entrata, e una "coda", che lo lascia in uscita.
1
Creazione ed implementazioni di grafi ad albero su R
Un grafo ad albero diretto = (( ), ( )) un grafo diretto con due propriet ulteriori. Primo
di tutto ha un solo vertice senza nodi parenti chiamato vertice radice 0 ( ). Secondo tutti gli
altri vertici hanno un solo parente .
Un albero con radice un albero con un vertice contraddistinto come radice. Ricordiamo che in un
albero, esiste un solo cammino fra due vertici qualsiasi u e v; se L la lunghezza di tale cammino
diremo anche che L la distanza fra u e v. Fissato arbitrariamente un vertice r come radice per
ciascun nodo esiste uno ed un solo cammino che lo collega alla radice; tale cammino si chiama
cammino caratteristico del nodo. Convenzionalmente il vertice radice posizionato in alto e
rappresenta il punto di partenza del problema.
Si definisce altezza di un nodo, n, la lunghezza del cammino (ovvero il numero di archi che
attraversiamo) che collega la radice al nodo n.
Altezza 0
Altezza 1
Altezza 2
Altezza 3
Figura 2 - Altezza dei nodi
1
https://it.wikipedia.org/wiki/Albero_(grafo)
2
Creazione ed implementazioni di grafi ad albero su R
La lunghezza del cammino caratteristico di un nodo si chiama livello del nodo. Ne deriva che un
albero pu essere disegnato disponendo i vertici su righe successive in relazione alla loro distanza
dalla radice (cio nel loro livello): nella prima riga viene fissato il vertice r, nella seconda riga tutti i
vertici a livello 1 da r, nella terza riga i vertici a distanza 2 da r, ecc Per esempio il grafo della figura
sottostante un albero perch ciascuno nodo connesso ed privo di cicli.
Fissando in ciascuno di essi come radice un vertice, ad esempio il vertice r, si ottiene un albero con
radice e disponendo i vertici su righe successive in relazione alla loro distanza dalla radice si ottiene
il classico layout ad albero.
3
Creazione ed implementazioni di grafi ad albero su R
Osserviamo inoltre che possibile ordinare un albero finito con radice dando in modo naturale ad
ogni nodo un indice. In tal caso lordine imposto ai nodi dato dalla successione finita di numeri
naturali associata ad ogni nodo, la lunghezza della successione uguale al livello del nodo; la
successione associata alla radice vuota. Nella figura successiva nellalbero con radice
precedentemente visto sono stati assegnati gli indici in modo naturale ai suoi nodi.
4
Creazione ed implementazioni di grafi ad albero su R
Spesso si pu usare un diagramma ad albero per rappresentare i casi possibili. Questo ci permette
di avere un'elencazione grafica di tutti gli elementi dello spazio campione. Se poi si scrive su ciascun
ramo la probabilit dell'evento rappresentato nel nodo seguente, la probabilit di uno qualsiasi degli
eventi sui rami terminali data dal prodotto delle probabilit scritte sull'intero percorso, in quanto
si tratta di un'applicazione diretta della formula delle probabilit composte. In pratica:
Lungo i rami si moltiplicano le probabilit;
Ai margini si addizionano.
SI SOMMANO
= 1.00
5
Creazione ed implementazioni di grafi ad albero su R
Si riportano brevemente le definizioni delle probabilit che verranno implementante nei codici. Per
maggiori dettagli si rimanda a testi specialistici.
Eseguendo la moltiplicazione tra i rami si ottiene la probabilit congiunta degli eventi, ovvero la
probabilit che due o pi eventi si verifichino simultaneamente. Questo dovuto allipotesi di
indipendenza tra gli eventi. Infatti dati due eventi A e B, usando il teorema della probabilit
composta, possibile ottenere la probabilit congiunta degli eventi:
( ) = ( | ) ( )
ovvero la probabilit che si verifichino sia A che B pari alla probabilit che si verifichi B moltiplicata
per la probabilit che si verifichi A supponendo che B sia verificato. Il termine (|) la probabilit
condizionata di A dato B e verr spiegata nel seguito.
Nel caso di alberi delle probabilit lipotesi di indipendenza porta alla seguente propriet:
(|) = () e (|) = ()
che porta quindi alla scrittura della probabilit congiunta nella forma:
( ) = ()()
Il calcolo della probabilit marginale si ottiene sommando le probabilit congiunte degli eventi sulla
quale si vuole marginalizzare. Dati ad esempio due eventi B1 e B2, la probabilit dellevento A, P(A),
pu essere calcolata sommando la probabilit congiunta di A e B1 alla probabilit congiunta di A e
B2:
() = ( 1 ) + ( 2 )
dove B1 e B2 sono eventi mutuamente incompatibili e collettivamente esaustivi, ovvero se non
possono verificarsi entrambi e se almeno uno degli eventi si verifica sicuramente.
6
Creazione ed implementazioni di grafi ad albero su R
7
Creazione ed implementazioni di grafi ad albero su R
Limplementazione dei grafi ad albero viene svolta sul programma RStudio, interfaccia grafica che
utilizza il linguaggio di programmazione R, linguaggio specifico per lanalisi statistica dei dati.2
La corretta esecuzione degli script e la conseguente bont e affidabilit del risultato parte dalla
corretta definizione del file .csv (comma separated values separatori valori con virgola) importato
allinterno degli script.
Per lutilizzo dei seguenti script necessario importare il file csv nel seguente formato:
Esempio 1 2 a1 0.67
In particolare:
Nodo parente e nodo figlio devono essere esplicitati con numeri interi positivi;
Gli eventi devono essere specificati nella forma:
dove:
evento = a,b,c,,z
partizione = 0,1,2,,9
2
Per maggiori dettagli su RStudio e R vedere https://www.rstudio.com/ e https://www.r-project.org/
8
Creazione ed implementazioni di grafi ad albero su R
26 eventi
10 partizioni per evento
NB: Non sono necessarie le virgolette nella scrittura dellevento.
Esempio 1
1, 2, a1, 0.10
1, 3, a2, 0.40
2, 4, b1, 0.45
2, 5, b2, 0.65
3, 6, b1, 0.75
3, 7, b2, 0.25
Esempio 2
9
Creazione ed implementazioni di grafi ad albero su R
La creazione dei grafi ad albero ed il successivo calcolo delle probabilit congiunte, marginali e
condizionate avviene tramite la creazione di appositi script nel programma RStudio.
Gli script vengono costruiti utilizzando le funzioni della libreria Igraph, la quale offre numerosi
algoritmi per la creazione di grafi e la loro rappresentazione. 3 Pertanto per lutilizzo degli script
necessario aver installato prima la libreria igraph. Cio possibile farlo tramite listruzione
allinterno della console di RStudio:
install.packages(igraph)
Gli script vengono commentati tramite la libreria roxygen2 per una eventuale loro implementazione
in un pacchetto.4
X : il file csv da importare tra virgolette, con specificata lestensione del file;
Un valore boleano True o False (anche abbreviato con T ed F) per indicare se la prima riga
contiene i nomi dei dati (True o T se la prima riga contiene i dati, False o F altrimenti). In
particolare se non viene specificato niente tale valore impostato su False.
3
Per maggiori informazioni sulla libreria igraph vedere http://igraph.org/r/
4
Per maggiori informazioni sulla libreria roxygen2 vedere https://cran.r-project.org/web/packages/roxygen2/
10
Creazione ed implementazioni di grafi ad albero su R
La specifica della funzione per la creazione dellalbero degli eventi per gli esempi sopra riportati
avviene quindi nel seguente modo:
makeTree(esempio_1.csv)
makeTree(esempio_1.csv,header=True) o makeTree(esempio_1.csv,T)
Per poter utilizzare gli script successivi necessario attribuire tale funzione ad una variabile, ad
esempio:
net = makeTree(esempio_1.csv)
Lo script il seguente:
11
Creazione ed implementazioni di grafi ad albero su R
plotTree(net)
Si modifica ora la dimensione delle frecce e dei cerchi sui nodi in quanto sono piccoli:
12
Creazione ed implementazioni di grafi ad albero su R
ottenendo cos:
Lo script jointProb utilizza alcune funzioni della libreria igraph per la creazione della probabilit
congiunta di tutti i percorsi radice foglia. Questo codice viene sviluppato sulla base del lavoro
svolto dal Prof.Stefanini. Lo script il seguente:
oggettoCongiunta<-lapply(percorsiRadiceFoglia, function(perco){
probVal<-c()
eventoAll<-""
pathEdNum<-c()
for (aux in 1:(length(perco)-1)){
coppia<-perco[c(aux,aux+1)]
indiceEdges<-get.edge.ids(net, coppia, directed=TRUE, error = FALSE, multi = FALSE);
pathEdNum<-c(pathEdNum, indiceEdges)
probVal<-c(probVal, E(net)$conditionalProbability[indiceEdges]);
evento<-E(net)$event[indiceEdges];
13
Creazione ed implementazioni di grafi ad albero su R
eventoAll<-c(eventoAll, evento);
}
result<-list(path=eventoAll[-1],
pathEdgeNum = pathEdNum,
event = paste(eventoAll[-1], collapse=" & "),
prob = prod(probVal))
return(result)
})
if(stampa){
invisible(lapply(oggettoCongiunta, function(vx){
cat(vx$event, ":prob. ", vx$prob, "\n")
return(NA)
}))
}
oggettoCongiunta
}
Laltro parametro in ingresso consente la stampa del risultato, ed impostato su FALSE ovvero non
stampa il risultato. Per modificarlo sufficiente scrivere TRUE o T. A titolo esemplificativo il calcolo
della probabilit congiunta degli eventi dellesempio 1 :
Lo script margProb consente il calcolo della probabilit marginale delle fasi. Lo script il seguente:
marginalProb<-function(result,object){
numRow<-length(result)
14
Creazione ed implementazioni di grafi ad albero su R
numCol<-length(result[[1]][[1]])
events<-as.character(1:numCol)
Data <- data.frame(matrix(NA,numRow,numCol))
Data
colnames(Data)=sapply(strsplit(result[[1]][[1]],""),function(x){b<-(x[1])})
Data$pro<-sapply(result,function(vx){vx$prob})
marginale<-aggregate(Data$pro,Data[object],sum)
return(marginale)
}
result: la probabilit congiunta degli eventi, ovvero loutput della funzione jointProb;
object: le fasi sulle quali marginalizzare. La loro specifica deve essere tra virgolette e se si
desidera marginalizzare su pi eventi necessario scrivere i dati in forma vettoriale.
La specifica deve quindi prevedere soltanto le fasi interessate, non comprendendo le partizioni degli
eventi. Ad esempio nel caso dellesempio 1, se si desidera marginalizzare rispetto allevento b si ha:
marginalProb(probCongiunta, "b")
## b x
## 1 b1 0.345
## 2 b2 0.165
marginalProb(probCongiunta, c("a","b"))
## a b x
## 1 a1 b1 0.045
## 2 a2 b1 0.300
## 3 a1 b2 0.065
## 4 a2 b2 0.100
15
Creazione ed implementazioni di grafi ad albero su R
Lo script conditionalProb consente il calcolo della probabilit condizionata degli eventi. Lo script il
seguente:
conditionalProb<-function(oggetto,partA,partB){
eventA<-sapply(strsplit(partA,""),function(x){b<-(x[1])})
eventB<-sapply(strsplit(partB,""),function(x){b<-(x[1])})
eventAll<-unlist(list(eventA,(eventB)))
partAll<-unlist(list(partA,partB))
num<-marginalProb(oggetto,c(eventA,eventB))
for (aux in 1:length(partAll)){
num<-num[which(num[eventAll[aux]]==partAll[aux]),]
}
den<-marginalProb(oggetto,eventB)
for (aux in 1:length(eventB)){
den<-subset(den,den[eventB[aux]]==partB[aux])
}
result<-round(num$x/den$x,5)
cat("P(",paste(partA,collapse=","),"|",paste(partB,collapse=","),"): ",result)
return (result)
}
oggetto: la probabilit congiunta degli eventi, ovvero loutput della funzione jointProb;
partA: la probabilit condizionata;
partB: la probabilit condizionante.
Le probabilit condizionate e condizionanti vanno specificate tra virgolette, e nel caso di partizioni
multiple esse vanno specificate utilizzando lelemento vettore di R.
Nel caso dellesempio 1 abbiamo, volendo calcolare la probabilit che si verifichi levento a1 dato
che levento b1 verificato la seguente:
conditionalProb(probCongiunta,"a1","b1")
## P( a1 | b1 ): 0.13043
## [1] 0.13043
16
Creazione ed implementazioni di grafi ad albero su R
Vengono ora riportati degli esempi di utilizzo degli script per alcuni casi studio per evidenziare le
potenzialit e limiti di tale tipologia di calcolo. Gli esempi sono puramente didattici e hanno il solo
scopo di mostrare lutilizzo dei codici.
Il primo esempio di implementazione del codice vuole riguardare il caso studio ampliamente
documentato e citato in letteratura dei test per rilevare la presenza del virus HIV nei pazienti.
Vengono considerati i seguenti test per verificare la presenza del virus HIV nei pazienti:
ELISA
setwd("E:/Tesina/Script")
read.csv("HIV.csv",header = T)
17
Creazione ed implementazioni di grafi ad albero su R
## 2 1 3 a2 0.99520
## 3 2 4 b1 0.93000
## 4 2 5 b2 0.07000
## 5 3 6 b1 0.01000
## 6 3 7 b2 0.99000
La costruzione dell'albero degli eventi, che riporta tutti le possibili combinazioni dei risultati, parte
dalla creazione del grafo ad albero tramite la funzione makeTree:
source('makeTree.R')
treeHIV <- makeTree("HIV.csv",T)
##
## Attaching package: 'igraph'
treeHIV
## IGRAPH DN-- 7 6 --
## + attr: name (v/c), event (e/c), conditionalProbability (e/n)
## + edges (vertex names):
## [1] 1->2 1->3 2->4 2->5 3->6 3->7
18
Creazione ed implementazioni di grafi ad albero su R
Per la visualizzazione grafica si ricorre allo script plotTree che permette la rappresentazione tramite
layout ad albero:
source("plotTree.R")
plotTree(treeHIV)
Tramite il grafo ad albero semplice calcolare la probabilit condizionata che un paziente abbia
l'HIV se il test risulta essere positivo, ovvero P(HIV|+); questa pari alla probabilit congiunta che si
verifichino entrambi le circostanze, P(HIV & +), divisa per la probabilit che il test risulti positivo,
P(+). Scritto in formula diventa:
P(HIV & +)
( |+) =
(+)
Per il calcolo della probabilit condizionata quindi necessario calcolare la probabilit congiunta e
la probabilit marginale degli eventi in questione.
La probabilit cercata quindi quella che si verifichi l'evento "a1" (avere l'HIV) dato che l'evento
"b1" verificato (test positivo Elisa), ovvero P(a1|b1).
source("jointProb.R")
source("margProb.R")
source("conditionalProb.R")
congiunta<-jointProb(treeHIV,T)
cond_1<-conditionalProb(congiunta,"a1","b1")
## P( a1 | b1 ): 0.1215
19
Creazione ed implementazioni di grafi ad albero su R
La probabilit di avere l'HIV dato che il primo test positivo quindi relativamente bassa, pari a
circa il 12%.
Con questo valore possibile calcolare una nuova probabilit a posteriori, in cui la probabilit di
avere l'HIV non pi pari a 0,00148 ma a 0,12.
Per eseguire il secondo test si usa i valori di sensibilit e specificit del Western Blot test (WB).
cond_2<-conditionalProb(congiunta_2,"a1","b1")
## P( a1 | b1 ): 0.93803
La probabilit di avere l'HIV dato che il test Elisa e WB sono risultati entrambi positivi passa adesso
a circa il 94%, molto pi alta rispetto a prima.
E' possibile formulare il problema precedente attraverso un singolo albero degli eventi. E' necessario
sottolineare che gli eventi relativi ai due test sono indipendenti, ovvero che la probabilit del
secondo test non dipende dal risultato del primo test.
20
Creazione ed implementazioni di grafi ad albero su R
congiunta_3<-jointProb(treeHIV_3,T)
cond_3<-conditionalProb(congiunta_3,"a1",c("b1","c1"))
## P( a1 | b1,c1 ): 0.93865
Un decisore (DM) potrebbe a questo punto essere interpellato per valutare la convenienza di
eseguire il secondo test oppure no.
Il decisore quindi prender in considerazione delle azioni (A) che avranno dei risultati incerti che
avranno delle date conseguenze (chiamiamole C) corrispondenti. Una relazione di preferenza
(simboleggiata da <) esprime la preferenza del decisore tra paia di azioni.
Ad esempio a1 < a2 significa che a1 non preferita dal decisore rispetto ad a2.
Per questo calcolo utile il calcolo della Massima Utilit Attesa (MUA), che specifica le preferenze
individuali in condizioni di rischio.
Date le possibili scelte (a1 e a2 nel nostro esempio) con probabilit di realizzazione p1 e p2 il Modello
di Utilit Attesa per esprimere le preferenze ex ante relativamente alle scelte a1 e a2 :
( ) =
dove il prodotto il valore atteso dellevento, ovvero la media ponderata delle azioni con le
relative probabilit.
Nel nostro caso si prende in esame due possibili azioni e conclusioni del decisore:
- a1: fare il test Elisa al costo c1 = 20 $; se positivo conclude che il paziente ha lHIV (HIV +), se negativo
che non ha lHIV (HIV -).
- a2: stesso che nel caso a1, ma nel caso di test positivo eseguire il Western Blot test (WB) al costo
c2 = 100 $; se il WB risulta positivo conclude che il paziente ha lHIV (HIV +), se negativo conclude
che non ha lHIV (HIV -).
21
Creazione ed implementazioni di grafi ad albero su R
I falsi negativi e falsi positivi (L1 e L2) comportano danni al paziente con conseguenti risarcimenti,
specialmente nel caso di falso negativo (L1). Il loro valore va stimato accuratamente e dipende da
molti fattori.
Il secondo caso valuta il caso in cui viene eseguito il secondo test e fornisce la seguente probabilit
congiunta degli eventi con le relative conseguenze:
22
Creazione ed implementazioni di grafi ad albero su R
Secondo il criterio della MAU il decisore dovrebbe scegliere lo scenario a 2 rispetto all'a1 se E2 > E1,
ovvero se:
0,009862133 2 0,01136(c2)
1 < =
4.9764e 06
0,009862133 1000 0,01136 100
= < 1.753.503 $
4.9764e 06
Il decisore quindi portato ad optare per lo scenario a2 finch il risarcimento per il falso negativo
(L1) minore di 1.753.503 $, assumendo che il risarcimento per il falso positivo (L2) sia pari a 1000$
e il WB test costi 100$. Inoltre maggiore il costo del falso positivo, maggiore sar la convenienza
dello scenario a2.
23
Creazione ed implementazioni di grafi ad albero su R
3.2. Esempio 2
Nel secondo esempio viene preso il caso generico di una azienda che dispone dei seguenti dati:
5. Utili anno precedente: negativo, nullo, basso - positivo, medio - positivo, alto - positivo;
6. Investimento pubblicitario: nullo, basso, medio, alto;
7. Prezzo unitario del prodotto: molto basso, basso, medio, alto;
8. Fatturato azienda: basso, medio, alto, molto - alto.
Si suppone in particolare che lazienda abbia a disposizione le probabilit condizionate degli eventi
sopra riportati.
Si assume per che i dati siano indipendenti tra loro, ovvero che il fatturato dellazienda dipenda
solo dal prezzo unitario, il prezzo unitario dipenda solo dallinvestimento pubblicitario e che
linvestimento pubblicitario dipenda solo dallutile dellanno precedente.
Richiamando gli eventi con la notazione utile allimplementazione nello script, gli eventi sopra
riportati diventano:
9. 1fase Utili anno precedente: a1, a2, a3, a4, a5
10. 2fase Investimento pubblicitario: b1, b2, b3, b4
11. 3fase Prezzo unitario del prodotto: c1, c2, c3, c4
12. 4fase Fatturato azienda: d1, d2, d3, d4
Viene creato un file .csv assegnando delle probabilit inventate ma plausibili per la creazione del
grafo ad albero. Si riporta negli allegati il data frame utilizzato per questo caso studio.
Quello che ne risulta :
24
Creazione ed implementazioni di grafi ad albero su R
25
Creazione ed implementazioni di grafi ad albero su R
Il grafico difficilmente leggibile dato il numero elevato di archi, anche cercando di modificare le
impostazioni di plottaggio in modo ottimale.
Utilizzando gli script un decisore pu rispondere ad esempio alla domanda quale la probabilit
che lo scorso anno abbia avuto utili medio - positivo oppure alto - positivo ?
## d x
## 1 d1 0.465
## 2 d2 0.330
## 3 d3 0.137
## 4 d4 0.098
Quindi la probabilit di avere un utile medio positivo pari al 33% e di averlo alto positivo del
13,7%.
1. Qual la probabilit che abbia avuto utili negativi dato che linvestimento in pubblicit stato
nullo?
conditionalProb(congiunta2,"a1","b1")
## P( a1 | b1 ): 0.17423
2. Qual la probabilit che abbia un investimento alto nella pubblicit dato che il fatturato
basso?
conditionalProb(congiunta2,"b4","d1")
## P( b4 | d1 ): 0.1241
3. Qual la probabilit che il prezzo del prodotto sia alto dato che il fatturato stato alto?
conditionalProb(congiunta2,"c4","d4")
## P( c4 | d4 ): 0.45918
26
Creazione ed implementazioni di grafi ad albero su R
4. Conclusioni e sviluppi
Gli script creati nel seguente lavoro nellambiente RStudio utilizzano il linguaggio di
programmazione R, ed in particolare utilizzano la potenzialit e le funzionalit del pacchetto igraph
che consente di poter creare grafi di varie tipologie. Gli script sono divisi per la loro utilit e seguono
un ordine di esecuzione derivante dalla successione delle operazioni svolte. Questi sono:
- makeTree
- plotTree
- jointProb
27
Creazione ed implementazioni di grafi ad albero su R
- marginalProb
- conditionalProb
In ordine, gli script consentono di poter creare un oggetto igraph necessario per la creazione
dellalbero a partire da un file csv opportunamente creato; il plottaggio sotto forma di albero
delloggetto; la creazione della probabilit congiunta di ogni percorso radice-foglia; la creazione
della probabilit marginale a partire dalla probabilit congiunta; la creazione della probabilit
condizionata utilizzando la probabilit congiunta e quella marginale.
Si vuole sottolineare come tali script siano una versione base per la creazione di alberi delle
probabilit e calcolo delle condizionate, e come con successivi sviluppi e integrazioni del codice sia
possibile migliorare o perfino eliminare molti dei limiti sopra esposti.
Molti di questi limiti sono stati superati attraverso limplementazione di altre funzioni, qui non
svolte, come la creazione di file csv tramite script appositi, la possibilit di poter ingrandire larea
di interesse nel caso di alberi di elevate dimensioni, etc... In particolare lutilizzo di altri metodi come
quelli di reti Bayesiane, di grafi multipli e reti neurali risultano estendere maggiormente le
potenzialit di tali strumenti per una maggiore affidabilit dei risultati e aiuto nel processo
decisionale.
Gli script oggetto di tale tesi possono facilmente essere integrati allinterno di una apposita libreria
su R, ampliando le loro potenzialit attraverso la creazione di ulteriori funzioni che superino gli
attuali limiti, rendendosi in questo modo pi facilmente e velocemente utilizzabili e rivelandosi cos
degli ottimi ausili nelle mani del decisore.
28
5. Bibliografia
Giacci, M., Appunti Laboratorio di Algoritmi e Strutture Dati, 2012, Universit degli Studi del Molise
Wikipedia, Albero (grafo), https://it.wikipedia.org/wiki/Albero_(grafo).
Jim Q. Smith, Bayesian Decision Analysis: Principles and Practice, 2000, Department of Statistics,
University of Warwick, Coventry CV4 7AL UK
Dennis V.Lindley, The Philosophy of statistics, 2000, The Statistician, 49, part 3, pp.293-337
R - https://www.r-project.org/
RStudio - https://www.rstudio.com/