• Non ci sono risultati.

Pe l’appli azio e del etodo stato utilizzato il soft a e BIOGEME BIe lai e Opti izatio GE Model Estimation). BIOGEME, rilasciato come software Open Source, è stato progettato per la stima della massima verosimiglianza di modelli parametrici in genere, con particolare riferimento ai modelli di scelta discreta.

Sono disponibili due versioni del software, PythonBiogeme e BisonBiogeme. Per lo studio è stata utilizzata la versione basata su Python, principalmente perché più aggiornata secondo le ultime release del linguaggio di programmazione.

6.1.1 Il datafile

Per la stima del modello, BIOGEME richiede un data file in un formato specifico testuale, che contiene nella prima riga una lista delle etichette corrispondenti ai dati disponibili, e ogni riga consecutiva deve contenere lo stesso numero di dati numerici corrispondenti alle osservazioni. Per la preparazione del file è stato utilizzato lo strumento biopreparedata, che trasforma automaticamente un file CSV (Comma Separated Version) nel formato richiesto. Il tool biocheckdata è stato utilizzato per verificare se il data file prodotto fosse coerente con le specifiche richieste da BIOGEME.

I dati contenuti nel data file prodotti pe l’espe i e to so o des itti ella ta ella 10. DATA FILE BIOGEME

ID Id dell'intervistato

SURVEY Tipo di questionario - 1: on-line, 2: cartaceo

SP Tipo di questionario SP/RP - 1: SP, 2: RP

MALE Genere - 1: Femmina, 2: Maschio

AGE Classe di età - 1: <24, 2: Tra 24 e 39, 3: Tra 39 e 54, 4: Tra 54 e 65, 5: Oltre 65

INCOME

Classe di reddito - 1: <1000, 2: Tra 1000 e 2000, 3: Tra 2000 e 3000, 4: Tra 3000 e 4000, 5: Oltre 4000

128 TITLE

Titolo di studio - 1: Licenza elementare, 2: Licenza media inferiore, 3: Diploma, 4: Laurea, 5: Altro

LICENCE Possesso patente guida - 0: No, 1: Si CAR_AV Diponibilità auto nel nucleo - 0: No, 1: Si ORIGIN Zona di origine - Vedi tabella O/D DEST Zona di destinazione - Vedi tabella =O/D PURPOSE Motivo spostamento - 1: Lavoro, 2: Studio CHOICE Scelta mezzo - 1: Bus, 2: Car

WK_TT Tempo per raggiungere la fermata - 1: Meno di 5 min, 2: Tra 5 e 10 min, 3: oltre 10 min W_TT Tempo di attesa alla fermata - 1: Meno di 5 min, 2: Più di 5 min

BUS_TT

Tempo di viaggio BUS - 1: Meno di 10 min, 2: Tra 10 e 20 min, 3: Tra 20 e 30 min, 4: oltre 30 min

BUS_COST Costo BUS mensile - : Me o di €, : T a e €, : Olt e € BUS_INFO Sistema informazione utenza - 1: Cartaceo, 2: Interattivo real-time GPS BUS_SEATS Comfort a bordo - 1: Mezzo affollato, 2: Posti disponibili

BUS_FREQ Frequenza BUS - 1: 15 min, 2: 20 min CAR_TT Tempo di viaggio AUTO - FIXED to 2 CAR_COST Costo carburante AUTO - FIXED to 2

CAR_PARK Costo parcheggio mensile - 1: Free parking, 2: Parking Cost

Tabella 10 - Descrizione dei dati per l'esperimento SP

6.1.2 Il modello

Il modello utilizzato è un LOGIT binario con le alternative bus e auto. Le funzioni di utilità sono state definite come: = _ _ × _ + _ _ × _ + _ _ × _ + _ _ × _ + _ _ × _ + _ _ × _ + _ _ × _ = _ + _ _ × _ + _ _ × _ + _ _ × _ + _ × + _ × + _ × + _ × + _ × + _ _ × _

V app ese ta la fu zio e di utilità dell’alte ati a bus, V2 rappresenta la funzione di utilità dell’alte ati a auto. La dispo i ilità dell’alte ati a i dete i ata dalla a ia ile , con = , ,

129 che risulta pa i a se l’alte ati a dispo i ile, alt i e ti. La p o a ilità di s eglie e u ’alte ati a i data dal odello LOGIT:

|{ , }; , = ,�

+

Dato un set di dati con N osservazioni, la funzione di massima verosimiglianza del campione sarà pari a :

ℒ = ∑ log |{ , };

Dove l’alte ati a s elta dall’ute te .

6.1.3 Specificazione del modello: PythonBIOGEME

Il modello deve essere specificato in un file con estensione .py. Il punto di partenza è stato utilizzare il file fornito dal tool BIOGEME 01logit.py, opportunamente corretto per la specifica istanza di esperimento dello studio.

La prima sezione del file di modello deve contenere i riferimenti alle librerie Python necessarie al corretto funzionamento di PythonBIOGEME, i nomi delle intestazioni nel data file, e le funzioni statistiche per i calcoli base del modello:

La sezione successiva usa la funzione BETA per definire i parametri che devono essere stimati. Per ogni parametro è necessario definire:

1. Il nome del parametro, 2. Il valore di default, 3. Un lower bound, 4. Un upper bound,

5. Un flag che indica che si desidera stimare il parametro (0) o se mantenere il valore di default,

6. Una descrizione del parametro.

from biogeme import * from headers import * from statistics import *

130 La sezione seguente mostra le funzioni BETA utilizzate nel modello:

Nel caso specifico, i parametri relativi al tempo di viaggio in auto (B_CAR_TT e osto dell’auto relativo allo spostamento (B_CAR_COST) riportano il flag di stima pari a 1, perché in fase di definizione del modello si è scelto di mantenere costanti le grandezze con valori quanto più simili al contesto di scelta reale.

I u a sezio e su essi a e essa io defi i e l’i sie e di s elta:

e le regole per la disponibilità delle alternative:

Successivamente è opportuno definire il modello di scelta. La funzione bioLogLogit fornisce l’algo it o della p o a ilità di s elta del odello LOGIT. La fu zio e i hiede t e a go e ti:

1. Il dizionario che descrive le funzioni di utilità,

V = {1: V1, 2: V2}

BUS_AV_SP = DefineVariable('BUS_AV_SP',SP * ( SP != 0 )) CAR_AV_SP = DefineVariable('CAR_AV_SP',SP * ( SP != 0 )) av = {1: BUS_AV_SP,

2: CAR_AV_SP}

ASC_CAR = Beta('ASC_CAR',1,-10,10,0,'Car cte.')

B_WK_TT = Beta('B_WK_TT', 1, -10, 10, 0, 'Walking Time') B_W_TT = Beta('B_W_TT', 1, -10, 10, 0, 'Waiting Time') B_BUS_TT = Beta('B_BUS_TT', 1, -10, 10, 0, 'Travel Time')

B_BUS_COST = Beta('B_BUS_COST', 1, -10, 10, 0, 'Bus monthly cost') B_BUS_INFO = Beta('B_BUS_INFO', 1, -10, 10, 0, 'Bus ATIS')

B_BUS_SEATS = Beta('B_BUS_SEATS', 1, -10, 10, 0, 'Bus seats availability') B_BUS_FREQ = Beta('B_BUS_FREQ', 1, -10, 10, 0, 'Service Frequency') B_CAR_TT = Beta('B_CAR_TT', 2, -10, 10, 1, 'Car travel time')

B_CAR_COST = Beta('B_CAR_COST', 2, -10, 10, 1, 'Car fuel cost') B_CAR_PARK = Beta('B_CAR_PARK', 1, -10, 10, 0, 'Car parking cost') B_MALE = Beta('B_MALE', 1, -10, 10, 0, 'Genre')

B_AGE = Beta('B_AGE', 1, -10, 10, 0, 'Age')

B_INCOME = Beta('B_INCOME', 1, -10, 10, 0, 'Income') B_TITLE = Beta('B_TITLE', 1, -10, 10, 0, 'Title')

B_LICENCE = Beta('B_LICENCE', 1, -10, 10, 0, 'Driving Licence') B_CAR_AV = Beta('B_CAR_AV', 1, -10, 10, 0, 'Car availability')

131 2. Il dizionario che descrive le condizioni di disponibilità,

3. Le alternative per le quali la probabilità deve essere calcolata.

Il modello richiede inoltre una funzione di iterazione sui dati e la definizione della funzione di massima verosimiglianza per la stima del modello.

Nel caso specifico è stato specificato quanto segue:

Tutte le altre variabili sono definite attraverso il descrittore BIOGEME_OBJECT. In particolare si defi is o o le fu zio i pe l’algo it o spe ifi o di sti a della p o a ilità BIOGEME_OBJECT.PARAMETERS, le funzioni di utilità BIOGEME_OBJECT.FORMULAS, e le funzioni

per le statistiche: