Il progetto si compone di due distinti Dataset riferiti alla città di San Francisco e contenenti
rispettivamente le rilevazioni GPS delle generiche corse dei taxi nel periodo tra il 17 Maggio 2008 e
il 10 Giugno 2008 e le rilevazioni GPS effettuate nel periodo tra l' 1 Gennaio 2003 e il 13 Maggio
2015 dai diversi dipartimenti di polizia inerenti ai crimini avvenuti in città, con relativo rapporto
dettagliato su conseguenze, orari, dati geografici.
4. Taxi cabs & crime in S.F. 4
1 Business Problem
1.1 Informazioni generali
Il progetto si compone di due distinti Dataset riferiti alla città di San Francisco e contenenti
rispettivamente le rilevazioni GPS delle generiche corse dei taxi nel periodo tra il 17 Maggio 2008 e
il 10 Giugno 2008 e le rilevazioni GPS effettuate nel periodo tra l' 1 Gennaio 2003 e il 13 Maggio
2015 dai diversi dipartimenti di polizia inerenti ai crimini avvenuti in città, con relativo rapporto
dettagliato su conseguenze, orari, dati geografici.
Figura 1 - Mappa di San Francisco
1.2 Obiettivi e project plan
Vista la composizione del dataset l'idea di fondo per la conduzione delle analisi successive è quella
di suddividere il progetto in tre fasi:
Taxi analysis: fase di esplorazione dei dati sulle rilevazioni GPS delle corse dei taxi al fine di
individuare informazioni rilevanti al riguardo come ad esempio le zone di maggior/minor
affluenza delle corse.
Crime analysis: fase di esplorazione dei dati sui crimini con l'obiettivo di individuare anche
in questo caso informazioni rilevanti come zone di maggior incidenza dei crimini e la loro
tipologia.
Cross analysis: studio della relazione tra i crimini e le corse taxi nelle zone in cui viene
erogato il servizio, con particolare attenzione alle conseguenze che ogni tipologia di
crimine ha comportato nella mobilità del servizio.
A monte delle tre fasi di analisi appena citate verrà effettuata una fase di Data Preparation
condotta parallelamente sui due distinti dataset.
5. Taxi cabs & crime in S.F. 5
2 Taxi Analysis
2.1 Data Understanding
Il dataset denominato cabs.backup contiene le rivelazioni GPS di 536 taxi differenti nel periodo
che va dalle ore 12:00 del 17 Maggio 2008 alle ore 11:25 del 10 Giugno 2008 relativamente
all'intera area di San Francisco. Ogni veicolo in particolare è dotato di un dispositivo di
localizzazione GPS, i dati vengono così trasmessi da ciascun taxi ad una stazione centrale di
ricezione, e poi immagazzinati in tempo reale tramite un server centrale. Questo sistema
trasmette il numero e la posizione di ogni veicolo con l'aggiunta dell'informazione se vi sono
passeggeri a bordo.
La tabella data presente all'interno del database precedentemente menzionato presenta 5
attributi e ben 11.219.300 records. Di seguito è fornito il dettaglio degli attributi.
Nome attributo Tipo attributo Descrizione attributo
taxi_id String Id univoco di ogni taxi
lat Number Latitudine al momento della rilevazione
lon Number Longitudine al momento della rilevazione
Passenger Binary 1 se il passeggero è presente, 0 altrimenti
Unix_timestamp String
Numero di secondi intercorsi tra la mezzanotte del 1 Gennaio
1970 e il momento della rilevazione
2.2 Data Preparation
Per ovviare ai problemi computazionali derivanti dalla notevole mole di dati rilevati si è preferito
frammentare il periodo di rilevazione in settimane e analizzare poi la settimana con il maggior
numero di rilevamenti. Ciò in virtù del fatto che è verosimile ipotizzare che quella sia la settimana
con il maggior numero di presenze in città. Tale operazione di frammentazione è stata effettuata
lavorando direttamente sul database con l'ausilio del software pgAdmin III.
Nello specifico si é preferito prima convertire l'attributo unix_timestamp nel formato di data
canonico di SQL (YYYY-MM-DD HH:MM:SS) mediante la funzione to_timestamp() e
successivamente creare 3 tabelle denominate week_1, week_2 e week_3 (nell'appendice si riporta
la sequenza di query utilizzate per quest'operazione).
Il periodo preso quindi in considerazione per le successive analisi corrisponde alla terza settimana
di rilevamenti (tabella week_3). Di seguito sono riportati in dettaglio il numero di rilevazioni e
l'intervallo temporale in cui esse sono state effettuate per tutte e tre le settimane.
Nome tabella Numero rilevazioni Intervallo temporale
Week_1 3.326.640 2008-05-19 00:00:00 - 2008-05-25 23:59:59
Week_2 3.290.820 2008-05-26 00:00:00 - 2008-06-01 23:59:59
Week_3 3.390.430 2008-06-02 00:00:00 - 2008-06-08 23:59:59
7. Taxi cabs & crime in S.F. 7
È pertanto verosimile ipotizzare che il dispositivo di rilevazione GPS installato sul taxi avente id
upthin presentasse dei malfunzionamenti. Il grafico soprastante, inoltre, presenta nella sua zona a
destra, al disotto dei 6.000 punti, una rapida discesa verso il basso; aspetto che si traduce con la
presenza di diversi taxi riportanti un numero di rilevazioni significativamente basso. Anche in
questo caso l'osservazione diretta dei dati (figura 4) esprime con chiarezza questo aspetto.
Figura 4 - Bottom 10 del numero di rilevazioni
È verosimile ipotizzare in questo caso che alcuni dei 521 veicoli analizzati nella settimana in esame
siano rimasti fermi per manutenzione (ordinaria/straordinaria) o per assenteismo dei dipendenti
legato a malattia.
Per cui, tenendo presente che risulta necessario scremare gli oltre 3 milioni e 300 mila rilevazioni
per motivi computazionali, si è preferito analizzare esclusivamente i taxi aventi un numero di
rilevazioni che va dai 6.000 agli 8.000 punti poiché questo è l'intervallo di curva in cui si evidenzia
un distribuzione più lineare. Si è pertanto proseguito alla creazione di una nuova tabella che
ospitasse esclusivamente l'id e il numero dei punti rilevati per quei taxi ritenuti rilevanti,
esattamente 319, ai fini delle successive analisi (nell'appendice si riporta la sequenza di query
utilizzate per quest'operazione).
Per quanto concerne invece il secondo fronte di indagini in tema di individuazione e eliminazione
degli outliers si è reso necessario tracciare i punti sulla mappa, operazione resa possibile da M-
atlas mediate una query che creasse degli oggetti geometrici (nell'appendice è riportata la query
utilizzata per questa operazione). Come ampiamente ipotizzato è emersa la presenza di molteplici
rilevazioni che cadevano in città distanti da S. Francisco se non addirittura in mare. Nell'immagine
seguente sono riportati i punti tracciati.
8. Taxi cabs & crime in S.F. 8
Figura 5
M-atlas permette di disegnare delle griglie sulla mappa e riporta l'intervallo di latitudine e
longitudine dell'area che la griglia circoscrive. In tal modo si è quindi delimitata l'area da
sottoporre ad analisi, disegnando delle griglie che circoscrivessero le aree a nord, sud, est ed ovest
della città.
Figura 6
9. Taxi cabs & crime in S.F. 9
Benché la precisione di tale operazione sia tutt'altro che garantita (risulta pressoché impossibile
circoscrivere la baia così frastagliata con dei rettangoli aventi contorni retti) si è passati da un
totale di 2.264.731 punti ad un totale di 2.187.788 punti dopo il filtraggio, con un totale quindi di
76.943 punti outliers scartati (nell'appendice si riporta la query utilizzata per eliminare gli outliers).
L'immagine seguente mostra il risultato finale dell'operazione appena descritta.
Figura 7
Si noti dalla figura 7 come si sono mantenute tutte le rilevazioni corrette relative all'area di South
S. Francisco, ignorando così i confini distrettuali, poiché in essa è presente l'aeroporto che può
essere considerato punto di interesse per le successive analisi.
Avendo quindi ultimato la fase di individuazione ed eliminazione degli outliers si è optato per la
separazione delle rilevazioni effettuate con passeggero a bordo da quelle effettuate senza
passeggeri, così da poter eventualmente effettuare delle analisi comparate (si riporta in appendice
la sequenza di query adottate).
Lo step successivo, sempre rimanendo nell'ambito della data preparation, ci consente di
accantonare la visione fin qui adottata in termini di singoli punti rilevati a favore di una visione che
potremmo definire più dinamica poiché basata sulle traiettorie. Questo passaggio, da una visione
per punti ad una visione per traiettorie, è reso possibile da un particolare tipo di oggetto
denominato moving point (MP) che logicamente potremmo immaginare come la ricostruzione in
sequenza di tutti i rilevamenti effettuati per singolo veicolo. La creazione quindi di questi oggetti
MP avviene eseguendo una query dalla DMQL console di M-atlas (nell'appendice si riporta la
query utilizzata), all'interno della quale è possibile impostare una serie di parametri che
permettono di ottenere delle traiettorie che meglio rispecchino la reale situazione che si sta
analizzando. Uno di questi parametri è il MAX_TIME_GAP tramite il quale è possibile impostare il
periodo di tempo massimo intercorso tra due punti consecutivi affinché essi facciano parte della
10. Taxi cabs & crime in S.F. 10
stessa traiettoria. Sforato questo tempo massimo, espresso in secondi, la traiettoria viene tagliata
e se ne genera un'altra che avrà come punto di partenza il primo punto nella sequenza temporale
che non rispetta questo limite imposto.
La scelta del valore per questo parametro presenta certamente delle criticità, poiché un
MAX_TIME_GAP troppo basso rischierebbe di scambiare, ad esempio, una sosta ad un semaforo
per un'interruzione della corsa del taxi, mentre un MAX_TIME_GAP troppo elevato finirebbe per
fondere diverse corse in una sola. Coscienti quindi della delicatezza nella scelta di questo
parametro si è optato per impostare questo limite temporale a 600s (10 min), ritenuto un tempo
ragionevole per cogliere la maggior parte delle corse effettuate da un taxi. L'immagine seguente
mostra le traiettorie di tutti i 319 taxi, aventi l'attributo passenger impostato a 0, ritenuti rilevanti
nella settimana che si sta analizzando (in appendice si riporta la query utilizzata).
Figura 8
Da un'attenta analisi dell'immagine (figura 8) si nota la presenza di molte traiettorie che vengono
tagliate sul ponte che collega San Francisco ad Oakland e sul Golden Gate Bridge. Questo
fenomeno è la diretta conseguenza dell'aver delimitato l'area da sottoporre ad analisi mediante le
griglie mostrate in precedenza. Quindi l'obiettivo quindi di quest'ultima fase di data preparation è
quella di individuare ed eliminare queste traiettorie poiché relative a tragitti da o verso altre città.
M-atlas tra le sue funzionalità prevede la possibilità di selezionare tutte le traiettorie che
intersecano un poligono appositamente disegnato sulla mappa, l'idea è pertanto quella di
disegnare due poligoni all'altezza dei due ponti per selezionare e successivamente eliminare tutte
e sole le traiettorie che intersecano l'area circoscritta dai due poligoni. Nelle figure 9 e 10 sono
mostrate rispettivamente le traiettorie che intersecano il ponte verso Oakland e le traiettorie che
intersecano il Golden Gate Bridge.
11. Taxi cabs & crime in S.F. 11
Figura 9
Figura 10
Operando in questo modo si è riusciti a perfezionare anche la fase di individuazione ed
eliminazione degli outliers precedentemente svolta, disegnando dei poligoni nell'area di mare
adiacente al ponte verso Oakland e nella zona di costa ad ovest della città. L'immagine seguente
riporta pertanto tutte le traiettorie rilevanti dei 319 taxi nella settimana scelta per l'analisi.
12. Taxi cabs & crime in S.F. 12
Figura 11
Le stesse identiche operazioni sono state svolte per le traiettorie di tutti i 319 taxi, aventi
l'attributo passenger impostato a 1 e per le quali, per brevità di trattazione, si riporta solo il
risultato finale delle operazioni (figura 12).
Figura 12
15. Taxi cabs & crime in S.F. 15
2.3.2 Statistiche
Per ogni traiettoria presente nel dataset è stato possibile estrapolare la durata, la lunghezza e la
velocità media per ogni taxi nel periodo temporale considerato. Questo è valido sia per le
traiettorie con passeggeri, sia per quelle senza.
Tramite il software Knime abbiamo ricavato le medie, per ogni statistica presa in considerazione,
per ogni taxi.
Taxi con passeggero
Figura 16 – Avg Duration With Passengers
Dalla distribuzione delle durate medie delle corse per ogni taxi con passeggeri a bordo, emerge
che mediamente un cliente occupa la vettura per non più di mezz’ora, con picchi massimi di 42
minuti e minimi di 25.
20. Taxi cabs & crime in S.F. 20
2.3.3.1 Start
Come si può osservare in figura 25, il numero di clusters individuati è 27. Ogni cluster ha
dimensioni diverse rispetto agli altri e rappresenta una zona di partenza diversa all’interno della
mappa della città di San Francisco.
Figura 25 – Start Clusters
A fini di chiarezza espositiva riportiamo le immagini dei soli primi 7 clusters per rilevanza, ad
eccezione dei primi due in quanto non portavano informazioni aggiuntive all’analisi poiché di
dimensione troppo elevata, e dei due clusters noise.
La rilevanza di un cluster dipende dai punti d’interesse nei dintorni del punto di partenza delle
traiettorie che lo compongono.
Figura 26 - Cluster 3
Le traiettorie comprese nel cluster 3 partono tutte dal Golden Gate Bridge e sono 193.
29. Taxi cabs & crime in S.F. 29
3 Crime Analysis
3.1 Data Understanding
Questo insieme di dati contiene i crimini derivati dal sistema di SFPD Crime Incident Reporting
corrispondenti al periodo 01/01/2003 - 13/05/2015. Esso si compone di due file,
train_incident.csv e test_incident.csv (entrambi rinominati per chiarezza d'analisi). All'interno del
training set sono registrati i crimini rilevati nelle settimane dispari di ogni anno e nel test set sono
invece registrati i crimini rilevati nelle settimane pari, per un totale di 878049 record nel training
set e 884262 nel test set. La tabella sottostante fornisce un dettaglio degli attributi presenti.
Nome attributo Tipo attributo Descrizione attributo
Dates String Data e ora del crimine
Category String Categoria del crimine [presente solo nel training set]
Descript String I dettagli del crimine [presente solo nel training set]
DayOfWeek String Il giorno della settimana in cui è avvenuto il crimine
PdDistrict String L'idetinficicativo del dipartimento di polizia intervenuto
Resolution String La conseguenza del crimine (tipo di arresto/non arresto)
Address String L’indirizzo del crimine
X Number Longitudine
Y Number Latitudine
Si precisa che le tipologie di crimini presenti nel dataset (solo nel training set) sono 39.
3.2 Data Preparation
Per le operazioni di Data Preparation è stato utilizzato il software Knime 3.0.0 per avere un
sampling del dataset pronto all’uso e privo di quegli elementi non significativi ai fini dell’analisi.
La prima operazione eseguita sui dati è stata quella di unire il training e il test set in un unico csv,
per ottenere un numero maggiore di dati significativi sui quali effettuare le analisi successive. In
seguito è stato scelto il periodo di tempo ritenuto ideale per gli obiettivi d’analisi prefissati: dal
01/01/2006 all’ 8/06/2008 corrispondente ai due anni e mezzo precedenti al periodo analizzato in
Taxi Analysis (figura 47).
Figura 47
30. Taxi cabs & crime in S.F. 30
3.2.1 Eliminazione outliers
Con supporto del software M-Atlas è stato analizzato a livello geografico l’ubicazione di ogni
crimine, rilevato attraverso GPS, per scoprire l’esistenza o meno di punti di rumore.
Dall’immagine si può notare come non ci sia alcun punto al di fuori del perimetro cittadino di San
Francisco.
Figura 48
Si potranno notare tre zone dove c’è totale mancanza di rilevazioni: San Francisco Presidio(1),
Golden Gate Park (2), Lake Merced (3).
3.2.2 Time preparation
Con l’obiettivo di migliorare la fase d’analisi del paragrafo successivo e rendere ancora più precisa
la classificazione che andremo ad effettuare come ultimo passo prima di avere il Dataset finale, è
stato effettuato uno split del valore stringa presente nella colonna dell’attributo Date in ulteriori 3
attributi: Year, Month, Hour.
L’attributo Month ha subito un’ulteriore manipolazione, trasformando il relativo valore numerico
nel corrispondente nome.
31. Taxi cabs & crime in S.F. 31
Figura 49
3.2.3 Classification
A causa della mancanza all’interno del test set degli attributi Category e Resolution (per l’attributo
Description verrà trattato al punto successivo), è stato necessario attuare una strategia di
predizione dei valori mancanti. Sono stati usati, in entrambi i casi, i nodi di Decision Tree Learner e
Decision Tree Predictor di Knime.
Figura 50
Nello specifico dalle classificazioni, avremo rispettivamente che nel caso di Category saranno
predetti 22 diversi valori (56.41%) sul totale di 39 tipi di crimini, mentre nel caso di Resolution
saranno predetti 10 diversi valori (58.82%) su un totale di 17 tipi di risoluzione dei crimini.
3.2.4 Crimes categorization
Al fine di comprendere maggiormente i risultati dell’analisi successiva è necessario dividere le
tipologie di crimine in base alla loro pericolosità. Questo in quanto non tutti i reati influenzano allo
stesso modo il comportamento dei tassisti.
In Knime abbiamo utilizzato un nodo Row Filter e il pattern matching per eliminare di volta in volta
i crimini che non facevano parte della tipologia scelta.
32. Taxi cabs & crime in S.F. 32
Figura 51
È quindi da precisare che il grado di pericolosità non è scelto in base alla pericolosità “assoluta” del
tipo di crimine, bensì a quella relativa al lavoro di un tassista. Sulla base di questo principio, ad
esempio, un furto d’auto è reputato più pericoloso rispetto a un furto in casa o il possesso e lo
spaccio di droga. Pertanto abbiamo deciso di suddividere ulteriormente le tipologie di crimine in 3
diverse categorie:
Type Number Crimes
Crimini
fortemente
correlati ai taxi
1017226
(15/39)
arson (incendio doloso), assault (assalto), burglary (furto con
scasso), driving under the influence (guida in stato di
ebrezza/sotto l’effetto di stupefacenti), kidnapping
(omicidio), larceny/theft (furto generale), missing person
(persona scomparsa), recovered vehicle (recupero di veicoli),
robbery (rapina), sex offenses forcible (stupro), sex offenses
non-forcible (reati sessuali non violenti), stolen property
(furto di proprietà), vandalism (atti di vandalismo), vehicle
theft (furto d’auto), weapon laws (possesso illegale di armi).
Crimini legati ai
soldi
30178
(6/39)
bad checks (assegni falsi), bribery (corruzione), extortion
(estorsione), forgery/counterfeting (contraffazione), fraud
(frode), gambling (gioco d’azzardo).
Crimini
potenzialmente
meno rilevanti
714925
(18/39)
disorderly conduct (cattiva condotta), drug/narcotics
(possesso e spaccio di droghe/narcotici), drunkennes (stato
di ebrezza), embezzlement (appropriazione indebita), family
offenses (reati familiari), liquor laws (vendita illegale di
alcolici), loitering (vagabondaggio), non-criminal (reati non
criminali), other offenses (altre offese),
pornography/obscene mat (pronografia/atti osceni),
prostitution (prostituzione), runaway (fuga), secondary codes
(codici secondari), suicide (suicidio), suspicious occurrency
(casi sospetti), trea (trasgressione/vagabondaggio vicino a
proprietà industriali), trespass (trasgressione), warrants
(mandato di cattura/di perquisizione).
33. Taxi cabs & crime in S.F. 33
3.3 Data Analysis
Il dataset di partenza è quello ottenuto dopo la fase di preparazione con l’aggiunta di nuovi
attributi rispetto a quello di originale (“Crimes Dataset”). Inoltre, al fine di ottimizzare l’analisi e di
renderla significativa riguardo l’obiettivo di correlare i crimini ai comportamenti dei tassisti di San
Francisco, verranno analizzati solo i reati della prima categoria (Crimini fortemente correlati ai
taxi) con eventuali cenni alle altre due in caso di informazioni rilevanti.
Figura 52
Le analisi sono state effettuate usando perlopiù il software Knime, ma si segnala anche l’utilizzo di
M-Atlas per la mappatura dei crimini all’interno della città di San Francisco.
L’idea generale è di analizzare i crimini per verificare se hanno influenzato il comportamento dei
tassisti di San Francisco: ad esempio un comportamento tipico potrebbe essere quello di evitare
corse in determinati quartieri della città poiché si considerano pericolosi per la propria attività
oppure semplicemente malfamati. Per farlo si è deciso, come precedentemente specificato, di
analizzare un periodo di tempo abbastanza lungo da poter ipotizzare che ogni parte della città
abbia acquisito una certa fama. Il periodo di riferimento, come specificato precedentemente,
comprende i due anni e mezzo prima della settimana alla quale si riferisce il dataset dei taxi,
compresa quest’ultima.
Tramite un filtro sono state selezionate solo le righe del dataset corrispondenti al periodo in
esame e successivamente l’analisi si è nuovamente suddivisa in 5 aree di interesse.
34. Taxi cabs & crime in S.F. 34
3.3.1 Analisi dei crimini per categoria e per distretto su tutto il periodo di riferimento
Il numero totale di reati commessi è 195156, divisi tra tutte le 15 categorie prese in
considerazione.
Figura 53 - Numero Crimini per Categoria
La prima categoria per numero di reati è quello del furto generale, che rappresenta il 57% dei
crimini totali (figura 53). Il dato che tuttavia salta subito all’occhio è la presenza di ben 415
omicidi, che sebbene non arrivi a rappresentare neanche lontanamente l’1% del totale, porta alla
luce il fatto che in media, nella città di San Francisco vengono commessi circa 14 omicidi al mese.
È inoltre da segnalare che al secondo e al terzo posto si trovino i reati di assalto e furto d’auto.
Come si può vedere in figura 54 i vari quartieri della città hanno tutti registrato un alto numero di
crimini, sebbene le zone Southern e Northern siano state protagoniste, da sole, del 33% del totale
dei crimini.
Figura 54 - Numero crimini fortemente correlati ai taxi per Distretto
Un dato interessante è quello che riguarda il quartiere Tenderloin, ma soprattutto il quartiere
Richmond: come si può osservare nella figura 55, relativa al numero totale di crimini per distretto
di tutte e 39 le categorie nei due anni e mezzo, Tenderloin risulta un quartiere mediamente
colpito dal crimine mentre Richmond risulta il meno colpito. Tuttavia sono dati che contrastano
con ciò che riporta la tabella precedente, relativa ai soli crimini rilevanti per i taxi: Tenderloin è il
meno pericoloso, sintomo che i reati commessi nel quartiere non sono rilevanti per la nostra
analisi, mentre Richmond segue l’andamento opposto. I crimini che sono stati commessi in questo
38. Taxi cabs & crime in S.F. 38
Figura 60 - Numero di crimini per risoluzione
Nello specifico è stata evidenziata l’incidenza delle due risoluzioni principali None (nessun
provvedimento) e Arrest, booked (arresto) in base alla categoria di crimine.
Figura 61 - Numero di crimini per Resolution None
Lo schema riepilogativo in figura 61, relativo a None evidenzia come il crimine più presente nel
dataset, cioè Larceny – Furto generico (110546), sia stato risolto senza nessun tipo di
provvedimento. Si evidenzia inoltre il fatto che per gli omicidi, il numero di crimini che non hanno
avuto nessuna conseguenza è più della metà dei casi (52%, 208 su 401), dato sicuramente
preoccupante, ma soprattutto che il 95% dei casi di veicoli rubati sono quasi tutti irrisolti (15309
casi su 16036) così come quelli di vandalismo, incendio doloso e assalto, sebbene quest’ultimo
risulti al primo posto tra i reati conclusi con un arresto.
Figura 62 - Numero di crimini per Resolution Arrest
39. Taxi cabs & crime in S.F. 39
In figura 62, relativa alla risoluzione dei crimini con un arresto, si è evidenziato come alcune
tipologie di reato abbiano un tasso di arresto abbastanza alto, facendo ipotizzare che per la polizia
sia più facile identificare e successivamente arrestare i responsabili. Infatti per quanto riguarda
Driving under the influence sono stati registrati 360 arresti su 398 casi totali, così come per i reati
legati al possesso illegale di armi, che registrano un tasso di arresto del 51% a fronte di un 33,3%
per il quale non è stato preso alcun provvedimento ( il restante 16% è stato registrato tra le altre
tipologie di Resolution).
In generale emerge quindi che la sicurezza a San Francisco sia piuttosto carente, soprattutto per
determinate tipologie di crimine come il furto d’auto, rappresentando dunque un enorme
problema sia per i suoi abitanti che per coloro che vi lavorano.
45. Taxi cabs & crime in S.F. 45
Per confermare ulteriormente il fatto che i tassisti si muovono liberamente per San Francisco,
abbiamo effettuato l’analisi incrociando i dati dei crimini sia con la mappa delle densità delle corse
dei taxi con passeggero che con quella delle corse senza passeggero: in questo modo è possibile
escludere che le traiettorie delle corse che passano in un quartiere pericoloso siano dettate solo
dal fatto che sia stato un cliente a chiedere di andare in quella zona, mentre a taxi vuoto i tassisti
non ci passerebbero.
4.2 Analisi incrociata tra le categorie di crimine e le traiettorie dei taxi
Come per l’analisi relativa ai singoli distretti, al fine di individuare se vi fosse l’esistenza di una
correlazione tra una certa tipologia di crimine e il comportamento dei tassisti della città, abbiamo
scelto i sei crimini peggiori (quelli con il più alto elevato di casi registrati nei due anni e mezzo
precedenti alla settimana di riferimento) tra quelli fortemente correlati ai taxi; abbiamo
selezionato anche il crimine Kidnapping (omicidio) poiché considerato il peggiore tra tutti,
nonostante i pochi casi registrati, in quanto capace di influenzare maggiormente il
comportamento di una persona.
Quindi questi crimini sono stati mappati nell’area della città di San Francisco per localizzare le zone
dove si sono verificati e poterne valutare la densità.
Infine abbiamo sovrapposto le mappature alle density map delle traiettorie delle corse dei taxi
(con e senza passeggeri). I risultati sono riportati nelle figure seguenti.
Figura 70 - Assault
49. Taxi cabs & crime in S.F. 49
Figura 77 - Vehicle Theft
I risultati ottenuti evidenziano che, come nell’analisi precedente relativa ai singoli quartieri, non vi
è una relazione di proporzionalità inversa neanche tra una determinata tipologia di crimine e le
traiettorie delle corse dei taxi. Infatti, guardando la densità di quest’ultime e quella dei punti
corrispondenti ai reati notiamo che nella maggioranza dei casi la zona più colpita dal crimine è
quella nord-est della città, corrispondente proprio a quella di massima densità di corse.
4.3 Analisi incrociata tra il tasso di criminalità dei quartieri e il numero di salite-
discese dai taxi
Un dato interessante da analizzare riguarda quali sono le zone con il maggior numero di fermate
per i taxi, ovvero quelle con il più alto numero di salite e discese, in modo da evidenziare eventuali
comportamenti rilevanti da parte dei tassisti. Un caso rilevante potrebbe essere, ad esempio,
quello in cui le traiettorie delle corse dei taxi passano all’interno di un quartiere (sia malfamato
che non) senza però mai fermarvicisi.
Per farlo sono state utilizzate le OD Matrix create nella Taxi Analysis. I dati sono stati riportati nella
tabella sottostante, dove sono evidenziate le percentuali delle corse in partenza e arrivo dei
relativi quadranti.
50. Taxi cabs & crime in S.F. 50
Zona Num.
salite
% Salite Num discese % Discese
Aeroporto 5078 13,46 % 4527 11,99 %
Centro 6269 16,61 % 5367 14,22 %
Daily City 27 0,07 % 220 0,58 %
Est 1260 3,34 % 1683 4,46 %
Nord 11075 29,35 % 11845 31,40 %
Nord-Est 11735 31,10 % 10365 27,47 %
Nord-Ovest 610 1,62 % 944 2,50 %
Ovest 634 1,68 % 1033 2, 73 %
Sud 586 1,55 % 941 2, 49 %
Sud-est 221 0,58 % 454 1,20 %
Sud-ovest 239 0,63 % 355 0,94 %
Sono stati evidenziati i dati relativi al quadrante Nord-Est in quanto contiene i 3 quartieri con il
tasso di criminalità più elevato: come per le analisi precedenti il dato che emerge è che è proprio
all’interno di queste zone che vi è maggior attività lavorativa per i tassisti.
51. Taxi cabs & crime in S.F. 51
5 Conclusioni
L’analisi incrociata dei due dataset ha evidenziato come il comportamento dei tassisti della città
non sia influenzato dai crimini commessi nei vari quartieri. Anzi, ciò che salta agli occhi è che la
relazione tra il tasso di criminalità e il numero di corse dei taxi sia di proporzionalità diretta:
all’aumentare dei crimini all’interno di una zona della città aumenta anche il numero di corse da e
per quella zona. Al contrario, la densità delle corse dei taxi nelle zone più sicure di San Francisco è
molto bassa.
Il tasso di criminalità, quindi, non sembra influenzare il lavoro dei tassisti ma, piuttosto, il
comportamento di coloro che utilizzano i taxi. Ovvero il numero di clienti per un tassista aumenta
proprio nelle zone in cui i crimini sono in numero maggiore, poiché probabilmente è reputato un
mezzo più sicuro rispetto ai trasporti pubblici. A sostegno di questa tesi vi è anche il fatto che i taxi
vuoti girano maggiormente in queste zone e dunque, molto probabilmente, la domanda è
maggiore.
Per cui l’attività dei taxi è strettamente correlata al tasso di criminalità, ma in senso “positivo”, in
quanto il lavoro sembrerebbe aumentare grazie al numero elevato di reati.
52. Taxi cabs & crime in S.F. 52
Appendice
A.1 SQL query data costruction taxi dataset
CREATE TABLE public.trasformed_data
(
taxi_id text,
lat numeric,
lon numeric,
passenger numeric,
unix_timestamp numeric,
data timestamp with time zone
);
INSERT INTO public.trasformed_data
(
SELECT taxi_id ,lat ,lon ,passenger ,unix_timestamp ,
to_timestamp(unix_timestamp)
FROM data
limit 11219300
);
CREATE TABLE public.week_1
(
taxi_id text,
lat numeric,
lon numeric,
passenger numeric,
unix_timestamp numeric,
data timestamp with time zone
);
INSERT INTO public.week_1
(
53. Taxi cabs & crime in S.F. 53
SELECT taxi_id ,lat ,lon ,passenger ,unix_timestamp , data
FROM trasformed_data
Where data >= '2008-05-19 00:00:00' and data <= ' 2008-05-25 23:59:59'
);
INSERT INTO public.week_2
(
SELECT taxi_id ,lat ,lon ,passenger ,unix_timestamp , data
FROM trasformed_data
Where data >= '2008-05-26 00:00:00' and data <= ' 2008-06-01 23:59:59'
);
INSERT INTO public.week_3
(
SELECT taxi_id ,lat ,lon ,passenger ,unix_timestamp , data
FROM trasformed_data
Where data >= '2008-06-02 00:00:00' and data <= ' 2008-06-08 23:59:59'
);
A.2 SQL query eliminazione outliers
CREATE TABLE public.all_taxi_id
(
taxi_id text,
n_point numeric
)
Insert Into public.all_taxi_id
(
Select taxi_id, count(taxi_id) AS n_point
From public.week_3
Group by taxi_id
Order by n_point Desc
)
Insert Into public.considerable_taxi_id
(
Select *
From public.all_taxi_id
Where n_point < 8000 and n_point > 6000
)
54. Taxi cabs & crime in S.F. 54
Insert Into public.considerable_taxi_id
(
Select *
From public.all_taxi_id
Where n_point < 8000 and n_point > 6000
)
SELECT taxi_id,st_setsrid(st_makepoint(lon,lat),4326) AS p
From public.week_3
Where taxi_id in
(
Select taxi_id
From considerable_taxi_id
)
Select *
From public.week_3
Where lat > 37.6128 and lat < 37.8134 and lon < -122.3793 and lon > -122.5152
and taxi_id in
(
Select taxi_id
From considerable_taxi_id
)
A.3 SQL query separazione con e senza passeggeri
CREATE TABLE public.passenger_0
(
id text,
lon numeric,
lat numeric,
datetime timestamp with time zone
)
CREATE TABLE public.passenger_1
(
id text,
lon numeric,
lat numeric,
datetime timestamp with time zone
)
Insert into passenger_0
(
Select taxi_id, lon, lat,data
From public.week_3
Where lat > 37.6128 and lat < 37.8134 and lon < -122.3793 and lon > -
122.5152 and passenger=0 and taxi_id in
(
Select taxi_id
From considerable_taxi_id
where n_point < 8000 and n_point > 6000
)
)
55. Taxi cabs & crime in S.F. 55
Insert into passenger_1
(
Select taxi_id, lon, lat,data
From public.week_3
Where lat > 37.6128 and lat < 37.8134 and lon < -122.3793 and lon > -
122.5152 and passenger=1 and taxi_id in
(
Select taxi_id
From considerable_taxi_id
where n_point < 8000 and n_point > 6000
)
)
A.4 SQL query creazione moving point
CREATE OBJECT trajectories_table_0 AS BUILD MOVING_POINT
FROM (
select id, lon,lat, datetime
from passenger_0
order by id, datetime
)
WHERE
MOVING_POINT.MAX_TIME_GAP=600
A.5 SQL query filtraggio moving point e statistiche
CREATE TABLE public.trajectories_table_filtered_taxi_0
(
id text,
object geometry
)
CREATE TABLE public.trajectories_table_filtered_taxi_1
(
id text,
object geometry
)
56. Taxi cabs & crime in S.F. 56
Insert Into trajectories_table_filtered_taxi_0
(
Select *
From trajectories_table_0
Where object not in
(
Select object
From mt_1708543841_87477177i
)
AND
object not in
(
Select object
from mt_1708543841__1005565797i
)
and
object not in
(
Select object
from mt_1708543841_276736533i
)
and
object not in
(
Select object
from mt_1708543841_1368227870i
)
and
object not in
(
Select object
from mt_1708543841__2128628037i
)
)
Insert Into trajectories_table_filtered_taxi_1
(
Select *
From trajectories_table_1
Where object not in
(
Select object
From mt_1708543842_1327557985i
)
AND
object not in
(
Select object
from mt_1708543842_1934273245i
)
and
object not in
(
Select object
from mt_1708543842_795701946i
)
and
object not in
(
Select object
from mt_1708543842__335974067i
))
57. Taxi cabs & crime in S.F. 57
CREATE TABLE public.trajectories_table_1_stats
(
id text,
n_points numeric,
length numeric,
duration numeric,
time_start timestamp without time zone,
vsp numeric
)
Insert Into trajectories_table_filtered_taxi_1_stats
(
Select *
From trajectories_table_1_stats
Where id not in
(
Select id
From mt_1708543842_1327557985i
)
AND
id not in
(
Select id
from mt_1708543842_1934273245i
)
and
id not in
(
Select id
from mt_1708543842_795701946i
)
and
id not in
(
Select id
from mt_1708543842__335974067i
)
)
58. Taxi cabs & crime in S.F. 58
A.6 SQL query od matrix
CREATE TABLE public.griglia_od_matrix
(
id text,
object geometry
)
Insert into public.griglia_od_matrix
(
Select *
from griglia_od_matrix_3x3
Union
Select *
from griglia_daily_city
Union
Select *
from griglia_aeroporto
)