示例#1
0
 def test_generateDraws(self):
     randomDraws1 = bioDraws('randomDraws1', 'NORMAL')
     randomDraws2 = bioDraws('randomDraws2', 'UNIFORMSYM')
     # We build an expression that involves the two random variables
     x = randomDraws1 + randomDraws2
     types = x.dictOfDraws()
     theDrawsTable = myData1.generateDraws(types,
                                           ['randomDraws1', 'randomDraws2'],
                                           10)
     dim = theDrawsTable.shape
     self.assertTupleEqual(dim, (5, 10, 2))
示例#2
0
    def test_setRandomGenerators(self):
        def logNormalDraws(sampleSize, numberOfDraws):
            return np.exp(np.random.randn(sampleSize, numberOfDraws))

        def exponentialDraws(sampleSize, numberOfDraws):
            return -1.0 * np.log(np.random.rand(sampleSize, numberOfDraws))

        # We associate these functions with a name
        theDict = {
            'LOGNORMAL': (logNormalDraws, 'Draws from lognormal distribution'),
            'EXP': (exponentialDraws, 'Draws from exponential distributions')
        }
        myData1.setRandomNumberGenerators(theDict)

        # We can now generate draws from these distributions
        randomDraws1 = bioDraws('randomDraws1', 'LOGNORMAL')
        randomDraws2 = bioDraws('randomDraws2', 'EXP')
        x = randomDraws1 + randomDraws2
        types = x.dictOfDraws()
        theDrawsTable = myData1.generateDraws(types,
                                              ['randomDraws1', 'randomDraws2'],
                                              10)
        dim = theDrawsTable.shape
        self.assertTupleEqual(dim, (5, 10, 2))
示例#3
0
#database.data.drop(database.data[remove].index,inplace=True)

# Here we use the "biogeme" way for backward compatibility
exclude = ((PURPOSE != 1) * (PURPOSE != 3) + (CHOICE == 0)) > 0
database.remove(exclude)

ASC_CAR = Beta('ASC_CAR', 0, None, None, 0)
ASC_TRAIN = Beta('ASC_TRAIN', 0, None, None, 0)
ASC_SM = Beta('ASC_SM', 0, None, None, 1)
B_TIME = Beta('B_TIME', 0, None, None, 0)
B_TIME_S = Beta('B_TIME_S', 0, None, None, 0)
B_COST = Beta('B_COST', 0, None, None, 0)

# Define a random parameter, log normally distributed, designed to be used
# for Monte-Carlo simulation
B_TIME_RND = -exp(B_TIME + B_TIME_S * bioDraws('B_TIME_RND', 'NORMAL'))

# Utility functions

#If the person has a GA (season ticket) her incremental cost is actually 0
#rather than the cost value gathered from the
# network data.
SM_COST = SM_CO * (GA == 0)
TRAIN_COST = TRAIN_CO * (GA == 0)

# For numerical reasons, it is good practice to scale the data to
# that the values of the parameters are around 1.0.
# A previous estimation with the unscaled data has generated
# parameters around -0.01 for both cost and time. Therefore, time and
# cost are multipled my 0.01.
myRandomNumberGenerators = {
    'TRIANGULAR':
    (theTriangularGenerator, 'Draws from a triangular distribution')
}
database.setRandomNumberGenerators(myRandomNumberGenerators)

# Parameters to be estimated
B_COST = Beta('B_COST', 0, None, None, 0)

# Define a random parameter, normally distributed across individuals,
# designed to be used for Monte-Carlo simulation
B_TIME = Beta('B_TIME', 0, None, None, 0)

# It is advised not to use 0 as starting value for the following parameter.
B_TIME_S = Beta('B_TIME_S', 1, None, None, 0)
B_TIME_RND = B_TIME + B_TIME_S * bioDraws('B_TIME_RND', 'TRIANGULAR')

# We do the same for the constants, to address serial correlation.
ASC_CAR = Beta('ASC_CAR', 0, None, None, 0)
ASC_CAR_S = Beta('ASC_CAR_S', 1, None, None, 0)
ASC_CAR_RND = ASC_CAR + ASC_CAR_S * bioDraws('ASC_CAR_RND', 'TRIANGULAR')

ASC_TRAIN = Beta('ASC_TRAIN', 0, None, None, 0)
ASC_TRAIN_S = Beta('ASC_TRAIN_S', 1, None, None, 0)
ASC_TRAIN_RND = ASC_TRAIN + ASC_TRAIN_S * bioDraws('ASC_TRAIN_RND',
                                                   'TRIANGULAR')

ASC_SM = Beta('ASC_SM', 0, None, None, 1)
ASC_SM_S = Beta('ASC_SM_S', 1, None, None, 0)
ASC_SM_RND = ASC_SM + ASC_SM_S * bioDraws('ASC_SM_RND', 'TRIANGULAR')
                            betas['coef_individualHouse'], None, None, 0)
coef_male = Beta('coef_male', betas['coef_male'], None, None, 0)
coef_haveChildren = Beta('coef_haveChildren', betas['coef_haveChildren'], None,
                         None, 0)
coef_highEducation = Beta('coef_highEducation', betas['coef_highEducation'],
                          None, None, 0)

### Latent variable: structural equation

# Note that the expression must be on a single line. In order to
# write it across several lines, each line must terminate with
# the \ symbol

# Define a random parameter, normally distributed, designed to be used
# for Monte-Carlo integration
omega = bioDraws('omega', 'NORMAL')
sigma_s = Beta('sigma_s', betas['sigma_s'], None, None, 0)

#
# Deal with serial correlation by including an error component
# that is individual specific
errorComponent = bioDraws('errorComponent', 'NORMAL')
ec_sigma = Beta('ec_sigma', 1, None, None, 0)

CARLOVERS = coef_intercept + \
            coef_age_65_more * age_65_more + \
            formulaIncome + \
            coef_moreThanOneCar * moreThanOneCar + \
            coef_moreThanOneBike * moreThanOneBike + \
            coef_individualHouse * individualHouse + \
            coef_male * male + \
示例#6
0
database.panel("ID")
# They are organized as panel data. The variable ID identifies each individual.
globals().update(database.variables)

# Parameters to be estimated
ASC_1 = Beta('ASC_1', 0, None, None, 1)
ASC_11 = Beta('ASC_11', 0, None, None, 0)
ASC_2 = Beta('ASC_2', 0, None, None, 0)
ASC_21 = Beta('ASC_21', 0, None, None, 0)
ASC_3 = Beta('ASC_3', 0, None, None, 0)
ASC_31 = Beta('ASC_31', 0, None, None, 0)
ASC_4 = Beta('ASC_4', 0, None, None, 0)
# Shared error parameters, fix the mean-parameter to 0
SIGMA_SH_MAAS_M = Beta('SIGMA_SH_MAAS_M', 0, None, None, 1)
SIGMA_SH_MAAS_STD = Beta('SIGMA_SH_MAAS_STD', 0, None, None, 0)
SIGMA_SH_MAASRND = SIGMA_SH_MAAS_M + SIGMA_SH_MAAS_STD * bioDraws(
    'SIGMA_SH_MAASRND', 'NORMAL')

beta_fam_package = Beta('beta_fam_package', 0, None, None, 0)
beta_fam_private = Beta('beta_fam_private', 0, None, None, 0)
beta_age_package = Beta('beta_age_package', 0, None, None, 0)
beta_edu2_package = Beta('beta_edu2_package', 0, None, None, 0)
beta_edu2_private = Beta('beta_edu2_private', 0, None, None, 0)
beta_inc2_package = Beta('beta_inc2_package', 0, None, None, 0)
beta_inc2_private = Beta('beta_inc2_private', 0, None, None, 0)
beta_age_private = Beta('beta_age_private', 0, None, None, 0)

beta_enthu = Beta('beta_enthu', 0, None, None, 0)
beta_fru = Beta('beta_fru', 0, None, None, 0)
beta_constructive = Beta('beta_constructive', 0, None, None, 0)
beta_travelzeal = Beta('beta_travelzeal', 0, None, None, 0)
beta_age = Beta('beta_age', 0, None, None, 0)
示例#7
0
# Define a random parameter, normally distributed, designed to be used
# for numerical integration
sigma_s = Beta('sigma_s', 1, None, None, 0)

CARLOVERS = coef_intercept + \
            coef_age_65_more * age_65_more + \
            formulaIncome + \
            coef_moreThanOneCar * moreThanOneCar + \
            coef_moreThanOneBike * moreThanOneBike + \
            coef_individualHouse * individualHouse + \
            coef_male * male + \
            coef_haveChildren * haveChildren + \
            coef_haveGA * haveGA + \
            coef_highEducation * highEducation + \
            sigma_s * bioDraws('EC', 'NORMAL_MLHS')

# Choice model
ASC_CAR = Beta('ASC_CAR', 0, None, None, 0)
ASC_PT = Beta('ASC_PT', 0, None, None, 1)
ASC_SM = Beta('ASC_SM', 0, None, None, 0)
BETA_COST_HWH = Beta('BETA_COST_HWH', 0, None, None, 0)
BETA_COST_OTHER = Beta('BETA_COST_OTHER', 0, None, None, 0)
BETA_DIST = Beta('BETA_DIST', 0, None, None, 0)
BETA_TIME_CAR_REF = Beta('BETA_TIME_CAR_REF', 0, None, 0, 0)
BETA_TIME_PT_REF = Beta('BETA_TIME_PT_REF', 0, None, 0, 0)
BETA_WAITING_TIME = Beta('BETA_WAITING_TIME', 0, None, None, 0)

# The coefficient of the latent variable should be initialized to
# something different from zero. If not, the algorithm may be trapped
# in a local optimum, and never change the value.
示例#8
0
def theTriangularGenerator(sampleSize, numberOfDraws):
    """
    User-defined random number generator to the database.
    See the numpy.random documentation to obtain a list of other distributions.
    """
    return np.random.triangular(-1, 0, 1, (sampleSize, numberOfDraws))

myRandomNumberGenerators = {'TRIANGULAR': (theTriangularGenerator,
                                           'Draws from a triangular distribution')}

database.setRandomNumberGenerators(myRandomNumberGenerators)

# Define a random parameter with a triangular distribution, designed to be used
# for Monte-Carlo simulation
B_TIME_RND = B_TIME + B_TIME_S * bioDraws('B_TIME_RND', 'TRIANGULAR')

# Definition of new variables
SM_COST = SM_CO * (GA == 0)
TRAIN_COST = TRAIN_CO * (GA == 0)

# Definition of new variables: adding columns to the database
CAR_AV_SP = DefineVariable('CAR_AV_SP', CAR_AV * (SP != 0), database)
TRAIN_AV_SP = DefineVariable('TRAIN_AV_SP', TRAIN_AV * (SP != 0), database)
TRAIN_TT_SCALED = DefineVariable('TRAIN_TT_SCALED', TRAIN_TT / 100.0, database)
TRAIN_COST_SCALED = DefineVariable('TRAIN_COST_SCALED', TRAIN_COST / 100, database)
SM_TT_SCALED = DefineVariable('SM_TT_SCALED', SM_TT / 100.0, database)
SM_COST_SCALED = DefineVariable('SM_COST_SCALED', SM_COST / 100, database)
CAR_TT_SCALED = DefineVariable('CAR_TT_SCALED', CAR_TT / 100, database)
CAR_CO_SCALED = DefineVariable('CAR_CO_SCALED', CAR_CO / 100, database)
globals().update(database.variables)

# Removing some observations
exclude = ((PURPOSE != 1) * (PURPOSE != 3) + (CHOICE == 0)) > 0
database.remove(exclude)

ASC_CAR = Beta('ASC_CAR', 0, None, None, 0)
ASC_TRAIN = Beta('ASC_TRAIN', 0, None, None, 0)
ASC_SM = Beta('ASC_SM', 0, None, None, 1)
B_TIME = Beta('B_TIME', 0, None, None, 0)
B_TIME_S = Beta('B_TIME_S', 1, None, None, 0)
B_COST = Beta('B_COST', 0, None, None, 0)

# Define a random parameter, normally distributed, designed to be used
# for Monte-Carlo simulation
B_TIME_RND = B_TIME + B_TIME_S * bioDraws('B_TIME_RND', 'NORMAL_MLHS_ANTI')


# Definition of new variables
SM_COST = SM_CO * (GA == 0)
TRAIN_COST = TRAIN_CO * (GA == 0)
CAR_AV_SP = CAR_AV * (SP != 0)
TRAIN_AV_SP = TRAIN_AV * (SP != 0)
TRAIN_TT_SCALED = TRAIN_TT / 100.0
TRAIN_COST_SCALED = TRAIN_COST / 100
SM_TT_SCALED = SM_TT / 100.0
SM_COST_SCALED = SM_COST / 100
CAR_TT_SCALED = CAR_TT / 100
CAR_CO_SCALED = CAR_CO / 100

# Definition of the utility functions
示例#10
0
def cv_test_model(V,
                  R,
                  Draws,
                  ModName,
                  test,
                  myRandomNumberGenerators,
                  COST_SCALE_CAR=100,
                  COST_SCALE_PUB=100):

    db_test = db.Database("swissmetro_test", test)
    db_test.setRandomNumberGenerators(myRandomNumberGenerators)
    globals().update(db_test.variables)
    #locals().update(db_test.variables)

    #define variables
    #variables
    CAR_AV_SP = DefineVariable('CAR_AV_SP', CAR_AV * (SP != 0), db_test)
    TRAIN_AV_SP = DefineVariable('TRAIN_AV_SP', TRAIN_AV * (SP != 0), db_test)

    SM_COST = SM_CO * (GA == 0)
    TRAIN_COST = TRAIN_CO * (GA == 0)

    ###Parameters to be estimated (Note not all parameters are used in all models!)
    ##Attributes
    #Alternative specific constants
    ASC_CAR = Beta('ASC_CAR', 0, None, None, 1)
    ASC_TRAIN = Beta('ASC_TRAIN', 0, None, None, 0)
    ASC_SM = Beta('ASC_SM', 0, None, None, 0)

    #Cost (Note: Assumed generic)
    B_COST = Beta('B_COST', 0, None, None, 0)
    B_COST_BUSINESS = Beta('B_COST_BUSINESS', 0, None, None, 0)
    B_COST_PRIVATE = Beta('B_COST_PRIVATE', 0, None, None, 0)

    #Time
    B_TIME = Beta('B_TIME', 0, None, None, 0)
    B_TIME_CAR = Beta('B_TIME_CAR', 0, None, None, 0)
    B_TIME_TRAIN = Beta('B_TIME_TRAIN', 0, None, None, 0)
    B_TIME_SM = Beta('B_TIME_SM', 0, None, None, 0)
    B_TIME_PUB = Beta('B_TIME_PUB', 0, None, None, 0)
    B_TIME_CAR_BUSINESS = Beta('B_TIME_CAR_BUSINESS', 0, None, None, 0)
    B_TIME_TRAIN_BUSINESS = Beta('B_TIME_TRAIN_BUSINESS', 0, None, None, 0)
    B_TIME_SM_BUSINESS = Beta('B_TIME_SM_BUSINESS', 0, None, None, 0)
    B_TIME_PUB_BUSINESS = Beta('B_TIME_PUB_BUSINESS', 0, None, None, 0)
    B_TIME_CAR_PRIVATE = Beta('B_TIME_CAR_PRIVATE', 0, None, None, 0)
    B_TIME_TRAIN_PRIVATE = Beta('B_TIME_TRAIN_PRIVATE', 0, None, None, 0)
    B_TIME_SM_PRIVATE = Beta('B_TIME_SM_PRIVATE', 0, None, None, 0)
    B_TIME_PUB_PRIVATE = Beta('B_TIME_PUB_PRIVATE', 0, None, None, 0)

    #HE (Note: Not available for car)
    B_HE = Beta('B_HE', 0, None, None, 0)
    B_HE_TRAIN = Beta('B_HE_TRAIN', 0, None, None, 0)
    B_HE_SM = Beta('B_HE_SM', 0, None, None, 0)
    B_HE_BUSINESS = Beta('B_HE_BUSINESS', 0, None, None, 0)
    B_HE_TRAIN_BUSINESS = Beta('B_HE_TRAIN_BUSINESS', 0, None, None, 0)
    B_HE_SM_BUSINESS = Beta('B_HE_SM_BUSINESS', 0, None, None, 0)
    B_HE_PRIVATE = Beta('B_HE_PRIVATE', 0, None, None, 0)
    B_HE_TRAIN_PRIVATE = Beta('B_HE_TRAIN_PRIVATE', 0, None, None, 0)
    B_HE_SM_PRIVATE = Beta('B_HE_SM_PRIVATE', 0, None, None, 0)

    #Seats (Note: Only avaliable for SM)
    B_SEATS = Beta('B_SEATS', 0, None, None, 0)

    ##Characteristics
    #Age
    B_AGE_1_TRAIN = Beta('B_AGE_1_TRAIN', 0, None, None, 1)  #Note: Reference
    B_AGE_2_TRAIN = Beta('B_AGE_2_TRAIN', 0, None, None, 0)
    B_AGE_3_TRAIN = Beta('B_AGE_3_TRAIN', 0, None, None, 0)
    B_AGE_4_TRAIN = Beta('B_AGE_4_TRAIN', 0, None, None, 0)
    B_AGE_5_TRAIN = Beta('B_AGE_5_TRAIN', 0, None, None, 0)
    B_AGE_6_TRAIN = Beta('B_AGE_6_TRAIN', 0, None, None, 0)
    B_AGE_1_SM = Beta('B_AGE_1_SM', 0, None, None, 1)  #Note: Reference
    B_AGE_2_SM = Beta('B_AGE_2_SM', 0, None, None, 0)
    B_AGE_3_SM = Beta('B_AGE_3_SM', 0, None, None, 0)
    B_AGE_4_SM = Beta('B_AGE_4_SM', 0, None, None, 0)
    B_AGE_5_SM = Beta('B_AGE_5_SM', 0, None, None, 0)
    B_AGE_6_SM = Beta('B_AGE_6_SM', 0, None, None, 0)
    B_AGE_1_PUB = Beta('B_AGE_1_PUB', 0, None, None, 1)  #Note: Reference
    B_AGE_2_PUB = Beta('B_AGE_2_PUB', 0, None, None, 0)
    B_AGE_3_PUB = Beta('B_AGE_3_PUB', 0, None, None, 0)
    B_AGE_4_PUB = Beta('B_AGE_4_PUB', 0, None, None, 0)
    B_AGE_5_PUB = Beta('B_AGE_5_PUB', 0, None, None, 0)
    B_AGE_6_PUB = Beta('B_AGE_6_PUB', 0, None, None, 0)
    B_AGE_ADULTS_TRAIN = Beta('B_AGE_TRAIN_ADULTS', 0, None, None, 0)
    B_AGE_ADULTS_SM = Beta('B_AGE_ADULTS_SM', 0, None, None, 0)
    B_AGE_ADULTS_PUB = Beta('B_AGE_ADULTS_PUB', 0, None, None, 0)

    #Luggage
    B_LUGGAGE_TRAIN = Beta('B_LUGGAGE_TRAIN', 0, None, None, 0)
    B_LUGGAGE_SM = Beta('B_LUGGAGE_SM', 0, None, None, 0)
    B_LUGGAGE_PUB = Beta('B_LUGGAGE_PUB', 0, None, None, 0)

    #Gender
    B_MALE_TRAIN = Beta('B_MALE_TRAIN', 0, None, None, 0)
    B_MALE_SM = Beta('B_MALE_SM', 0, None, None, 0)
    B_MALE_PUB = Beta('B_MALE_PUB', 0, None, None, 0)

    #Purpose
    B_BUSINESS = Beta('B_BUSINESS', 0, None, None, 0)
    B_BUSINESS_TRAIN = Beta('B_BUSINESS_TRAIN', 0, None, None, 0)
    B_BUSINESS_SM = Beta('B_BUSINESS_SM', 0, None, None, 0)
    B_PRIVATE = Beta('B_PRIVATE', 0, None, None, 0)
    B_PRIVATE_TRAIN = Beta('B_PRIVATE_TRAIN', 0, None, None, 0)
    B_PRIVATE_SM = Beta('B_PRIVATE_SM', 0, None, None, 0)
    B_COMMUTER = Beta('B_COMMUTER', 0, None, None, 0)
    B_COMMUTER_TRAIN = Beta('B_COMMUTER_TRAIN', 0, None, None, 0)
    B_COMMUTER_SM = Beta('B_COMMUTER_SM', 0, None, None, 0)

    #GA
    B_GA = Beta('B_GA', 0, None, None, 0)
    B_GA_TRAIN = Beta('B_GA_TRAIN', 0, None, None, 0)
    B_GA_SM = Beta('B_GA_SM', 0, None, None, 0)

    #First
    B_FIRST_TRAIN = Beta('B_FIRST_TRAIN', 0, None, None, 0)
    B_FIRST_SM = Beta('B_FIRST_SM', 0, None, None, 0)
    B_FIRST = Beta('B_FIRST', 0, None, None, 0)

    ##Non linearization
    #Cost
    q_COST = Beta('q_COST', 1, None, None, 0)

    #Time
    q_TIME = Beta('q_TIME', 1, None, None, 0)
    q_TIME_TRAIN = Beta('q_TIME_TRAIN', 1, None, None, 0)
    q_TIME_SM = Beta('q_TIME_SM', 1, None, None, 0)
    q_TIME_CAR = Beta('q_TIME_CAR', 1, None, None, 0)
    q_TIME_PUB = Beta('q_TIME_PUB', 1, None, None, 0)

    #HE
    q_HE = Beta('q_HE', 1, None, None, 0)

    ##Nesting parameter
    MU = Beta('MU', 1, 0, 1, 0)

    ##ML RANDOM GENERIC TIME LOGNORMAL
    BETA_TIME_mean = Beta('BETA_TIME_mean', 0, None, None, 0)
    BETA_TIME_std = Beta('BETA_TIME_std', 1, None, None, 0)
    BETA_TIME_random = -exp(BETA_TIME_mean + BETA_TIME_std *
                            bioDraws('BETA_TIME_random', 'NORMAL'))

    ##ML RANDOM SPECIFIC TIME TRAIN LOGNORMAL
    BETA_TIME_TRAIN_mean = Beta('BETA_TIME_TRAIN_mean', 0, None, None, 0)
    BETA_TIME_TRAIN_std = Beta('BETA_TIME_TRAIN_std', 1, None, None, 0)
    BETA_TIME_TRAIN_random = -exp(BETA_TIME_TRAIN_mean + BETA_TIME_TRAIN_std *
                                  bioDraws('BETA_TIME_TRAIN_random', 'NORMAL'))

    ##ML RANDOM SPECIFIC TIME SM  LOGNORMAL
    BETA_TIME_SM_mean = Beta('BETA_TIME_SM_mean', 0, None, None, 0)
    BETA_TIME_SM_std = Beta('BETA_TIME_SM_std', 1, None, None, 0)
    BETA_TIME_SM_random = -exp(BETA_TIME_SM_mean + BETA_TIME_SM_std *
                               bioDraws('BETA_TIME_SM_random', 'NORMAL'))

    ##ML RANDOM SPECIFIC TIME CAR LOGNORMAL
    BETA_TIME_CAR_mean = Beta('BETA_TIME_CAR_mean', 0, None, None, 0)
    BETA_TIME_CAR_std = Beta('BETA_TIME_CAR_std', 1, None, None, 0)
    BETA_TIME_CAR_random = -exp(BETA_TIME_CAR_mean + BETA_TIME_CAR_std *
                                bioDraws('BETA_TIME_CAR_random', 'NORMAL'))

    ##ML RANDOM GENERIC COST LOGNORMAL
    BETA_COST_mean = Beta('BETA_COST_mean', 0, None, None, 0)
    BETA_COST_std = Beta('BETA_COST_std', 1, None, None, 0)
    BETA_COST_random = -exp(BETA_COST_mean + BETA_COST_std *
                            bioDraws('BETA_COST_random', 'NORMAL'))

    ##ML RANDOM GENERIC HE LOGNORMAL
    BETA_HE_mean = Beta('BETA_HE_mean', 0, None, None, 0)
    BETA_HE_std = Beta('BETA_HE_std', 1, None, None, 0)
    BETA_HE_random = -exp(BETA_HE_mean +
                          BETA_HE_std * bioDraws('BETA_HE_random', 'NORMAL'))

    ##ML RANDOM GENERIC TIME NORMAL
    BETA_TIME_mean_Norm = Beta('BETA_TIME_mean_Norm', 0, None, None, 0)
    BETA_TIME_std_Norm = Beta('BETA_TIME_std_Norm', 1, None, None, 0)
    BETA_TIME_random_Norm = BETA_TIME_mean_Norm + BETA_TIME_std_Norm * bioDraws(
        'BETA_TIME_random_Norm', 'NORMAL')

    ##ML RANDOM SPECIFIC TIME TRAIN LOGNORMAL
    BETA_TIME_TRAIN_mean_Norm = Beta('BETA_TIME_TRAIN_mean_Norm', 0, None,
                                     None, 0)
    BETA_TIME_TRAIN_std_Norm = Beta('BETA_TIME_TRAIN_std_Norm', 1, None, None,
                                    0)
    BETA_TIME_TRAIN_random_Norm = BETA_TIME_TRAIN_mean_Norm + BETA_TIME_TRAIN_std_Norm * bioDraws(
        'BETA_TIME_TRAIN_random_Norm', 'NORMAL')

    ##ML RANDOM GENERIC COST LOGNORMAL
    BETA_COST_PUB_mean = Beta('BBETA_COST_PUB_mean', 0, None, None, 0)
    BETA_COST_PUB_std = Beta('BBETA_COST_PUB_std', 1, None, None, 0)
    BETA_COST_PUB_random = -exp(BETA_COST_PUB_mean + BETA_COST_PUB_std *
                                bioDraws('BBETA_COST_PUB_random', 'NORMAL'))

    ##ML RANDOM SPECIFIC TIME SM  NORMAL
    BETA_TIME_SM_mean_Norm = Beta('BETA_TIME_SM_mean_Norm', 0, None, None, 0)
    BETA_TIME_SM_std_Norm = Beta('BETA_TIME_SM_std_Norm', 1, None, None, 0)
    BETA_TIME_SM_random_Norm = BETA_TIME_SM_mean_Norm + BETA_TIME_SM_std_Norm * bioDraws(
        'BETA_TIME_SM_random_Norm', 'NORMAL')

    ##ML RANDOM SPECIFIC TIME CAR NORMAL
    BETA_TIME_CAR_mean_Norm = Beta('BETA_TIME_CAR_mean_Norm', 0, None, None, 0)
    BETA_TIME_CAR_std_Norm = Beta('BETA_TIME_CAR_std_Norm', 1, None, None, 0)
    BETA_TIME_CAR_random_Norm = BETA_TIME_CAR_mean_Norm + BETA_TIME_CAR_std_Norm * bioDraws(
        'BETA_TIME_CAR_random_Norm', 'NORMAL')

    ##ML RANDOM GENERIC COST NORMAL
    BETA_COST_mean_Norm = Beta('BETA_COST_mean_Norm', 0, None, None, 0)
    BETA_COST_std_Norm = Beta('BETA_COST_std_Norm', 1, None, None, 0)
    BETA_COST_random_Norm = BETA_COST_mean_Norm + BETA_COST_std_Norm * bioDraws(
        'BETA_COST_random_Norm', 'NORMAL')

    ##ML RANDOM GENERIC HE NORMAL
    BETA_HE_mean_Norm = Beta('BETA_HE_mean_Norm', 0, None, None, 0)
    BETA_HE_std_Norm = Beta('BETA_HE_std_Norm', 1, None, None, 0)
    BETA_HE_random_Norm = BETA_HE_mean_Norm + BETA_HE_std_Norm * bioDraws(
        'BETA_HE_random_Norm', 'NORMAL')

    ##ML RANDOM GENERIC TIME NORMAL
    BBETA_TIME_mean_Norm = Beta('BBETA_TIME_mean_Norm', 0, None, None, 0)
    BBETA_TIME_std_Norm = Beta('BBETA_TIME_std_Norm', 1, None, None, 0)
    BBETA_TIME_random_Norm = BBETA_TIME_mean_Norm + BBETA_TIME_std_Norm * bioDraws(
        'BBETA_TIME_random_Norm', 'NORMAL')

    ##ML RANDOM SPECIFIC TIME TRAIN LOGNORMAL
    BBETA_TIME_TRAIN_mean_Norm = Beta('BBETA_TIME_TRAIN_mean_Norm', 0, None,
                                      None, 0)
    BBETA_TIME_TRAIN_std_Norm = Beta('BBETA_TIME_TRAIN_std_Norm', 1, None,
                                     None, 0)
    BBETA_TIME_TRAIN_random_Norm = BBETA_TIME_TRAIN_mean_Norm + BBETA_TIME_TRAIN_std_Norm * bioDraws(
        'BBETA_TIME_TRAIN_random_Norm', 'NORMAL')

    ##Scaling 'COST', 'TRAVEL-TIME' and 'HE' by a factor of 100 and adding the scaled variables to the database
    '''
    ***********************************************************************************************
    '''

    #PUBLIC
    TRAIN_COST_SCALED = DefineVariable('TRAIN_COST_SCALED',\
                                       TRAIN_COST / COST_SCALE_PUB,db_test)
    SM_COST_SCALED = DefineVariable('SM_COST_SCALED', SM_COST / COST_SCALE_PUB,
                                    db_test)

    #CAR
    CAR_COST_SCALED = DefineVariable('CAR_COST_SCALED',
                                     CAR_CO / COST_SCALE_CAR, db_test)
    '''
    ***********************************************************************************************
    '''
    TRAIN_TT_SCALED = DefineVariable('TRAIN_TT_SCALED',\
                                     TRAIN_TT / 100.0,db_test)

    TRAIN_HE_SCALED = DefineVariable('TRAIN_HE_SCALED',\
                                       TRAIN_HE / 100, db_test)

    SM_TT_SCALED = DefineVariable('SM_TT_SCALED', SM_TT / 100.0, db_test)

    SM_HE_SCALED = DefineVariable('SM_HE_SCALED',\
                                       SM_HE / 100, db_test)

    CAR_TT_SCALED = DefineVariable('CAR_TT_SCALED', CAR_TT / 100, db_test)

    ###Defining new variables and adding columns to the database
    #Age
    AGE_1 = DefineVariable('AGE_1', (AGE == 1),
                           db_test)  #don't scale because is cathegorical
    AGE_2 = DefineVariable('AGE_2', (AGE == 2), db_test)
    AGE_3 = DefineVariable('AGE_3', (AGE == 3), db_test)
    AGE_4 = DefineVariable('AGE_4', (AGE == 4), db_test)
    AGE_5 = DefineVariable('AGE_5', (AGE == 5), db_test)
    AGE_6 = DefineVariable('AGE_6', (AGE == 6), db_test)

    #Purpose
    PRIVATE = DefineVariable("PRIVATE", (PURPOSE == 1), db_test)
    COMMUTER = DefineVariable("COMMUTER", (PURPOSE == 2), db_test)
    BUSINESS = DefineVariable("BUSINESS", (PURPOSE == 3), db_test)

    av = {3: CAR_AV_SP, 1: TRAIN_AV_SP, 2: SM_AV}
    prob1 = biogeme.expressions.MonteCarlo(exp(models.loglogit(V, av, 1)))
    prob2 = biogeme.expressions.MonteCarlo(exp(models.loglogit(V, av, 2)))
    prob3 = biogeme.expressions.MonteCarlo(exp(models.loglogit(V, av, 3)))
    simulate = {'Prob. TRAIN': prob1, 'Prob. SM': prob2, 'Prob. CAR': prob3}
    #print(simulate)
    biosim = bio.BIOGEME(db_test, simulate, numberOfDraws=Draws)
    biosim.modelName = ModName
    SR = biosim.simulate(R.data.betaValues)

    return SR
示例#11
0
def cv_estimate_model(V,
                      Draws,
                      ModName,
                      train,
                      myRandomNumberGenerators,
                      COST_SCALE_CAR=100,
                      COST_SCALE_PUB=100):
    db_train = db.Database("swissmetro_train", train)
    db_train.setRandomNumberGenerators(myRandomNumberGenerators)
    globals().update(db_train.variables)
    #locals().update(db_train.variables)
    db_train.panel('ID')

    #variables
    CAR_AV_SP = DefineVariable('CAR_AV_SP', CAR_AV * (SP != 0), db_train)
    TRAIN_AV_SP = DefineVariable('TRAIN_AV_SP', TRAIN_AV * (SP != 0), db_train)

    SM_COST = SM_CO * (GA == 0)
    TRAIN_COST = TRAIN_CO * (GA == 0)

    ###Parameters to be estimated (Note not all parameters are used in all models!)
    ##Attributes
    #Alternative specific constants
    ASC_CAR = Beta('ASC_CAR', 0, None, None, 1)
    ASC_TRAIN = Beta('ASC_TRAIN', 0, None, None, 0)
    ASC_SM = Beta('ASC_SM', 0, None, None, 0)

    #Cost (Note: Assumed generic)
    B_COST = Beta('B_COST', 0, None, None, 0)
    B_COST_BUSINESS = Beta('B_COST_BUSINESS', 0, None, None, 0)
    B_COST_PRIVATE = Beta('B_COST_PRIVATE', 0, None, None, 0)

    #Time
    B_TIME = Beta('B_TIME', 0, None, None, 0)
    B_TIME_CAR = Beta('B_TIME_CAR', 0, None, None, 0)
    B_TIME_TRAIN = Beta('B_TIME_TRAIN', 0, None, None, 0)
    B_TIME_SM = Beta('B_TIME_SM', 0, None, None, 0)
    B_TIME_PUB = Beta('B_TIME_PUB', 0, None, None, 0)
    B_TIME_CAR_BUSINESS = Beta('B_TIME_CAR_BUSINESS', 0, None, None, 0)
    B_TIME_TRAIN_BUSINESS = Beta('B_TIME_TRAIN_BUSINESS', 0, None, None, 0)
    B_TIME_SM_BUSINESS = Beta('B_TIME_SM_BUSINESS', 0, None, None, 0)
    B_TIME_PUB_BUSINESS = Beta('B_TIME_PUB_BUSINESS', 0, None, None, 0)
    B_TIME_CAR_PRIVATE = Beta('B_TIME_CAR_PRIVATE', 0, None, None, 0)
    B_TIME_TRAIN_PRIVATE = Beta('B_TIME_TRAIN_PRIVATE', 0, None, None, 0)
    B_TIME_SM_PRIVATE = Beta('B_TIME_SM_PRIVATE', 0, None, None, 0)
    B_TIME_PUB_PRIVATE = Beta('B_TIME_PUB_PRIVATE', 0, None, None, 0)

    #HE (Note: Not available for car)
    B_HE = Beta('B_HE', 0, None, None, 0)
    B_HE_TRAIN = Beta('B_HE_TRAIN', 0, None, None, 0)
    B_HE_SM = Beta('B_HE_SM', 0, None, None, 0)
    B_HE_BUSINESS = Beta('B_HE_BUSINESS', 0, None, None, 0)
    B_HE_TRAIN_BUSINESS = Beta('B_HE_TRAIN_BUSINESS', 0, None, None, 0)
    B_HE_SM_BUSINESS = Beta('B_HE_SM_BUSINESS', 0, None, None, 0)
    B_HE_PRIVATE = Beta('B_HE_PRIVATE', 0, None, None, 0)
    B_HE_TRAIN_PRIVATE = Beta('B_HE_TRAIN_PRIVATE', 0, None, None, 0)
    B_HE_SM_PRIVATE = Beta('B_HE_SM_PRIVATE', 0, None, None, 0)

    #Seats (Note: Only avaliable for SM)
    B_SEATS = Beta('B_SEATS', 0, None, None, 0)

    ##Characteristics
    #Age
    B_AGE_1_TRAIN = Beta('B_AGE_1_TRAIN', 0, None, None, 1)  #Note: Reference
    B_AGE_2_TRAIN = Beta('B_AGE_2_TRAIN', 0, None, None, 0)
    B_AGE_3_TRAIN = Beta('B_AGE_3_TRAIN', 0, None, None, 0)
    B_AGE_4_TRAIN = Beta('B_AGE_4_TRAIN', 0, None, None, 0)
    B_AGE_5_TRAIN = Beta('B_AGE_5_TRAIN', 0, None, None, 0)
    B_AGE_6_TRAIN = Beta('B_AGE_6_TRAIN', 0, None, None, 0)
    B_AGE_1_SM = Beta('B_AGE_1_SM', 0, None, None, 1)  #Note: Reference
    B_AGE_2_SM = Beta('B_AGE_2_SM', 0, None, None, 0)
    B_AGE_3_SM = Beta('B_AGE_3_SM', 0, None, None, 0)
    B_AGE_4_SM = Beta('B_AGE_4_SM', 0, None, None, 0)
    B_AGE_5_SM = Beta('B_AGE_5_SM', 0, None, None, 0)
    B_AGE_6_SM = Beta('B_AGE_6_SM', 0, None, None, 0)
    B_AGE_1_PUB = Beta('B_AGE_1_PUB', 0, None, None, 1)  #Note: Reference
    B_AGE_2_PUB = Beta('B_AGE_2_PUB', 0, None, None, 0)
    B_AGE_3_PUB = Beta('B_AGE_3_PUB', 0, None, None, 0)
    B_AGE_4_PUB = Beta('B_AGE_4_PUB', 0, None, None, 0)
    B_AGE_5_PUB = Beta('B_AGE_5_PUB', 0, None, None, 0)
    B_AGE_6_PUB = Beta('B_AGE_6_PUB', 0, None, None, 0)
    B_AGE_ADULTS_TRAIN = Beta('B_AGE_TRAIN_ADULTS', 0, None, None, 0)
    B_AGE_ADULTS_SM = Beta('B_AGE_ADULTS_SM', 0, None, None, 0)
    B_AGE_ADULTS_PUB = Beta('B_AGE_ADULTS_PUB', 0, None, None, 0)

    #Luggage
    B_LUGGAGE_TRAIN = Beta('B_LUGGAGE_TRAIN', 0, None, None, 0)
    B_LUGGAGE_SM = Beta('B_LUGGAGE_SM', 0, None, None, 0)
    B_LUGGAGE_PUB = Beta('B_LUGGAGE_PUB', 0, None, None, 0)

    #Gender
    B_MALE_TRAIN = Beta('B_MALE_TRAIN', 0, None, None, 0)
    B_MALE_SM = Beta('B_MALE_SM', 0, None, None, 0)
    B_MALE_PUB = Beta('B_MALE_PUB', 0, None, None, 0)

    #Purpose
    B_BUSINESS = Beta('B_BUSINESS', 0, None, None, 0)
    B_BUSINESS_TRAIN = Beta('B_BUSINESS_TRAIN', 0, None, None, 0)
    B_BUSINESS_SM = Beta('B_BUSINESS_SM', 0, None, None, 0)
    B_PRIVATE = Beta('B_PRIVATE', 0, None, None, 0)
    B_PRIVATE_TRAIN = Beta('B_PRIVATE_TRAIN', 0, None, None, 0)
    B_PRIVATE_SM = Beta('B_PRIVATE_SM', 0, None, None, 0)
    B_COMMUTER = Beta('B_COMMUTER', 0, None, None, 0)
    B_COMMUTER_TRAIN = Beta('B_COMMUTER_TRAIN', 0, None, None, 0)
    B_COMMUTER_SM = Beta('B_COMMUTER_SM', 0, None, None, 0)

    #GA
    B_GA = Beta('B_GA', 0, None, None, 0)
    B_GA_TRAIN = Beta('B_GA_TRAIN', 0, None, None, 0)
    B_GA_SM = Beta('B_GA_SM', 0, None, None, 0)

    #First
    B_FIRST_TRAIN = Beta('B_FIRST_TRAIN', 0, None, None, 0)
    B_FIRST_SM = Beta('B_FIRST_SM', 0, None, None, 0)
    B_FIRST = Beta('B_FIRST', 0, None, None, 0)

    ##Non linearization
    #Cost
    q_COST = Beta('q_COST', 1, None, None, 0)

    #Time
    q_TIME = Beta('q_TIME', 1, None, None, 0)
    q_TIME_TRAIN = Beta('q_TIME_TRAIN', 1, None, None, 0)
    q_TIME_SM = Beta('q_TIME_SM', 1, None, None, 0)
    q_TIME_CAR = Beta('q_TIME_CAR', 1, None, None, 0)
    q_TIME_PUB = Beta('q_TIME_PUB', 1, None, None, 0)

    #HE
    q_HE = Beta('q_HE', 1, None, None, 0)

    ##Nesting parameter
    MU = Beta('MU', 1, 0, 1, 0)

    ##ML RANDOM GENERIC TIME LOGNORMAL
    BETA_TIME_mean = Beta('BETA_TIME_mean', 0, None, None, 0)
    BETA_TIME_std = Beta('BETA_TIME_std', 1, None, None, 0)
    BETA_TIME_random = -exp(BETA_TIME_mean + BETA_TIME_std *
                            bioDraws('BETA_TIME_random', 'NORMAL'))

    ##ML RANDOM SPECIFIC TIME TRAIN LOGNORMAL
    BETA_TIME_TRAIN_mean = Beta('BETA_TIME_TRAIN_mean', 0, None, None, 0)
    BETA_TIME_TRAIN_std = Beta('BETA_TIME_TRAIN_std', 1, None, None, 0)
    BETA_TIME_TRAIN_random = -exp(BETA_TIME_TRAIN_mean + BETA_TIME_TRAIN_std *
                                  bioDraws('BETA_TIME_TRAIN_random', 'NORMAL'))

    ##ML RANDOM SPECIFIC TIME SM  LOGNORMAL
    BETA_TIME_SM_mean = Beta('BETA_TIME_SM_mean', 0, None, None, 0)
    BETA_TIME_SM_std = Beta('BETA_TIME_SM_std', 1, None, None, 0)
    BETA_TIME_SM_random = -exp(BETA_TIME_SM_mean + BETA_TIME_SM_std *
                               bioDraws('BETA_TIME_SM_random', 'NORMAL'))

    ##ML RANDOM SPECIFIC TIME CAR LOGNORMAL
    BETA_TIME_CAR_mean = Beta('BETA_TIME_CAR_mean', 0, None, None, 0)
    BETA_TIME_CAR_std = Beta('BETA_TIME_CAR_std', 1, None, None, 0)
    BETA_TIME_CAR_random = -exp(BETA_TIME_CAR_mean + BETA_TIME_CAR_std *
                                bioDraws('BETA_TIME_CAR_random', 'NORMAL'))

    ##ML RANDOM GENERIC COST LOGNORMAL
    BETA_COST_mean = Beta('BETA_COST_mean', 0, None, None, 0)
    BETA_COST_std = Beta('BETA_COST_std', 1, None, None, 0)
    BETA_COST_random = -exp(BETA_COST_mean + BETA_COST_std *
                            bioDraws('BETA_COST_random', 'NORMAL'))

    ##ML RANDOM GENERIC HE LOGNORMAL
    BETA_HE_mean = Beta('BETA_HE_mean', 0, None, None, 0)
    BETA_HE_std = Beta('BETA_HE_std', 1, None, None, 0)
    BETA_HE_random = -exp(BETA_HE_mean +
                          BETA_HE_std * bioDraws('BETA_HE_random', 'NORMAL'))

    ##ML RANDOM GENERIC TIME NORMAL
    BETA_TIME_mean_Norm = Beta('BETA_TIME_mean_Norm', 0, None, None, 0)
    BETA_TIME_std_Norm = Beta('BETA_TIME_std_Norm', 1, None, None, 0)
    BETA_TIME_random_Norm = BETA_TIME_mean_Norm + BETA_TIME_std_Norm * bioDraws(
        'BETA_TIME_random_Norm', 'NORMAL')

    ##ML RANDOM SPECIFIC TIME TRAIN LOGNORMAL
    BETA_TIME_TRAIN_mean_Norm = Beta('BETA_TIME_TRAIN_mean_Norm', 0, None,
                                     None, 0)
    BETA_TIME_TRAIN_std_Norm = Beta('BETA_TIME_TRAIN_std_Norm', 1, None, None,
                                    0)
    BETA_TIME_TRAIN_random_Norm = BETA_TIME_TRAIN_mean_Norm + BETA_TIME_TRAIN_std_Norm * bioDraws(
        'BETA_TIME_TRAIN_random_Norm', 'NORMAL')

    ##ML RANDOM SPECIFIC TIME SM  NORMAL
    BETA_TIME_SM_mean_Norm = Beta('BETA_TIME_SM_mean_Norm', 0, None, None, 0)
    BETA_TIME_SM_std_Norm = Beta('BETA_TIME_SM_std_Norm', 1, None, None, 0)
    BETA_TIME_SM_random_Norm = BETA_TIME_SM_mean_Norm + BETA_TIME_SM_std_Norm * bioDraws(
        'BETA_TIME_SM_random_Norm', 'NORMAL')

    ##ML RANDOM SPECIFIC TIME CAR NORMAL
    BETA_TIME_CAR_mean_Norm = Beta('BETA_TIME_CAR_mean_Norm', 0, None, None, 0)
    BETA_TIME_CAR_std_Norm = Beta('BETA_TIME_CAR_std_Norm', 1, None, None, 0)
    BETA_TIME_CAR_random_Norm = BETA_TIME_CAR_mean_Norm + BETA_TIME_CAR_std_Norm * bioDraws(
        'BETA_TIME_CAR_random_Norm', 'NORMAL')

    ##ML RANDOM GENERIC COST LOGNORMAL
    BETA_COST_PUB_mean = Beta('BBETA_COST_PUB_mean', 0, None, None, 0)
    BETA_COST_PUB_std = Beta('BBETA_COST_PUB_std', 1, None, None, 0)
    BETA_COST_PUB_random = -exp(BETA_COST_PUB_mean + BETA_COST_PUB_std *
                                bioDraws('BBETA_COST_PUB_random', 'NORMAL'))

    ##ML RANDOM GENERIC COST NORMAL
    BETA_COST_mean_Norm = Beta('BETA_COST_mean_Norm', 0, None, None, 0)
    BETA_COST_std_Norm = Beta('BETA_COST_std_Norm', 1, None, None, 0)
    BETA_COST_random_Norm = BETA_COST_mean_Norm + BETA_COST_std_Norm * bioDraws(
        'BETA_COST_random_Norm', 'NORMAL')

    ##ML RANDOM GENERIC HE NORMAL
    BETA_HE_mean_Norm = Beta('BETA_HE_mean_Norm', 0, None, None, 0)
    BETA_HE_std_Norm = Beta('BETA_HE_std_Norm', 1, None, None, 0)
    BETA_HE_random_Norm = BETA_HE_mean_Norm + BETA_HE_std_Norm * bioDraws(
        'BETA_HE_random_Norm', 'NORMAL')
    '''
    ***********************************************************************************************
    '''

    #PUBLIC
    TRAIN_COST_SCALED = DefineVariable('TRAIN_COST_SCALED',\
                                       TRAIN_COST / COST_SCALE_PUB,db_train)
    SM_COST_SCALED = DefineVariable('SM_COST_SCALED', SM_COST / COST_SCALE_PUB,
                                    db_train)

    #CAR
    CAR_COST_SCALED = DefineVariable('CAR_COST_SCALED',
                                     CAR_CO / COST_SCALE_CAR, db_train)
    '''
    ***********************************************************************************************
    '''
    ##Scaling 'COST', 'TRAVEL-TIME' and 'HE' by a factor of 100 and adding the scaled variables to the database

    TRAIN_TT_SCALED = DefineVariable('TRAIN_TT_SCALED',\
                                     TRAIN_TT / 100.0,db_train)

    TRAIN_HE_SCALED = DefineVariable('TRAIN_HE_SCALED',\
                                       TRAIN_HE / 100, db_train)

    SM_TT_SCALED = DefineVariable('SM_TT_SCALED', SM_TT / 100.0, db_train)

    SM_HE_SCALED = DefineVariable('SM_HE_SCALED',\
                                       SM_HE / 100, db_train)

    CAR_TT_SCALED = DefineVariable('CAR_TT_SCALED', CAR_TT / 100, db_train)

    ###Defining new variables and adding columns to the database
    #Age
    AGE_1 = DefineVariable('AGE_1', (AGE == 1),
                           db_train)  #don't scale because is cathegorical
    AGE_2 = DefineVariable('AGE_2', (AGE == 2), db_train)
    AGE_3 = DefineVariable('AGE_3', (AGE == 3), db_train)
    AGE_4 = DefineVariable('AGE_4', (AGE == 4), db_train)
    AGE_5 = DefineVariable('AGE_5', (AGE == 5), db_train)
    AGE_6 = DefineVariable('AGE_6', (AGE == 6), db_train)

    #Purpose
    PRIVATE = DefineVariable("PRIVATE", (PURPOSE == 1), db_train)
    COMMUTER = DefineVariable("COMMUTER", (PURPOSE == 2), db_train)
    BUSINESS = DefineVariable("BUSINESS", (PURPOSE == 3), db_train)

    #Model Estimation
    av = {3: CAR_AV_SP, 1: TRAIN_AV_SP, 2: SM_AV}
    obsprob = exp(models.loglogit(V, av, CHOICE))
    condprobIndiv = PanelLikelihoodTrajectory(obsprob)
    logprob = log(MonteCarlo(condprobIndiv))
    bg = bio.BIOGEME(db_train, logprob, numberOfDraws=Draws)
    bg.modelName = ModName
    result = bg.estimate()
    return result
示例#12
0
"""

# pylint: disable=invalid-name, undefined-variable

import pandas as pd
import biogeme.database as db
import biogeme.biogeme as bio
from biogeme.expressions import exp, bioDraws, MonteCarlo

# We create a fake database with one entry, as it is required
# to store the draws
pandas = pd.DataFrame()
pandas['FakeColumn'] = [1.0]
database = db.Database('fakeDatabase', pandas)

integrand = exp(bioDraws('U', 'UNIFORM'))
simulatedI = MonteCarlo(integrand)

trueI = exp(1.0) - 1.0

R = 2000

sampleVariance = MonteCarlo(integrand * integrand) - simulatedI * simulatedI
stderr = (sampleVariance / R)**0.5
error = simulatedI - trueI

simulate = {
    'Analytical Integral': trueI,
    'Simulated Integral': simulatedI,
    'Sample variance   ': sampleVariance,
    'Std Error         ': stderr,
示例#13
0
q_TIME_TRAIN = Beta('q_TIME_TRAIN', 1, None, None, 0)
q_TIME_SM = Beta('q_TIME_SM', 1, None, None, 0)
q_TIME_CAR = Beta('q_TIME_CAR', 1, None, None, 0)
q_TIME_PUB = Beta('q_TIME_PUB', 1, None, None, 0)

#HE
q_HE = Beta('q_HE', 1, None, None, 0)

##Nesting parameter
MU = Beta('MU', 1, 0, 1, 0)

##ML RANDOM GENERIC TIME LOGNORMAL
BETA_TIME_mean = Beta('BETA_TIME_mean', 0, None, None, 0)
BETA_TIME_std = Beta('BETA_TIME_std', 1, None, None, 0)
BETA_TIME_random = -exp(BETA_TIME_mean +
                        BETA_TIME_std * bioDraws('BETA_TIME_random', 'NORMAL'))

##ML RANDOM SPECIFIC TIME TRAIN LOGNORMAL
BETA_TIME_TRAIN_mean = Beta('BETA_TIME_TRAIN_mean', 0, None, None, 0)
BETA_TIME_TRAIN_std = Beta('BETA_TIME_TRAIN_std', 1, None, None, 0)
BETA_TIME_TRAIN_random = -exp(BETA_TIME_TRAIN_mean + BETA_TIME_TRAIN_std *
                              bioDraws('BETA_TIME_TRAIN_random', 'NORMAL'))

##ML RANDOM SPECIFIC TIME SM  LOGNORMAL
BETA_TIME_SM_mean = Beta('BETA_TIME_SM_mean', 0, None, None, 0)
BETA_TIME_SM_std = Beta('BETA_TIME_SM_std', 1, None, None, 0)
BETA_TIME_SM_random = -exp(BETA_TIME_SM_mean + BETA_TIME_SM_std *
                           bioDraws('BETA_TIME_SM_random', 'NORMAL'))

##ML RANDOM SPECIFIC TIME CAR LOGNORMAL
BETA_TIME_CAR_mean = Beta('BETA_TIME_CAR_mean', 0, None, None, 0)
# The following statement allows you to use the names of the variable
# as Python variable.
globals().update(database.variables)

#Parameters
ASC_CAR = 0.137
ASC_TRAIN = -0.402
ASC_SM = 0
B_TIME = -2.26
B_TIME_S = 1.66
B_COST = -1.29

omega = RandomVariable('omega')
density = dist.normalpdf(omega)
B_TIME_RND = B_TIME + B_TIME_S * omega
B_TIME_RND_normal = B_TIME + B_TIME_S * bioDraws('B_NORMAL', 'NORMAL')
B_TIME_RND_anti = B_TIME + B_TIME_S * bioDraws('B_ANTI', 'NORMAL_ANTI')
B_TIME_RND_halton = B_TIME + B_TIME_S * bioDraws('B_HALTON', 'NORMAL_HALTON2')
B_TIME_RND_mlhs = B_TIME + B_TIME_S * bioDraws('B_MLHS', 'NORMAL_MLHS')
B_TIME_RND_antimlhs = B_TIME + B_TIME_S * bioDraws('B_ANTIMLHS',
                                                   'NORMAL_MLHS_ANTI')

# Definition of new variables
SM_COST = SM_CO * (GA == 0)
TRAIN_COST = TRAIN_CO * (GA == 0)
CAR_AV_SP = CAR_AV * (SP != 0)
TRAIN_AV_SP = TRAIN_AV * (SP != 0)
TRAIN_TT_SCALED = TRAIN_TT / 100.0
TRAIN_COST_SCALED = TRAIN_COST / 100
SM_TT_SCALED = SM_TT / 100.0
SM_COST_SCALED = SM_COST / 100
beta_fru_class1 = Beta('beta_fru_class1', 0.1, None, None, 0)
CLASS_MAAS_1 = Beta('CLASS_MAAS_1', 0.1, None, None, 0)
beta_fam_1 = Beta('beta_fam_1', 0.1, None, None, 0)
beta_edu2_1 = Beta('beta_edu2_1', 0.1, None, None, 0)
beta_inc2_1 = Beta('beta_inc2_1', 0.1, None, None, 0)
beta_enthu_class2 = Beta('beta_enthu_class2', 0.1, None, None, 0)
beta_fru_class2 = Beta('beta_fru_class2', 0.1, None, None, 0)
CLASS_MAAS_2 = Beta('CLASS_MAAS_2', 0.1, None, None, 0)
beta_fam_2 = Beta('beta_fam_2', 0.1, None, None, 0)
beta_edu2_2 = Beta('beta_edu2_2', 0.1, None, None, 0)
beta_inc2_1 = Beta('beta_inc2_1', 0.1, None, None, 0)
beta_age = Beta('beta_age',0.1,None, None,0)
beta_freq = Beta('beta_freq',0.1,None,None,0)
SIGMA_SH_MAAS_M = [Beta(f'SIGMA_SH_MAAS_M{i}', 0, None, None, 1) for i in range(numberOfClasses)]
SIGMA_SH_MAAS_STD = [Beta(f'SIGMA_SH_MAAS_STD{i}', 0, None, None, 0) for i in range(numberOfClasses)]
SIGMA_SH_MAASRND = [SIGMA_SH_MAAS_M[i] + SIGMA_SH_MAAS_STD[i] * bioDraws(f'SIGMA_SH_MAASRND{i}', 'NORMAL_HALTON5') for i in range(numberOfClasses)]

# Utility functions
V1 = [ASC_1[i]  + beta_shcostperdist1[i] *(sharecost/distance) + beta_shtime[i] * sharetime  + SIGMA_SH_MAASRND[i]  for i in range(numberOfClasses)]

V2 = [ASC_2[i] +  beta_maascostperdist2[i] *(maascost/distance)+ beta_maastime1[i]*(maastime1) + beta_maastime2[i]* maastime2  +\
beta_extra[i]*(extra) *extra + SIGMA_SH_MAASRND[i]  for i in range(numberOfClasses)]

V3 = [ASC_3[i] + beta_totcostperdist[i] * (currcost/distance) for i in range(numberOfClasses)]

V = [{1: V1[i],
      2: V2[i],
      3: V3[i]} for i in range(numberOfClasses)]

# Associate the availability conditions with the alternatives
av = {1: availability1,2: availability2,3: availability3}
示例#16
0
b_time = Beta('b_time', 0, None, None, 0)
b_conven = Beta('b_conven', 0, None, None, 0)
b_comfort = Beta('b_comfort', 0, None, None, 0)
b_nonsig1 = Beta('b_nonsig1', 0, None, None, 0)
b_nonsig2 = Beta('b_nonsig2', 0, None, None, 0)
b_nonsig3 = Beta('b_nonsig3', 0, None, None, 0)

# Random params
u_meals = Beta('u_meals', 0, None, None, 0)
u_petfr = Beta('u_petfr', 0, None, None, 0)
u_emipp = Beta('u_emipp', 0, None, None, 0)
sd_meals = Beta('sd_meals', 0, None, None, 0)
sd_petfr = Beta('sd_petfr', 0, None, None, 0)
sd_emipp = Beta('sd_emipp', 0, None, None, 0)

b_meals = u_meals + sd_meals * bioDraws('b_meals', 'NORMAL')
b_petfr = u_petfr + sd_petfr * bioDraws('b_petfr', 'NORMAL')
b_emipp = u_emipp + sd_emipp * bioDraws('b_emipp', 'NORMAL')

V1 = price_1*b_price+time_1*b_time+conven_1*b_conven+comfort_1*b_comfort+\
    meals_1*b_meals+petfr_1*b_petfr+emipp_1*b_emipp+nonsig1_1*b_nonsig1+\
        nonsig2_1*b_nonsig2+nonsig3_1*b_nonsig3
V2 = price_2*b_price+time_2*b_time+conven_2*b_conven+comfort_2*b_comfort+\
    meals_2*b_meals+petfr_2*b_petfr+emipp_2*b_emipp+nonsig1_2*b_nonsig1+\
        nonsig2_2*b_nonsig2+nonsig3_2*b_nonsig3
V3 = price_3*b_price+time_3*b_time+conven_3*b_conven+comfort_3*b_comfort+\
    meals_3*b_meals+petfr_3*b_petfr+emipp_3*b_emipp+nonsig1_3*b_nonsig1+\
        nonsig2_3*b_nonsig2+nonsig3_3*b_nonsig3

V = {1: V1, 2: V2, 3: V3}
av = {1: aval_1, 2: aval_2, 3: aval_3}
示例#17
0
pandas['FakeColumn'] = [1.0]
database = db.Database('fakeDatabase', pandas)


def halton13(sampleSize, numberOfDraws):
    """
    The user can define new draws. For example, Halton draws
    with base 13, skipping the first 10 draws.
    """
    return draws.getHaltonDraws(sampleSize, numberOfDraws, base=13, skip=10)


mydraws = {'HALTON13': (halton13, 'Halton draws, base 13, skipping 10')}
database.setRandomNumberGenerators(mydraws)

integrand = exp(bioDraws('U', 'UNIFORM'))
simulatedI = MonteCarlo(integrand)

integrand_halton = exp(bioDraws('U_halton', 'UNIFORM_HALTON2'))
simulatedI_halton = MonteCarlo(integrand_halton)

integrand_halton13 = exp(bioDraws('U_halton13', 'HALTON13'))
simulatedI_halton13 = MonteCarlo(integrand_halton13)

integrand_mlhs = exp(bioDraws('U_mlhs', 'UNIFORM_MLHS'))
simulatedI_mlhs = MonteCarlo(integrand_mlhs)

trueI = exp(1.0) - 1.0

R = 20000
示例#18
0
    the first 10 draws.
    """
    d = draws.getHaltonDraws(sampleSize,
                             int(numberOfDraws / 2),
                             base=13,
                             skip=10)
    return np.concatenate((d, 1 - d), axis=1)


mydraws = {
    'HALTON13_ANTI':
    (halton13_anti, 'Antithetic Halton draws, base 13, skipping 10')
}
database.setRandomNumberGenerators(mydraws)

integrand = exp(bioDraws('U', 'UNIFORM_ANTI'))
simulatedI = MonteCarlo(integrand)

integrand_halton13 = exp(bioDraws('U_halton13', 'HALTON13_ANTI'))
simulatedI_halton13 = MonteCarlo(integrand_halton13)

integrand_mlhs = exp(bioDraws('U_mlhs', 'UNIFORM_MLHS_ANTI'))
simulatedI_mlhs = MonteCarlo(integrand_mlhs)

trueI = exp(1.0) - 1.0

R = 20000

error = simulatedI - trueI

error_halton13 = simulatedI_halton13 - trueI
示例#19
0
# Provide my own random number generator to the database.
# See the numpy.random documentation to obtain a list of other distributions.
def theTriangularGenerator(sampleSize, numberOfDraws):
    return np.random.triangular(-1, 0, 1, (sampleSize, numberOfDraws))


myRandomNumberGenerators = {
    'TRIANGULAR':
    (theTriangularGenerator, 'Triangulart distribution T(-1,0,1)')
}
database.setRandomNumberGenerators(myRandomNumberGenerators)

# Define a random parameter,  with a triangular distribution, designed to be used
# for Monte-Carlo simulation
EC_CAR = SIGMA_CAR * bioDraws('EC_CAR', 'TRIANGULAR')
EC_SM = SIGMA_SM * bioDraws('EC_SM', 'TRIANGULAR')
EC_TRAIN = SIGMA_TRAIN * bioDraws('EC_TRAIN', 'TRIANGULAR')

SM_COST = SM_CO * (GA == 0)
TRAIN_COST = TRAIN_CO * (GA == 0)

TRAIN_TT_SCALED = DefineVariable('TRAIN_TT_SCALED',\
                                 TRAIN_TT / 100.0,database)
TRAIN_COST_SCALED = DefineVariable('TRAIN_COST_SCALED',\
                                   TRAIN_COST / 100,database)
SM_TT_SCALED = DefineVariable('SM_TT_SCALED', SM_TT / 100.0, database)
SM_COST_SCALED = DefineVariable('SM_COST_SCALED', SM_COST / 100, database)
CAR_TT_SCALED = DefineVariable('CAR_TT_SCALED', CAR_TT / 100, database)
CAR_CO_SCALED = DefineVariable('CAR_CO_SCALED', CAR_CO / 100, database)
示例#20
0
#database.data.drop(database.data[remove].index,inplace=True)

# Here we use the "biogeme" way for backward compatibility
exclude = ((PURPOSE != 1) * (PURPOSE != 3) + (CHOICE == 0)) > 0
database.remove(exclude)

# Parameters to be estimated
B_COST = Beta('B_COST', -3.32, None, None, 0)

# Define a random parameter, normally distributed across individuals,
# designed to be used for Monte-Carlo simulation
B_TIME = Beta('B_TIME', -5.4, None, None, 0)

# It is advised not to use 0 as starting value for the following parameter.
B_TIME_S = Beta('B_TIME_S', 1.55, None, None, 0)
B_TIME_RND = B_TIME + B_TIME_S * bioDraws('B_TIME_RND', 'NORMAL_ANTI')

# We do the same for the constants, to address serial correlation.
ASC_CAR = Beta('ASC_CAR', 0.357, None, None, 0)
ASC_CAR_S = Beta('ASC_CAR_S', 3.37, None, None, 0)
ASC_CAR_RND = ASC_CAR + ASC_CAR_S * bioDraws('ASC_CAR_RND', 'NORMAL_ANTI')

ASC_TRAIN = Beta('ASC_TRAIN', -0.617, None, None, 0)
ASC_TRAIN_S = Beta('ASC_TRAIN_S', 3.13, None, None, 0)
ASC_TRAIN_RND = ASC_TRAIN + ASC_TRAIN_S * bioDraws('ASC_TRAIN_RND',
                                                   'NORMAL_ANTI')

ASC_SM = Beta('ASC_SM', 0, None, None, 1)
ASC_SM_S = Beta('ASC_SM_S', 1.36, None, None, 0)
ASC_SM_RND = ASC_SM + ASC_SM_S * bioDraws('ASC_SM_RND', 'NORMAL_ANTI')
示例#21
0
    Beta(f'B_COST_class{i}', 0, None, None, 0) for i in range(numberOfClasses)
]

# Define a random parameter, normally distributed across individuals,
# designed to be used for Monte-Carlo simulation
B_TIME = [
    Beta(f'B_TIME_class{i}', 0, None, None, 0) for i in range(numberOfClasses)
]

# It is advised not to use 0 as starting value for the following parameter.
B_TIME_S = [
    Beta(f'B_TIME_S_class{i}', 1, None, None, 0)
    for i in range(numberOfClasses)
]
B_TIME_RND = [
    B_TIME[i] + B_TIME_S[i] * bioDraws(f'B_TIME_RND_class{i}', 'NORMAL_ANTI')
    for i in range(numberOfClasses)
]

# We do the same for the constants, to address serial correlation.
ASC_CAR = [
    Beta(f'ASC_CAR_class{i}', 0, None, None, 0) for i in range(numberOfClasses)
]
ASC_CAR_S = [
    Beta(f'ASC_CAR_S_class{i}', 1, None, None, 0)
    for i in range(numberOfClasses)
]
ASC_CAR_RND = [
    ASC_CAR[i] +
    ASC_CAR_S[i] * bioDraws(f'ASC_CAR_RND_class{i}', 'NORMAL_ANTI')
    for i in range(numberOfClasses)
示例#22
0
 def test_expr3(self):
     myDraws = ex.bioDraws('myDraws', 'UNIFORM')
     expr3 = ex.MonteCarlo(myDraws * myDraws)
     res = expr3.getValue_c(self.myData, numberOfDraws=100000)
     for v in res:
         self.assertAlmostEqual(v, 1.0 / 3.0, 2)
示例#23
0
# Parameters to be estimated
ASC_CAR = Beta('ASC_CAR', 0, None, None, 0)
ASC_TRAIN = Beta('ASC_TRAIN', 0, None, None, 0)
ASC_SM = Beta('ASC_SM', 0, None, None, 1)
B_COST = Beta('B_COST', 0, None, None, 0)

# Define a random parameter, normally distributed, designed to be used
# for Monte-Carlo simulation
B_TIME = Beta('B_TIME', 0, None, None, 0)

# It is advised not to use 0 as starting value for the following parameter.
B_TIME_S = Beta('B_TIME_S', 1, None, None, 0)
# Define a random parameter with a normal distribution, designed to be used
# for quasi Monte-Carlo simulation with Halton draws (base 5).
B_TIME_RND = B_TIME + B_TIME_S * bioDraws('B_TIME_RND', 'NORMAL_HALTON5')

# Definition of new variables
SM_COST = SM_CO * (GA == 0)
TRAIN_COST = TRAIN_CO * (GA == 0)

# Definition of new variables: adding columns to the database
CAR_AV_SP = DefineVariable('CAR_AV_SP', CAR_AV * (SP != 0), database)
TRAIN_AV_SP = DefineVariable('TRAIN_AV_SP', TRAIN_AV * (SP != 0), database)
TRAIN_TT_SCALED = DefineVariable('TRAIN_TT_SCALED', TRAIN_TT / 100.0, database)
TRAIN_COST_SCALED = DefineVariable('TRAIN_COST_SCALED', TRAIN_COST / 100, database)
SM_TT_SCALED = DefineVariable('SM_TT_SCALED', SM_TT / 100.0, database)
SM_COST_SCALED = DefineVariable('SM_COST_SCALED', SM_COST / 100, database)
CAR_TT_SCALED = DefineVariable('CAR_TT_SCALED', CAR_TT / 100, database)
CAR_CO_SCALED = DefineVariable('CAR_CO_SCALED', CAR_CO / 100, database)
示例#24
0
beta_edu2 = Beta('beta_edu2', 0.1, None, None, 0)
beta_occ = Beta('beta_occ', 0.1, None, None, 0)
beta_inc2 = Beta('beta_inc2', 0.1, None, None, 0)
beta_age = Beta('beta_age', 0.1, None, None, 0)
beta_freq = Beta('beta_freq', 0.1, None, None, 0)
SIGMA_SH_MAAS_M = [
    Beta(f'SIGMA_SH_MAAS_M{i}', 0, None, None, 1)
    for i in range(numberOfClasses)
]
SIGMA_SH_MAAS_STD = [
    Beta(f'SIGMA_SH_MAAS_STD{i}', 0, None, None, 0)
    for i in range(numberOfClasses)
]
SIGMA_SH_MAASRND = [
    SIGMA_SH_MAAS_M[i] +
    SIGMA_SH_MAAS_STD[i] * bioDraws(f'SIGMA_SH_MAASRND{i}', 'NORMAL_HALTON5')
    for i in range(numberOfClasses)
]

# Utility functions
V1 = [ASC_1[i]* dtaxi + ASC_11[i]*dshare + beta_shcosttaxi1[i] *(sharecost)*dtaxi/10 + beta_shcostsharedcar[i] * sharecost *dshare/10 +\
    beta_shtime_taxi[i] * (sharetime)  + beta_dist[i] * sharedist/10 + SIGMA_SH_MAASRND[i]  for i in range(numberOfClasses)]

V2 = [ASC_2[i]* dtaxi +ASC_21[i]* dshare + beta_maascosttaxi[i] *(maascost)*dtaxi/10 + beta_maascostshare[i] * maascost * dshare/10 +\
beta_maastime12taxi[i] * (maastime1) + beta_maastime22taxi[i] * (maastime2) + beta_extra[i] * extra  + \
beta_maasdisbike[i] * maaskm2/10 +beta_maasdist[i] * sharedist /10  + SIGMA_SH_MAASRND[i] for i in range(numberOfClasses)]

V3 = [
    ASC_3[i] + beta_parktime3[i] * (parktime) + beta_parkcost3[i] *
    (parkcost) / 10 + beta_dist3[i] * sharedist / 10
    for i in range(numberOfClasses)
示例#25
0
exclude = ((PURPOSE != 1) * (PURPOSE != 3) + (CHOICE == 0)) > 0
database.remove(exclude)

ASC_CAR = Beta('ASC_CAR', 0, None, None, 0)
ASC_TRAIN = Beta('ASC_TRAIN', 0, None, None, 0)
ASC_SM = Beta('ASC_SM', 0, None, None, 1)
B_TIME = Beta('B_TIME', 0, None, None, 0)
B_COST = Beta('B_COST', 0, None, None, 0)

SIGMA_CAR = Beta('SIGMA_CAR', 0, None, None, 0)
SIGMA_SM = Beta('SIGMA_SM', 0, None, None, 1)
SIGMA_TRAIN = Beta('SIGMA_TRAIN', 0, None, None, 0)

# Define a random parameter, normally distirbuted, designed to be used
# for Monte-Carlo simulation
EC_CAR = SIGMA_CAR * bioDraws('EC_CAR', 'NORMAL')
EC_SM = SIGMA_SM * bioDraws('EC_SM', 'NORMAL')
EC_TRAIN = SIGMA_TRAIN * bioDraws('EC_TRAIN', 'NORMAL')

SM_COST = SM_CO * (GA == 0)
TRAIN_COST = TRAIN_CO * (GA == 0)

TRAIN_TT_SCALED = DefineVariable('TRAIN_TT_SCALED',\
                                 TRAIN_TT / 100.0,database)
TRAIN_COST_SCALED = DefineVariable('TRAIN_COST_SCALED',\
                                   TRAIN_COST / 100,database)
SM_TT_SCALED = DefineVariable('SM_TT_SCALED', SM_TT / 100.0, database)
SM_COST_SCALED = DefineVariable('SM_COST_SCALED', SM_COST / 100, database)
CAR_TT_SCALED = DefineVariable('CAR_TT_SCALED', CAR_TT / 100, database)
CAR_CO_SCALED = DefineVariable('CAR_CO_SCALED', CAR_CO / 100, database)
示例#26
0
#database.data.drop(database.data[remove].index,inplace=True)

# Here we use the "biogeme" way for backward compatibility
exclude = ((PURPOSE != 1) * (PURPOSE != 3) + (CHOICE == 0)) > 0
database.remove(exclude)

ASC_CAR = Beta('ASC_CAR', 0, None, None, 0)
ASC_TRAIN = Beta('ASC_TRAIN', 0, None, None, 0)
ASC_SM = Beta('ASC_SM', 0, None, None, 1)
B_TIME = Beta('B_TIME', 0, None, None, 0)
B_TIME_S = Beta('B_TIME_S', 1, None, None, 0)
B_COST = Beta('B_COST', 0, None, None, 0)

# Define a random parameter, normally distirbuted, designed to be used
# for Monte-Carlo simulation
B_TIME_RND = B_TIME + B_TIME_S * bioDraws('B_TIME_RND', 'UNIFORMSYM')

# Utility functions

#If the person has a GA (season ticket) her incremental cost is actually 0
#rather than the cost value gathered from the
# network data.
SM_COST = SM_CO * (GA == 0)
TRAIN_COST = TRAIN_CO * (GA == 0)

# For numerical reasons, it is good practice to scale the data to
# that the values of the parameters are around 1.0.
# A previous estimation with the unscaled data has generated
# parameters around -0.01 for both cost and time. Therefore, time and
# cost are multipled my 0.01.
示例#27
0
# Here we use the "biogeme" way for backward compatibility
exclude = ((PURPOSE != 1) * (PURPOSE != 3) + (CHOICE == 0)) > 0
database.remove(exclude)

ASC_CAR = Beta('ASC_CAR', 0, None, None, 0)
ASC_TRAIN = Beta('ASC_TRAIN', 0, None, None, 0)
ASC_SM = Beta('ASC_SM', 0, None, None, 1)
B_TIME = Beta('B_TIME', 0, None, None, 0)
B_COST = Beta('B_COST', 0, None, None, 0)

B_TIME_S = Beta('B_TIME_S', 0, None, None, 0)

# Define a random parameter, normally distirbuted, designed to be used
# for Monte-Carlo simulation
B_TIME_RND = B_TIME + B_TIME_S * bioDraws('B_TIME_RND', 'NORMAL')

SM_COST = SM_CO * (GA == 0)
TRAIN_COST = TRAIN_CO * (GA == 0)

TRAIN_TT_SCALED = DefineVariable('TRAIN_TT_SCALED',\
                                 TRAIN_TT / 100.0,database)
TRAIN_COST_SCALED = DefineVariable('TRAIN_COST_SCALED',\
                                   TRAIN_COST / 100,database)
SM_TT_SCALED = DefineVariable('SM_TT_SCALED', SM_TT / 100.0, database)
SM_COST_SCALED = DefineVariable('SM_COST_SCALED', SM_COST / 100, database)
CAR_TT_SCALED = DefineVariable('CAR_TT_SCALED', CAR_TT / 100, database)
CAR_CO_SCALED = DefineVariable('CAR_CO_SCALED', CAR_CO / 100, database)

V1 = ASC_TRAIN + \
     B_TIME_RND * TRAIN_TT_SCALED + \
示例#28
0
pandas['FakeColumn'] = [1.0]
database = db.Database('fakeDatabase', pandas)


def halton13(sampleSize, numberOfDraws):
    """
    The user can define new draws. For example, Halton draws with base 13, skipping
    the first 10 draws.
    """
    return draws.getHaltonDraws(sampleSize, numberOfDraws, base=13, skip=10)


mydraws = {'HALTON13': (halton13, 'Halton draws, base 13, skipping 10')}
database.setRandomNumberGenerators(mydraws)

U = bioDraws('U', 'UNIFORM')
integrand = exp(U) + exp(1 - U)
simulatedI = MonteCarlo(integrand) / 2.0

U_halton13 = bioDraws('U_halton13', 'HALTON13')
integrand_halton13 = exp(U_halton13) + exp(1 - U_halton13)
simulatedI_halton13 = MonteCarlo(integrand_halton13) / 2.0

U_mlhs = bioDraws('U_mlhs', 'UNIFORM_MLHS')
integrand_mlhs = exp(U_mlhs) + exp(1 - U_mlhs)
simulatedI_mlhs = MonteCarlo(integrand_mlhs) / 2.0

trueI = exp(1.0) - 1.0

R = 10000