Openquake Ground Motion Tookit - User Guide: "Openquake: Calculate, Share, Explore"
Openquake Ground Motion Tookit - User Guide: "Openquake: Calculate, Share, Explore"
OpenQuake Ground
Motion Tookit - User
Guide
Copyright
c 2014 GEM Foundation
Disclaimer
The “OpenQuake Ground Motion Toolkit - User Guide” is distributed in the hope that it will
be useful, but without any warranty: without even the implied warranty of merchantability or
fitness for a particular purpose. While every precaution has been taken in the preparation of this
document, in no event shall the authors of the manual and the GEM Foundation be liable to any
party for direct, indirect, special, incidental, or consequential damages, including lost profits,
arising out of the use of information contained in this document or from the use of programs and
source code that may accompany it, even if the authors and GEM Foundation have been advised
of the possibility of such damage. The Book provided hereunder is on as "as is" basis, and the
authors and GEM Foundation have no obligations to provide maintenance, support, updates,
enhancements, or modifications.
The current version of the book has been revised only by members of the GEM model facility
and it must be considered a draft copy.
License
This Book is distributed under the Creative Common License Attribution-NonCommercial-
NoDerivs 3.0 Unported (CC BY-NC-ND 3.0) (see link below). You can download this Book and
share it with others as long as you provide proper credit, but you cannot change it in any way or
use it commercially.
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1 A Ground Motion Prediction Equation (GMPE) Toolkit 5
1.2 Objectives and Structure 6
1.3 Installation and Getting Started 6
1.3.1 Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3.2 OSX and Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
6 Hazard Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
6.1 Developing GMPE Logic Trees: A “Good Practice” Guide 75
6.2 Conditional Field Simulation 75
6.2.1 Example of Conditional Simulation: L’Aquila . . . . . . . . . . . . . . . . . . . . . . . . . 77
Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Books 85
Articles 85
Reports 87
A Ground Motion Prediction Equation
(GMPE) Toolkit
Objectives and Structure
Installation and Getting Started
Windows
OSX and Linux
1. Introduction
Hazard
Applica)ons:
i)
Condi)onal
Field
Simula)ons
Ground
Mo)on
Strong
Intensity
Measures
Mo)on
and
Response
Spectra
Database
Observa)on
to
Model
Comparison
i) Residuals
ii) Likelihood
Analysis
Strong
Mo)on
iii) EDR
Database
Creator
iv) Single
Sta)on
The critical element within this process is the usage of OpenQuake, or more specifically the
OpenQuake Hazard Library, as a dependency within the toolkit. It is from this library that we
take the GMPEs, as well as various tools for undertaking calculations of source to site geometry.
By using OpenQuake’s own library we inherit OpenQuake’s testing and quality assurance process
for implementation of GMPEs. We also ensure total consistency between the GMPEs used
for comparison against strong motion records and those used within the OpenQuake PSHA
calculation engine itself. This is a feature that is unique to this toolkit.
A list of the current functionalities is given in Table 1.1.
Feature Algorithm
Ground Motion Retrieve PGA, PGV and PGD
Intensity Measures Response Spectra - Newmark-β
Response Spectra - Nigam and Jennings (1969)
Horizontal Spectra (Geometric Mean, Envelope etc.)
Rotate Horizontal Record Pairs
Rotational Spectra (GMRotD, GMRotI) (Boore et al., 2006)
Trellis Plotting Configure Rupture
Compare GMPE Scaling with Magnitude
Compare GMPE Scaling with Distance
Compare GMPE Spectra with Magnitude & Distance
Comparison with Get GMPE residuals from Ground Motion ...
Observations ... measure residual distribution
... retrieve inter- and intra-event residual
... view trends with magnitude
... view trends with distance
... view trends with VS30
... view trends with event depth
Likelihood Analysis (Scherbaum et al., 2004)
Log-likeihood Analysis (Scherbaum et al., 2009)
Euclidean Distance-Based Ranking (Kale and Akkar, 2013)
Single-Site Residual Analysis
Hazard Applications Conditional Field Simulation
Table 1.1 – Current features within the OpenQuake Ground Motion Toolkit
8 Chapter 1. Introduction
1.3.1 Windows
For a comprehensive Python installation including many of the dependencies needed to both
the toolkit and the OpenQuake libraries the best option is a full installation of PythonXY. This
software is freely available from here: https://code.google.com/p/pythonxy/. It is recommended
to proceed with a full installation and ensure that all of the above dependencies are selected for
installation where available.
For the oq-nrmllib it is necessary to install the Lxml library (http://lxml.de). This is not
officially supported for Windows, so it is recommended (by Python developers themselves!) to
install the unofficial Lxml binding from here: 2 . Download and then run the 32-bit package
named “lxml-#.#.#.win32-py2.7.exe”.
Next you will need to install the op-hazardlib and oq-nrmllib. From the web reposito-
ries listed previously click the button “Download Zip”, then extract contents to the folders
C:/oq-hazardlib and C:/oq-nrmllib respectively.
Open an enhanced IPython console. Go to Start − > Python(xy) − > Enhanced Consoles
− > Ipython (sh). This will open up an Ipython console terminal. To install the oq-hazardlib, at
the console prompt type:
~$: cd C:/oq-hazardlib/
~$: python setup.py install build --compiler=mingw32
This will install the oq-hazardlib with the full C-extensions, which speed up some of the
geometry calculations. Then do the same with the oq-nrmllib.
~$: cd C:/oq-hazardlib/
~$: python setup.py install
4. In the “Environment Variables” you sill see a list of “System Variables”, select “Path” and
“Edit”.
5. Add the path to the hmtk directory to the list of folders then save.
After this process it may be necessary to restart PythonXY.
First it is recommended to install the OpenQuake libraries (as they bring in most of the
dependencies!). These can be done using Git to clone the repositories:
# Install Matplotlib
>> sudo pip install matplotlib
# Install H5py
>> sudo pip install h5py
Finally all that is needed is to install the GMPE-SMTK. As with the OpenQuake libraries
the best option is to use Git to clone the repository:
As the repository does not have an installer the directory should be added manually to the
Python path.
in OpenQuake. Depending on the GMPEs being considered, however, not all parameters need to be included.
12 Chapter 2. The Ground Motion Database
the toolkit that the event IDs are correctly, and uniquely (i.e. a strong record can only be
associated to one event) assigned for each record.
Earthquake
The Earthquake class contains full characterisation of the event source, with the following
attributes:
• id: Unique identifier of the event
• datetime: The date and time of the earthquake as an instance of Python’s datetime object.
This can be generated as follows:
1 from datetime import datetime
2 # The following event occurs at 2010/6/1 20:36:27.4
3 event_date_time = datetime (2010 , 6 , 1 , 20 , 36 , 27 , 4 E5 )
5 nps . nodal_plane_1 = { " strike " : 30. , " dip " : 90. , " rake " = 0.}
6 nps . nodal_plane_2 = { " strike " : 120. , " dip " : 90. , " rake " = 180.}
• eigenvalues The eigenvectors (B-, P- and T-) of the principal axes of the mechanism as
an instance of the class GMCTPrincipalAxes. This can be constructed as follows:
1 # Mechanism with the following planes
2 # T - axis = Eigenvalue 1.5 E24 , Plunge = 8 , Azimuth = 203
3 # B - axis = Eigenvalue -0.11 E24 , Plunge = 77 , Azimuth = 332
4 # P - axis = Eigenvalue -1.393 , Plunge = 10 , Azimuth = 111
5 from smtk . sm_database import GCMTPrin cipalAxe s
6 pax1 = GCMTPri ncipalAx es ()
7 pax1 . t_axis = { " eigenvalue " : 1.5 E24 ,
8 " azimuth " : 203. ,
9 " plunge " : 8.}
10 pax1 . b_axis = { " eigenvalue " : -0.11 E24 ,
11 " azimuth " : 332. ,
12 " plunge " : 77.}
13 pax1 . p_axis = { " eigenvalue " : -1.393 E24 ,
14 " azimuth " : 111. ,
15 " plunge " : 10.}
• tensor The moment tensor as a 3× array
• mechanism_type The style of faulting as a string
Finally the Earthquake class can contain information relating to the physical dimensions of
the rupture (where available!). These are held in the Rupture class, with the following attributes:
• id: Unique ID (not the same as the event ID)
• length: Rupture length (km)
• width: Rupture Width (km)
• area: Rupture Area (km2 )
• depth: Depth to the top of rupture (km)
• surface: Rupture surface as an instance of the OpenQuake surface class
format capable of storing data in a nested architecture, allowing large arrays of data (such as
waveforms) to be mapped alongside their attributes. This database consists of two components.
The metadata for each record, mapped according to the GroundMotionDatabase class, and the
waveform data itself. The waveform data for a database is split into a directory of hdf5 binary
files, where each file contains the full waveforms for all three components of the record, as well
as the spectra for each waveform, and potentially the horizontally resolved spectra. The full
structure of a single ground motion record in a binary format is shown in Figure 2.2.
The hdf5 format offers several key advantages that have motivated its usage within these
tools. Already mentioned was the capability to store large arrays of numerical data in a structure
that is conveniently nested in order to associate subsets of data and corresponding attributes.
The format is high-density, reducing the overall size of the datafile compared to, for example,
plain text ascii format. The file structure is also dynamic allowing for attributes and dataset to
be added as needed. This enables the user to undertake the data compilation in several steps,
adding on processed data subsequently from the initial compilation stage. The hdf5 format is
widely supported by many different software languages, and its contents visualisable via the
cross-platform HDFView application 3 .
3 http://www.hdfgroup.org/products/java/hdfview/
2.4 The HDF5 Strong Motion Database
The time taken to create the database will obviously depend on many factors, including the
number of records and the sampling frequency of each record. For large databases however it
could potentially take many hours!
When compiled the database will store the metadata in a file inside the database directory
named “metadata.pkl”. This file is a Python binary file (called a “Pickle” file or “pkl”) that
stores the GroundMotionDatabase class. To load this data into the workspace simply do the
following:
1 # Import the cPickle module
2 import cPickle
3 db1 = cPickle . load ( open ( " path / to / database / metafile . pkl " , " r " ))
The keyword as_db tells the function whether to return the selected records as a new instance
of the GroundMotionDatabase class. In most cases it is advisable to set this to true, otherwise
it will return the selected records as a list of GroundMotionRecord classes.
The SMRecordSelector has the following selection methods
• select_from_record_id(record_id)
Selects records within a specific time window, defined as the interval between start_time
and end_time (both Python datetime objects). For example:
1 # Select records between 1990/01/01 and 2010/12/31
2 db2 = selector . se le ct_ wi th in_ ti me ( datetime (1990 , 1 , 1) ,
3 datetime (2010 , 12 , 31) ,
4 as_db = True )
2.5 Selecting Subsets of Records from the Database 19
• select_within_depths(upper_depth=None,
lower_depth=None, as_db=False)
Selects records corresponding to events within a specific depth range defined as the interval
between upper_depth (km) and lower_depth (km). If not specified upper_depth
defaults to zero, and lower depth defaults to ∞. Records missing a hypocentral depth will
not be selected, therefore setting both limits to None will effectively filter these records
out of the database.
• select_within_magnitude(lower=None, upper=None, as_db=False)
Select records corresponding to events within a magnitude range, defined as the interval
between lower (defaults to −∞ if not specified) and upper (defaults to ∞ if not specified).
• select_by_station_country(country, as_db=False)
Returns the records within a specific country (input as a string). For example, to select
only observations recorded in Italy:
1 db2 = selector . s e l e c t _ b y _ s t a t i o n _ c o u n t r y ( " Italy " ,
2 as_db = True )
• select_by_site_attribute(attribute, value, as_db=False)
Select records corresponding to a particular site attribute (according the attributes listed
in the RecordSite class). For example to select records only recorded at “Free-Field”
stations:
1 db2 = selector . s e l e c t _ b y _ s i t e _ a t t r i b u t e ( " bu ild in g_ str uc tu re " ,
2 " Free - Field " ,
3 as_db = True )
• select_within_vs30_range(lower_vs30, upper_vs30, as_db=False)
Select records within a given Vs30 range defined as the interval between lower_vs30 and
upper_vs30, which default to −∞ and ∞ if not specified. As with the depth selection,
setting both lower_vs30 and upper_vs30 to None will remove records missing VS30
values from the database.
• select_stations_within_distance(location, distance, as_db=False)
Selects records from stations within a distance (km) of a specified location. The location
must be input as an instance of an OpenQuake “Point” class. For example, to select records
within 200 km of 30◦ E and 40◦ N:
1 from openquake . hazardlib . geo . point import Point
2 location = Point (30.0 , 40.0)
3 db2 = selector . s e l e c t _ s t a t i o n s _ w i t h i n _ d i s t a n c e ( location ,
4 200.0 ,
5 as_db = True )
• select_stations_within_region(region, as_db=False)
Selects station inside of a specified region defined by a polygon. The polygon must be
input as an instance of the OpenQuake Polygon class. For example, to select all ground
motions recorded within a square bounded by 30◦ E to 40◦ E and 20◦ N to 40◦ N:
1 from openquake . hazardlib . geo . point import Point
20 Chapter 2. The Ground Motion Database
Select records corresponding to events whose epicentres occur within a specific country
• select_epicentre_within_distance_from_point(location, distance,
as_db=False)
Selects records from earthquakes whose epicentres are within a distance of a point. The
point must be input as an instance of the OpenQuake “Point” class.
• select_epicentre_within_region(region, as_db=False)
Selects records from event inside the specified region. The region must be defined as an
instance of the OpenQuake “Polygon” class.
• select_longest_usable_period(lup, as_db=False)
Selects records with a longest usable period greater than or equal to lup (in seconds)
Ground Motion Waveforms
Scalar Intensity Measures
Peak Measures
Duration
Other Scalar Measures
Response Spectra
Combining Horizontal Components of Mo-
tion
Scalar Spectral Measures
Rotation of the Horizontal Records
Principal Axes of a Set of Records
Adding Horizontal Components to the
Database
This will load two objects into the workspace ims (the intensity measure tools) and rsp (the
response spectrum tools)
In most applications we assume it is the acceleration time series that is available. In the
following example we consider a pair of strong motion records, where each record is represented
by a simple ascii (text) file:sm_record_x.txt and sm_record_y.txt. The timestep of each
record is 0.002 s.
1 # Import the numpy tools
2 import numpy as np
3 # Load in the records
4 accel_x = np . genfromtxt ( " sm_record_x . txt " )
5 accel_y = np . genfromtxt ( " sm_record_y . txt " )
6 time_step = 0.002
2 time_step ,
3 velocity = vel_x ,
4 displacement = disp_x ,
5 units = " cm / s / s " ,
6 filename = " path / to / output / image . eps " ,
7 filetype = " eps " ,
8 dpi =300 ,
9 linewidth =1.5)
This command would produce a plot of the style shown in Figure 3.1.
Acceleration (cm/s/s)
400
200
0
200
400
0 5 10 15 20
Time (s)
40
Velocity (cm/s)
20
0
20
40
0 5 10 15 20
Time (s)
15
Displacement (cm)
10
5
0
5
10
150 5 10 15 20
Time (s)
Figure 3.1 – Example time series for a single record: acceleration (top), velocity (middle) and
displacement (bottom)
where a (t), v (t) and d (t) are the acceleration, velocity and displacement time series respectively.
These values can all be extracted by one function in the ims tool named get_peak_measures.
These values can be called as follows:
1 pga , pgv , pgd , vel_x , disp_x = ims . get_p eak_meas ures ( time_step ,
2 accel_x ,
3 get_vel = True ,
4 get_disp = True )
This function returns the three peak measures as well as the velocity and displacement (if
required). The keywords get_vel and get_disp will, when set to True, calculate peak velocity
and displacement.
3.2.2 Duration
The ims tools contain functions for calculating the duration of a particular record, based on three
different definitions:
• Bracketed Duration
This is defined as the time between the first and last exceedance of a given absolute ground
motion acceleration level. In this case we use a ground motion acceleration of 20cm s−2
as the threshold. This can be called by:
1 ims . g e t _ b r a c k e t e d _ d u r a t i o n ( accel_x , time_step , 20.0)
• Significant Duration
This is defined as the time between specified fractions of the cumulative Arias integral:
ZTd
Ia = [a (t)]2 dt (3.2)
0
Commonly the specified fractions are 0.05 and 0.95. The signficant duration for 0.05 to
0.95 Arias Intensity is returned by:
1 ims . g e t _ s i g n i f i c a n t _ d u r a t i o n ( accel_x , time_step ,
2 0.05 , 0.95)
24 Chapter 3. Response Spectra and Intensity Measures
600
Acceleration (cm/s/s)
400
200
0
200
400
6000 5 10 15 20 25
Time (s)
600
|Acceleration| (cm/s/s)
500
400
300
200
100
00 5 10 15 20 25
Time (s)
Figure 3.2 – Bracketed duration of the waveform shown in waveform shown in Figure 3.1
To see how the cumulative Arias integral is varies with time of the record we can produce
a “Husid” plot. This can be called using the function plot_husid, and the result shown
in Figure 3.4.
1 ims . plot_husid ( accel_x ,
2 time_step ,
3 start_level =0.05 ,
4 end_level =0.95)
The start_level and end_level indicate which range of the Husid plot to highlight.
where a (t) is the time series and g the acceleration due to gravity. It is measured in units of
cms−1] . The Arias intensity of a record can be calculated via:
1 ims . g et _ ar i as _ i nt e ns i t y ( accel_x ,
2 time_step )
If, alternatively, on wishes to limit the Arias Intensity to just the significant duration of the
record, this can be done via:
3.2 Scalar Intensity Measures 25
600
500
|Acceleration| (cm/s/s)
400
300
200
100
00 5 10 15 20 25
Time (s)
Figure 3.3 – Uniform duration of the waveform shown in waveform shown in Figure 3.1
1 ims . g et _ ar i as _ i nt e ns i t y ( accel_x ,
2 time_step ,
3 start_level =0.05 ,
4 end_level =0.95)
v
u ZTd
u
u1
arms = t [a (t)]2 dt (3.4)
Td
0
1.0
Husid Plot
0.8
Fraction of Arias Intensity
0.6
0.4
0.2
Original Record
0.050 - 0.950 Arias
0.00 5 10 15 20 25
Time (s)
Figure 3.4 – Husid plot of the waveform shown in waveform shown in Figure 3.1
we define the more general CAV for a threshold absolute acceleration (CAVn )
ZTd
CAVn = H [|a (t) | − n] dt (3.5)
0
where H [x] is the Heaviside function taking a value of 1 when the term x is positive and 0
otherwise.
This can be called via:
1 ims . get_cav ( accel_x , time_step )
for the general case and:
1 ims . get_cav ( accel_x , time_step , threshold =5.0)
to derive CAV5 .
4π 2
PSa (T, ξ ) = Sd (T, ξ ) (3.6)
T2
• Pseudo-Velocity: The peak pseudo-velocity response at each period (cm/s/s),
where pseudo-velocity is defined as:
2π
PSv (T, ξ ) = Sd (T, ξ ) (3.7)
T
28 Chapter 3. Response Spectra and Intensity Measures
1400 120
1200 Velocity
100
Acceleration (cm/s/s)
PSV
1000
Velocity (cm/s)
80
800
60
600
400 40
200
Acceleration 20
PSA
0 0
10-2 10-1 100 101 10-2 10-1 100 101
Periods (s) Periods (s)
14
12
Displacement (cm)
10
8
6
4
2
0
10-2 10-1 100 101
Periods (s)
Figure 3.5 – Full response spectra of the waveform shown in Figure 3.1, calculated using the
Newmark-β method
1400 120
1200 Velocity
100
Acceleration (cm/s/s)
PSV
1000
Velocity (cm/s)
80
800
60
600
400 40
200
Acceleration 20
PSA
0 0
10-2 10-1 100 101 10-2 10-1 100 101
Periods (s) Periods (s)
14
12
Displacement (cm)
10
8
6
4
2
0
10-2 10-1 100 101
Periods (s)
Figure 3.6 – Full response spectra of the waveform shown in Figure 3.1, calculated using the Nigam
& Jennings (1969) method
• Larger PGA This simply returns the spectrum of the time series that gives the largest
peak ground acceleration. Calculated using the following command:
1 sa_larger = ims . larger_pga ( spectra_x , spectra_y )
• Envelope This returns a spectrum representing the larger of the two components for each
period such that:
Saenv (Ti , ξ ) = max (Sax (Ti , ξ ) , Say (Ti , ξ )) for i = 1, 2, . . . , NPERIODS (3.10)
900 80
800 70 Velocity
Acceleration (cm/s/s)
700 60 PSV
Velocity (cm/s)
600 50
500
40
400
300 30
200 20
Acceleration
100 PSA 10
0 0
10-2 10-1 100 101 10-2 10-1 100 101
Periods (s) Periods (s)
8
7
Displacement (cm)
6
5
4
3
2
1
0 -2
10 10-1 100 101
Periods (s)
Z2.5
SI (ξ ) = PSv (ξ , T ) dT (3.11)
0.1
Z0.5
ASI = Sa (ξ = 0.05, T ) dT (3.12)
0.1
1400 120
1200 Velocity
100
Acceleration (cm/s/s)
PSV
1000
Velocity (cm/s)
80
800
60
600
400 40
200
Acceleration 20
PSA
0 0
10-2 10-1 100 101 10-2 10-1 100 101
Periods (s) Periods (s)
14
12
Displacement (cm)
10
8
6
4
2
0 -2
10 10-1 100 101
Periods (s)
the most adverse for a particular structure. For two time series of equal duration and time step,
the records can be rotated through angle θ (in degrees):
ax(θ ) (t) cos θ sin θ ax (t)
= (3.13)
ay(θ ) (t) − sin θ cos θ ay (t)
12 damping =0.05 ,
13 units = " cm / s / s " ,
14 method = " Nigam - Jennings " )
σxx σxy σxz
σ = σyx σyy σyz (3.14)
σzx σzy σzz
for i = x, y, z and j = x, y, z. Next find the eigenvectors of the σ matrix, which can be stacked in
the matrix φ T . Transform the three time-series to return the corresponding time series a1 (T ),
a3 (T ) and a3 (T ), which correspond to the time-series aligned to the principal axes of the record:
a1 (t) ax (t)
a2 (t) = φ T ay (t) (3.16)
a3 (t) az (t)
Consequently the quadratic intensity matrix for the transformed time series is thus:
σ11 0 0
σp = 0 σ22 0 (3.17)
0 0 σ33
Figure 3.9 shows how a pair of horizontal time-series and their corresponding spectra are
modified by transformation along the principal axes.
To derive the time-series of the principal axes oriented records from a two- or three-
component set of records, simply run the following:
1 # For the two horizontal components
2 acc_1 , acc_2 , _ = ims . ge t_ pr in cip al _a xes ( time_step ,
3 accel_x ,
4 accel_y )
5 # For the three components
6 acc_1 , acc_2 , acc_3 = ims . ge t_ pri nc ip al_ ax es ( time_step ,
7 accel_x ,
8 accel_y ,
9 accel_z )
34 Chapter 3. Response Spectra and Intensity Measures
600
X-component 300
Y-component
Original Original
Acceleration cm/s/s 400 Principal Principal
Acceleration cm/s/s
200
200
100
0
0
200
400 100
6000 5 10 15 20 25 2000 5 10 15 20 25
Time (s) Time (s)
1400 800
1200 700
1000 600
PSa (cm/s/s)
PSa (cm/s/s)
500
800
400
600
300
400 200
200
Original Original
Principal 100 Principal
0 0
10-2 10-1 100 101 10-2 10-1 100 101
Period (s) Period (s)
Figure 3.9 – Comparison of the time series (top) and pseudo-acceleration spectra (bottom) for the
original time series (blue) and the principal acceleration time series (red) for a pair of horizontal
records
In this case the time-step of the three records must be the same. Ideally, the length of all the
records should also be identical. If this is not the case then the function will only consider the
time-series up to the duration of the shortest record. This assumes implicitly that the start-time of
the two or three records is the same. If this is not the case it is strongly recommended to zero-pad
whichever records are starting later to ensure the record length is the same.
provides sufficient information in order to define a planar rupture with dimensions consistent
with the magnitude of the earthquake. From this rupture the GMPE-SMTK uses OpenQuake’s
own geometry functions to calculate all the required source-to-site distances with respect to the
rupture plane. This ensures that not only is the implicit relation between different attenuation
metrics accurately defined, it also guarantees that the calculation is done consistently between
the trellis plotting tools and the PSHA software that may be ultimately used to implement the
GMPEs being compared.
The trellis plotting tools are all contained in the function smtk.trellis.trellis_plots,
which we shall import as follows:
1 import smtk . trellis . trellis_plots as trpl
and which we will refer to as trpl hereafter.
If the Openquake-hazard library is installed in your computer, the full list of available GMPEs
can be retrieved in the following manner:
1 # Import the g e t_ a v ai l ab l e_ g s im s function from OpenQuake
2 from openquake . hazardlib . gsim import g et _ av a il a b le _ gs i m s
3 # Show list of gsims
4 g et _ a va i la b l e_ g si m s ()
In the examples shown throughout this chapter we consider six GMPES: Akkar and Bommer,
2010, Akkar and Cagnan, 2010, Akkar et al., 2014 (Joyner-Boore coefficients), Boore and
Atkinson, 2008, Chiou and Youngs, 2008, Zhao et al., 2006. We also compare using just four
intensity measures: PGA, Sa (0.2s), Sa (1.0s) and Sa (2.0s).
MW 8.0, every 0.1 magnitude units. We also assume that the ground motions correspond to a
site located at a Joyner-Boore distance of 15 km away from the vertical dipping fault (with a
top of rupture depth of 5 km). We assume that the epicentral distance is equal to 2 km. This
configuration is specified like so:
1 # Import the numerical python tool
2 import numpy as np
3 # Generate magnitudes from 4.5 to 8.0 every 0.1
4 magnitudes = np . arange (4.5 , 8.1 , 0.1)
5 distances = { " repi " : 20.0 ,
6 " rhypo " : 22.5 ,
7 " rjb " : 15.0 ,
8 " rrup " : 16.0 ,
9 " rx " : 15.0}
Distances must be specified in a Python dictionary containing one or more of the following
keys: repi (Epicentral Distance), rhypo (hypocentral distance), rjb (Joyner-Boore Distance),
rrup (Rupture distance) and rx (Rx distance). Whilst not all distance metrics may be needed
the tools with check the selected GMPEs and the distances dictionary provided. If any distance
metric required by any of the GMPEs is not found in the distances input then an error will be
raised.
The trellis plots can be generated using the following command, which will produce the plot
shown in Figure 4.1
1 trpl . Ma g ni t u de I MT T re l l is ( magnitudes ,
2 distances ,
3 gmpe_list ,
4 imts ,
5 params ,
6 figure_size =(7 ,5) ,
7 filename = " path / to / plot " ,
8 filetype = " png " )
100
PGA 100
SA(0.2)
Median SA(0.2) (g)
Median PGA (cm)
10-1 10-1
10-24.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 10-24.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0
Magnitude Magnitude
100
SA(1.0) 100
SA(2.0)
AkkarBommer2010
Median SA(1.0) (g)
10-1 AkkarCagnan2010
10-1
AkkarEtAlRjb2014
10-2 BooreAtkinson2008
10-2 ChiouYoungs2008
10-3
ZhaoEtAl2006Asc
10-34.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 10-44.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0
Magnitude Magnitude
In addition to viewing the scaling of the expected ground motion from the GMPE, it is also
possible to view the scaling of the standard deviation. This can be done with the following
40 Chapter 4. Comparing GMPEs: Trellis Plotting
command:
1 trpl . M a g n i t u d e S i g m a I M T T r e l l i s ( magnitudes ,
2 distances ,
3 gmpe_list ,
4 imts ,
5 params ,
6 stddevs = " Total " ,
7 figure_size =(7 ,5) ,
8 filename = " / path / to / plot " ,
9 filetype = " png " )
0.85
PGA 0.90
SA(0.2)
0.80 0.85
Total Std. Dev.
Figure 4.2 – Scaling of total standard deviation of the GMPEs with respect to magnitude
Figure 4.2 shows the scaling of the total standard deviation with magnitude. The type of
standard deviation is configured using the stddevs option, which can take the values: “Total”,
“Inter event” or “Intra event”. Examples of inter- and intra-event standard deviation are
shown in Figure 4.3 and 4.4 respectively.
Figure 4.3 – Scaling of inter-event deviation of the GMPEs with respect to magnitude
The distance trellis plots, as shown in Figure 4.5 can be created with the following command:
1 trpl . D is tan ce IM TTr el li s ( magnitude ,
2 distances ,
3 gmpe_list ,
4 imts ,
5 params ,
6 distance_type = " rjb " ,
7 plot_type = " loglog " ,
8 filename = " path / to / image " ,
9 filetype = " png " )
The inputs are similar to that of the trpl.MagnitudeIMTTrellis tool, except that the user
has the option of specifying which distance measure to use on the abscissa of the plot via the
distance_type keyword. The use can also choose whether to plot the distance in logarithmic
or linear axes via the plot_type keyword, which would take the value of “loglog” or “semilogy”
respectively. The same GMPEs plotted in terms of linear distance axes are shown in Figure 4.6
As with the magnitude trellis plots. The standard deviations can also be plotted, as is the
case for the total standard deviation shown in Figure 4.7:
1 trpl . D i s t a n c e S i g m a I M T T r e l l i s ( magnitude ,
2 distances ,
3 gmpe_list ,
4 imts ,
5 params ,
6 stddevs = " Total "
7 distance_type = " rjb " ,
8 plot_type = " loglog " ,
9 filename = " path / to / image " ,
10 filetype = " png " )
4.2.3 Comparing the Scaling of the Response Spectrum with Magnitude and Distance
Whilst understanding the scaling of a particular IMT can be useful, it can also be insightful to
understand how a GMPE will scale the response spectrum with magnitude and distance. In the
42 Chapter 4. Comparing GMPEs: Trellis Plotting
Figure 4.4 – Scaling of intra-event deviation of the GMPEs with respect to magnitude
following example we consider four magnitudes: MW 5.0, MW 6.0, MW 7.0 and MW 8.0; and
four source-site distances RJB 5.0, RJB 20.0, RJB 50.0, RJB 100.0. Once again it is necessary to
calculate the geometry in this simple case:
1 # Choose 4 magnitudes for comparison : 5 , 6 , 7 , 8
2 magnitudes = np . array ([5.0 , 6.0 , 7.0 , 8.0])
3 # Choose 4 distances for comparison : 5. , 20. , 50. , 100.
4 distances = { " repi " : np . array ([5.0 , 20.0 , 50.0 , 100.0])}
5 distances [ " rhypo " ] = np . sqrt ( distances [ " repi " ] ** 2.0 +
6 params [ " hypo_depth " ] ** 2)
7 distances [ " rjb " ] = distances [ " repi " ]
8 distances [ " rrup " ] = np . sqrt ( distances [ " rjb " ] ** 2.0 +
9 params [ " ztor " ] ** 2)
10 distances [ " rx " ] = distances [ " rjb " ]
We need also to specify the spectral periods we wish to use for calculation. In this case, as
Akkar and Cagnan (2010) is limited to just 2 s period, we limit the period range for comparison
so 0.05 s to 2 s.
1 periods = [0.05 , 0.075 , 0.1 , 0.11 , 0.12 , 0.13 , 0.14 , 0.15 ,
2 0.16 , 0.17 , 0.18 , 0.19 , 0.20 , 0.22 , 0.24 , 0.26 ,
3 0.28 , 0.30 , 0.32 , 0.34 , 0.36 , 0.38 , 0.40 , 0.42 ,
4 0.44 , 0.46 , 0.48 , 0.50 , 0.55 , 0.60 , 0.65 , 0.70 ,
5 0.75 , 0.80 , 0.85 , 0.90 , 0.95 , 1.00 , 1.10 , 1.20 ,
6 1.30 , 1.40 , 1.50 , 1.60 , 1.70 , 1.80 , 1.90 , 2.00]
To produce the comparison shown in Figure 4.8 simply run:
1 trpl . M a g n i t u d e D i s t a n c e S p e c t r a T r e l l i s ( magnitudes ,
2 distances ,
3 gmpe_list ,
4 periods ,
5 params ,
6 plot_type = " loglog " ,
7 filename = " path / to / image " ,
8 filetype = " png " )
4.3 Trellis Plotting: The Simple Way 43
100
PGA 101
SA(0.2)
10-1 100
10-2 10-1
10-3 0 10-2 0
10 101 102 10 101 102
Joyner-Boore Dist. (km) Joyner-Boore Dist. (km)
100
SA(1.0) 100
SA(2.0)
AkkarBommer2010
Median SA(1.0) (g)
Once again the corresponding standard deviations, shown in Figure 4.9, can also be plotted:
1 trpl . M a g n i t u d e D i s t a n c e S p e c t r a S i g m a T r e l l i s ( magnitudes ,
2 distances ,
3 gmpe_list ,
4 periods ,
5 params ,
6 plot_type = " semilogy " ,
7 figure_size =(10 ,8) ,
8 filename = " path / to / image " ,
9 filetype = " png " )
100
PGA 101
SA(0.2)
10-1 100
10-2 10-1
0.85
PGA 0.90
SA(0.2)
0.80 0.85
Total Std. Dev.
0.75 0.80
0.75
0.70
0.70
0.65 0.65
0.60 0.60
0.55 0 0.55 0
10 101 102 10 101 102
Joyner-Boore Dist. (km) Joyner-Boore Dist. (km)
0.95
SA(1.0) 0.95
SA(2.0)
0.90 0.90 AkkarBommer2010
Total Std. Dev.
100
rjb = 5.000 (km) 10-1
rjb = 20.000 (km) 10-1
rjb = 50.000 (km) 10-1
rjb = 100.000 (km)
Sa (g)
Sa (g)
Sa (g)
M = 5.0
10-2 10-3 10-3 10-3
10-3 10-4 10-4 10-4
10-1 100 10-1 100 10-1 100 10-1 100
Period (s) Period (s) Period (s) Period (s)
100 100 10-1 10-1
10-1
Sa (g)
Sa (g)
Sa (g)
Sa (g)
10-1 10-2 10-2
M = 6.0
10-2
10-2 10-3 10-3 10-3
10-1 100 10-1 100 10-1 100 10-1 100
Period (s) Period (s) Period (s) Period (s)
100 100 100 10-1
Sa (g)
Sa (g)
Sa (g)
Sa (g)
10-1 10-1 10-1
M = 7.0
10-2 10-2 10-2 10-2
10-1 100 10-1 100 10-1 100 10-1 100
Period (s) Period (s) Period (s) Period (s)
101 100 100 100
AkkarBommer2010
100 AkkarCagnan2010
Sa (g)
Sa (g)
Sa (g)
Sa (g)
10-1 10-1 10-1
M = 8.0
10-1
AkkarEtAlRjb2014
BooreAtkinson2008
10-2 10-2 10-2 10-2 ChiouYoungs2008
10-1 100 10-1 100 10-1 100 10-1 100 ZhaoEtAl2006Asc
Period (s) Period (s) Period (s) Period (s)
Figure 4.8 – Scaling of the response spectrum for each GMPE for selected magnitude and source-site
distance combinations
0.95
rjb = 5.000 (km) 0.95
rjb = 20.000 (km) 0.95
rjb = 50.000 (km) 0.95
rjb = 100.000 (km)
0.90 0.90 0.90 0.90
Total Std. Dev.
Figure 4.9 – Scaling of the response spectrum total standard deviation for each GMPE for selected
magnitude and source-site distance combinations
46 Chapter 4. Comparing GMPEs: Trellis Plotting
0
2
Depth (km)
4
6
8
11.0
10.5
10.0
43.5 44.0 9.5
9.0 de
44.5 45.0 8.5 titu
Longitu45.5 46.0 8.0 La
de 46.5 47.0 7.5
Figure 4.10 – Rupture and site configuration for a regularly spaced mesh of points around the
rupture
300
Rupture: M= 6.5, Dip= 45, Ztor= 0.0, Aspect= 1.50
250
200
rrup (km)
150
100
50
Figure 4.11 – Comparison of Rupture distance with Joyner-Boore distance for the rupture and site
configuration in Figure 4.10
Sites as a Line
A more common configuration for exploring the attenuation properties of the GMPEs is to
configure the sites in a single line propagating away from the rupture. However, it is important
to recognise that the relation between the distance metrics will depend on the azimuth of the line
with respect to the strike of the rupture. These properties can be configured using the command
below, and the corresponding plot shown in Figure 4.12:
1 sites_line = rupt1 . g e t _ t a r g e t _ s i t e s _ m e s h ( maximum_distance =200.0 ,
2 spacing =1.0 ,
3 vs30 =800.0 ,
4 line_azimuth =90.
48 Chapter 4. Comparing GMPEs: Trellis Plotting
5 vs30measured = True ,
6 z1pt0 = None ,
7 z2pt5 = None )
8 rupt1 . p l o t _ m o d e l _ c o n f i g u r a t i o n ()
0
2
Depth (km)
4
6
8
9.22
9.20
9.18
45.5 9.16 de
9.14
9.12 titu
Lo46.0
ngitu 9.10 La
de 46.5 47.0 9.08
Figure 4.12 – Rupture and site configuration for a regularly spaced line or points propagating at an
angle of 90◦ from the rupture, along the hanging wall
Site as a Point
When comparing GMPEs in terms of spectra it is preferable to consider the target site as a single
point. In this case this both the distance, the distance type and the azimuth must be specified, in
addition to the information required for the other site configurations. So to consider a site located
at a Joyner-Boore distance of 20 km on a line perpendicular to the rupture, on the hanging wall,
the configuration shown in Figure 4.13 can be constructed via:
1 sites_line = rupt1 . g e t _ t a r g e t _ s i t e s _ p o i n t ( distance =20.0 ,
2 distance_type = " rjb " ,
3 vs30 =800.0 ,
4 line_azimuth =90.
5 vs30measured = True ,
6 z1pt0 = None ,
7 z2pt5 = None )
8 rupt1 . p l o t _ m o d e l _ c o n f i g u r a t i o n ()
0
2
Depth (km)
4
6
8
9.22
9.20
9.18
45.20 45.25 9.16 de
9.14
9.12 titu
Lo45.30
ngitude45.35 45.40 9.10 La
9.08
Figure 4.13 – Rupture and site configuration for a single point located at 20 km (Joyner-Boore) from
the rupture on a bearing of 90◦ on the hanging wall
100
PGA 101
SA(0.2)
Median SA(0.2) (g)
Median PGA (cm)
10-1 100
10-2 10-1
10-3 10-2
100 101 102 100 101 102
Joyner-Boore Dist. (km) Joyner-Boore Dist. (km)
100
SA(1.0) 100
SA(2.0)
AkkarBommer2010
Median SA(1.0) (g)
Figure 4.14 – Scaling of the GMPEs with respect to distance for the rupture and site configuration
in Figure 4.12
Likewise, the standard deviation plots (e.g. Figure 4.15) can be created in a similar manner:
1 trpl . D i s t a n c e S i g m a I M T T r e l l i s . f rom _r up tur e_ mo de l (
2 rupt1 ,
3 gmpe_list ,
4 imts ,
5 filename = " path / to / image " ,
6 filetype = " pdf " )
The rupture-specific configuration allows for the same comparison to take place on the
footwall of the rupture, for those GMPE’s such as Chiou and Youngs (2008) that have hanging
wall coefficients. For example, rather than propagating the line at 90◦ from the rupture on the
hanging wall, we will place the line at an azimuth of 230◦ from the rupture (i.e. on the footwall):
1 sites_line = rupt1 . g e t _ t a r g e t _ s i t e s _ m e s h ( maximum_distance =200.0 ,
2 spacing =1.0 ,
50 Chapter 4. Comparing GMPEs: Trellis Plotting
0.85
PGA 0.90
SA(0.2)
0.80 0.85
Total Std. Dev.
Figure 4.15 – Scaling of the total standard deviation GMPEs with respect to distance for the rupture
and site configuration in Figure 4.12
3 vs30 =800.0 ,
4 line_azimuth =230.
5 vs30measured = True ,
6 z1pt0 = None ,
7 z2pt5 = None )
8 rupt1 . p l o t _ m o d e l _ c o n f i g u r a t i o n ()
0
2
Depth (km)
4
6
8
9.2
9.0
8.8
43.8 44.0 8.6 e
44.2 44.4 8.4 titud
Longitu44.6 44.8 8.2 La
de 45.0 45.2 8.0
Figure 4.16 – Rupture and site configuration for a regularly spaced line or points propagating at an
angle of 90◦ from the rupture, along the footwall
The corresponding trellis plots for the expected ground motion values is shown in Figure
4.17
This same comparison can be undertaken for the response spectra too. In this case we
consider the rupture and site configuration shown in figure 4.13 (site at 20 km RJB from the
rupture along a bearing of 90◦ ). To view the predicted response spectra at this site it is only
necessary to do the following to produce the plots shown in Figures 4.18 and 4.19:
4.3 Trellis Plotting: The Simple Way 51
100
PGA 101
SA(0.2)
10-1 100
10-2 10-1
10-3 10-2
100 101 102 100 101 102
Joyner-Boore Dist. (km) Joyner-Boore Dist. (km)
100
SA(1.0) 100
SA(2.0)
AkkarBommer2010
Median SA(1.0) (g)
Figure 4.17 – Scaling of the GMPEs along the footwall of a rupture, configured according to Figure
4.16
The same comparison can also be done on the footwall of the rupture. If the site is now
placed at a Joyner-Boore distance of 20 km on the at a bearing of 220◦ from the rupture (i.e. on
the footwall), the configuration in Figure 4.20 is created as shown:
1 sites_line = rupt1 . g e t _ t a r g e t _ s i t e s _ p o i n t ( distance =20.0 ,
2 distance_type = " rjb " ,
3 vs30 =800.0 ,
4 line_azimuth =220.
5 vs30measured = True ,
6 z1pt0 = None ,
7 z2pt5 = None )
8 rupt1 . p l o t _ m o d e l _ c o n f i g u r a t i o n ()
52 Chapter 4. Comparing GMPEs: Trellis Plotting
100
rjb = 20.000 (km)
AkkarBommer2010
AkkarCagnan2010
AkkarEtAlRjb2014
BooreAtkinson2008
ChiouYoungs2008
ZhaoEtAl2006Asc
Sa (g)
10-1
M = 6.5
10-2
10-1 100
Period (s)
Figure 4.18 – Comparison of response spectra from the GMPEs for the rupture and site configuration
shown in Figure 4.13
The corresponding GMPEs and their respective total standard deviations are shown in Figures
4.21 and 4.22 respectively.
4.3 Trellis Plotting: The Simple Way 53
0.95
rjb = 20.000 (km)
AkkarBommer2010
0.90 AkkarCagnan2010
AkkarEtAlRjb2014
0.85 BooreAtkinson2008
ChiouYoungs2008
0.80 ZhaoEtAl2006Asc
Total Std. Dev.
0.75
M = 6.5
0.70
0.65
0.60
0.55
10-1 100
Period (s)
Figure 4.19 – Comparison of total standard deviation of the response spectra from the GMPEs for
the rupture and site configuration shown in Figure 4.13
0
2
Depth (km)
4
6
8
9.20
9.15
45.05 9.10 de
45.10 9.05 titu
Lon45.15
gitude 45.20 9.00 La
45.25 8.95
Figure 4.20 – Rupture and site configuration for a single point located at 20 km (Joyner-Boore) from
the rupture on a bearing of 220◦ on the hanging wall
54 Chapter 4. Comparing GMPEs: Trellis Plotting
100
rjb = 20.000 (km)
AkkarBommer2010
AkkarCagnan2010
AkkarEtAlRjb2014
BooreAtkinson2008
ChiouYoungs2008
ZhaoEtAl2006Asc
Sa (g)
10-1
M = 6.5
10-2
10-1 100
Period (s)
Figure 4.21 – Comparison of response spectra from the GMPEs for the rupture and site configuration
shown in Figure 4.20
0.95
rjb = 20.000 (km)
AkkarBommer2010
0.90 AkkarCagnan2010
AkkarEtAlRjb2014
0.85 BooreAtkinson2008
ChiouYoungs2008
0.80 ZhaoEtAl2006Asc
Total Std. Dev.
0.75
M = 6.5
0.70
0.65
0.60
0.55
10-1 100
Period (s)
Figure 4.22 – Comparison of total standard deviation of the response spectra from the GMPEs for
the rupture and site configuration shown in Figure 4.20
GMPE Residuals
Definition of the GMPE Residuals
Residual analysis in the GMPE-SMTK
Basic Trends in Residuals
The Likelihood Model (Scherbaum et al.,
2004)
Residual Trends with Predictor Variables
Log-likelihood Approach (Scherbaum et
al., 2009)
Euclidean Distance Based Ranking (Kale
and Akkar, 2013)
Site Specific Analysis
Single-Station σ Example
log yi j = µ mi , ri j , θij + zT,i j σT (5.1)
where µ mi , ri j , θij is the expected ground motion from an event of magnitude mi , recorded at a
distance ri j , where θij corresponds to various other model parameters relevant to the model in
question (e.g., site amplification, basin response, hanging wall scaling etc.). The total uncertainty
(zT,i j ) is therefore modelled as a normal distribution with a mean of zero and a standard deviation
of σT . The term zT,i j is therefore the “total” normalised residual of the jth recording from the ith
event:
log (yi j ) − µ mi , ri j , θij
zT,i j = (5.2)
σT
For most GMPEs, however, the a random effects regression process is used to derive the
coefficients of the model. This divides the total residual term into an inter-event component δE,i
and an the intra-event component δA,i j , such that equation can be written as:
log yi j = µ mi , ri j , θij + δE,i + δA,i j (5.3)
The inter-event residual is normally distributed with a mean of zero and a standard deviation
of τ, and likewise the intra-event residual is normally distributed with a zero mean and a standard
56 Chapter 5. Comparing Models and Observations
log yi j = µ mi , ri j , θij + zE,i τ + zA,i j σ (5.4)
Where zE,i and zAi j are the normalised inter- and intra-event residuals respectively. Following
the random effects definition of Abrahamson and Youngs (1992), the inter-event term is defined
via:
ni
τ 2 ∑ yi j − µ mi , ri j , θij
j=1
δE,i = zE,i τ = (5.5)
ni τ 2 + σ 2
where ni is the number of records observed from event i. The intra-event residual the follows:
δA,i j = zA,i j σ = log yi j − µ mi , ri j , θij − zE,i τ (5.6)
To generate a set of ground motion residuals the tools require three pieces of information: a
ground motion database (as an instance of the smtk.sm_database.GroundMotionDatabase
class), a list of the required GMPEs and a list of the required intensity measures. In the following
examples we consider a set of strong motion records recorded in Italy and compare four GMPEs
(Akkar and Bommer, 2010; Akkar and Cagnan, 2010; Akkar et al., 2014; Boore and Atkinson,
2008) and four intensity measures (PGA, Sa (0.2s), Sa (1.0s), Sa (2.0s)). Typically, these will be
set-up as follows:
5.2 Basic Trends in Residuals 57
1 # Import CPickle
2 import cPickle
3 # Import the database
4 sm_database = cPickle . loads ( open ( " path / to / metadata . pkl " , " r " ))
5 # Define the list of GMPEs
6 gmpe_list = [ " BooreA tkinson2 008 " ,
7 " AkkarBommer2010 " ,
8 " AkkarCagnan2010 " ,
9 " AkkarEtAlRjb2014 " ]
10 # Define the list of intensity measures
11 imt_list = [ " PGA " , " SA (0.2) " , " SA (1.0) " , " SA (2.0) " ]
For undertaking simple analysis of residuals simply run:
1 # Set - up the residual calculator
2 resid1 = res . Residuals ( gmpe_list , imts )
3 # Run the residual calculator
4 resid1 . get_residuals ( sm_database )
When run, the class Residuals will hold an attribute residuals, which will contain a set
of nested python dictionaries in which the corresponding residual values are stored. To retrieve
the residual values for a specific GMPE and intensity measure then type:
1 res_data = resid1 . residuals [ " GMPE Name " ][ " IM Name " ][ " Type " ]
where, “GMPE Name” is the name of the GMPE specified in the input list, “IM Name” is
the name of the intensity measure (as specified in the input list) and “Type” is one of “Total”,
“Inter event” or “Intra event” (note the syntax - the keys are case sensitive). The residuals will
then be a single vector of residual values for that specific GMPE, IM and residual type.
BooreAtkinson2008 - Total BooreAtkinson2008 - Inter event AkkarBommer2010 - Total AkkarBommer2010 - Inter event
Mean = -0.436, Std Dev = 1.557
0.40
Mean = -0.565, Std Dev = 0.957
0.6
Mean = -0.421, Std Dev = 1.211
0.40
Mean = -0.521, Std Dev = 0.790
0.6
0.35 0.5 0.35 0.5
0.30 0.30
Frequency
Frequency
Frequency
Frequency
0.25 0.4 0.25 0.4
0.20 0.3 0.20 0.3
0.15 0.2 0.15 0.2
0.10 0.10
0.05 0.1 0.05 0.1
0.00 8 6 4 2 0 2 4 0.0 4 3 2 1 0 1 2 3 0.00 5 4 3 2 1 0 1 2 3 4 0.0 3 2 1 0 1 2
Z (PGA) Z (PGA) Z (PGA) Z (PGA)
BooreAtkinson2008 - Intra event AkkarBommer2010 - Intra event
Mean = -0.197, Std Dev = 1.489
0.40
Mean = -0.244, Std Dev = 1.132
0.40
0.35 0.35
0.30 0.30
Frequency
Frequency
0.25 0.25
0.20 0.20
0.15 0.15
0.10 0.10
0.05 0.05
0.00 6 4 2 0 2 4 0.00 4 3 2 1 0 1 2 3 4
Z (PGA) Z (PGA)
(a) Boore and Atkinson (2008) model (b) Akkar and Bommer (2010) model
AkkarCagnan2010 - Total AkkarCagnan2010 - Inter event AkkarEtAlRjb2014 - Total AkkarEtAlRjb2014 - Inter event
Mean = 0.470, Std Dev = 1.023
0.5
Mean = 0.476, Std Dev = 0.668
0.6
Mean = -0.034, Std Dev = 1.069
0.40
Mean = -0.062, Std Dev = 0.715
0.6
0.5 0.35 0.5
0.4 0.30
Frequency
Frequency
Frequency
Frequency
0.3 0.4 0.25 0.4
0.3 0.20 0.3
0.2 0.2 0.15 0.2
0.1 0.10
0.1 0.05 0.1
0.0 3 2 1 0 1 2 3 4 5 0.0 2 1 0 1 2 3 4 0.00 4 3 2 1 0 1 2 3 4 5 0.02.0 1.5 1.0 0.50.0 0.5 1.0 1.5 2.0 2.5
Z (PGA) Z (PGA) Z (PGA) Z (PGA)
AkkarCagnan2010 - Intra event AkkarEtAlRjb2014 - Intra event
Mean = 0.223, Std Dev = 1.001
0.40
Mean = -0.004, Std Dev = 0.991
0.45
0.35 0.40
0.30 0.35
Frequency
Frequency
0.25 0.30
0.20 0.25
0.15 0.20
0.15
0.10 0.10
0.05 0.05
0.00 4 3 2 1 0 1 2 3 4 0.00 3 2 1 0 1 2 3 4
Z (PGA) Z (PGA)
(c) Akkar and Cagnan (2010) model (d) Akkar et al. (2014)model
Figure 5.1 – PGA residual distribution for the record set. The grey line indicates the probability
density function fit to the data, whilst the black line indicates the standard normal density function
Figures 5.1 and 5.2 shows a relatively discernible set of trends. Consider just the Boore and
Atkinson (2008) model for PGA (Figure 5.1a). Each of the residuals have a mean less than zero,
significantly so in the case of the inter-event residual. This indicates that in general the Boore
and Atkinson (2008) model is predicts higher ground motions than those observed in the records
and most of this can be attributed to the inter-event term. The distributions also show a greater
spread than expected from the model, as demonstrated by the standard deviation greater than
unity. In this case it is the intra-event residuals that show a greater spread than expected, whilst
spread in the inter-event residuals is in better agreement with the model. In contrast the Akkar
et al. (2014) GMPE (from which the current records form part of the generating data set) show
a much closer agreement with the records (as expected). It is seen that that the distribution of
the normalised total residuals is very close to the standard normal distribution; a trend that is
matched in the intra-event residuals. Similarly in the inter-event residuals the mean value is
close to zero, and only the spread of the model shows a difference, in this case showing a smaller
variance than expected from the model. This is to be expected as the current dataset is based on
exclusively Italian records (predominantly extensional events, with only a few thrust or oblique
slip records), whereas the GMPE was fit to a full set of European and Middle Eastern records,
thus incorporating a greater variability of mechanism types than just the Italian subset. The same
trend can be seen in the residuals for Sa (1.0s).
5.3 The Likelihood Model (Scherbaum et al., 2004) 59
Frequency
Frequency
0.25 0.4
0.20 0.3
0.15 0.2
0.10
0.05 0.1
0.00 4 2 0 2 4 6 0.0 2 1 0 1 2 3 4 5
Z (SA(1.0)) Z (SA(1.0))
AkkarEtAlRjb2014 - Intra event
Mean = 0.037, Std Dev = 1.040
0.45
0.40
0.35
Frequency
0.30
0.25
0.20
0.15
0.10
0.05
0.00 3 2 1 0 1 2 3 4 5 6
Z (SA(1.0))
Figure 5.2 – PGA residual distribution for the record set using the Akkar et al. (2014) GMPE
1 z
u (z0 ) = Er f √0 , ∞ (5.7)
2 2
The total “likelihood” of a particular value is given by:
|z0 |
LH (|z0 |) = 2 · u (|z0 |) = Er f √ ,∞ (5.8)
2
As indicated in Scherbaum et al. (2004) the the LH value should reach a value of 1 for
|z0 | = 0 (i.e. the mean of the distribution), and should tend to zero for observations further away
from the mean. Therefore, if the model assumptions are matched exactly by a set of observations
then the LH (|z0 |) values should be distributed evenly between 0 and 1, with a median value of
0.5.
The GMPE-SMTK can produce histograms of the LH value for the ground motion observa-
tions using the res.Likelihood and rspl.LikelihoodPlot tools. The res.Likeihood tool
operates in the same manner as the res.Residuals tool; therefore to run the likelihood analysis
one follows the same approach:
1 # Set - up the likelihood calculator
2 lh1 = res . Likelihood ( gmpe_list , imts )
3 # Run the residual calculator
4 lh1 . get_residuals ( sm_database )
Histograms of the LH values (and their median estimates) for the four GMPEs for PGA are
shown in Figure 5.3, and for only Akkar et al. (2014) for Sa (1.0s) in Figure 5.4 . These can be
generated with the following command:
60 Chapter 5. Comparing Models and Observations
BooreAtkinson2008 - Total BooreAtkinson2008 - Inter event AkkarBommer2010 - Total AkkarBommer2010 - Inter event
3.0
Median LH = 0.288 2.5
Median LH = 0.463 2.0
Median LH = 0.423 1.6
Median LH = 0.539
2.5 1.4
2.0 1.5 1.2
Frequency
Frequency
Frequency
Frequency
2.0 1.5 1.0
1.5 1.0 0.8
1.0 1.0 0.6
0.5 0.5 0.4
0.5 0.2
0.00.0 0.2 0.4 0.6 0.8 1.0 0.00.0 0.2 0.4 0.6 0.8 1.0 0.00.0 0.2 0.4 0.6 0.8 1.0 0.00.0 0.2 0.4 0.6 0.8 1.0
LH (PGA) LH (PGA) LH (PGA) LH (PGA)
BooreAtkinson2008 - Intra event AkkarBommer2010 - Intra event
3.0
Median LH = 0.329 1.8
Median LH = 0.463
2.5 1.6
1.4
Frequency
Frequency
2.0 1.2
1.5 1.0
0.8
1.0 0.6
0.5 0.4
0.2
0.00.0 0.2 0.4 0.6 0.8 1.0 0.00.0 0.2 0.4 0.6 0.8 1.0
LH (PGA) LH (PGA)
(a) Boore and Atkinson (2008) model (b) Akkar and Bommer (2010) model
AkkarCagnan2010 - Total AkkarCagnan2010 - Inter event AkkarEtAlRjb2014 - Total AkkarEtAlRjb2014 - Inter event
1.6
Median LH = 0.503 1.6
Median LH = 0.550 1.4
Median LH = 0.519 2.0
Median LH = 0.659
1.4 1.4 1.2
1.2 1.2 1.0 1.5
Frequency
Frequency
Frequency
Frequency
Frequency
0.8 0.8
0.6 0.6
0.4 0.4
0.2 0.2
0.00.0 0.2 0.4 0.6 0.8 1.0 0.00.0 0.2 0.4 0.6 0.8 1.0
LH (PGA) LH (PGA)
(c) Akkar and Cagnan (2010) model (d) Akkar et al. (2014) model
In general the trends seen in Figure 5.1 are visible in the LH histograms in the manner
described in Scherbaum et al. (2004). In the Boore and Atkinson (2008) model intra-event and
total residuals showed a greater variance than predicted by the GMPE, a trend that tends to
result in LH values closer to zero than 1. For the Akkar et al. (2014) GMPE both the total and
inter-event residuals are generally evenly distributed between 0 and 1, with a median of close to
0.5, indicating a good agreement between the model and observations. The inter-event residuals
show a smaller range than that expected by the model and so the LH values are closer to 1.0 (the
distances from the mean are smaller than expected).
5.4 Residual Trends with Predictor Variables 61
Frequency
Frequency
1.2
0.8 1.0
0.6 0.8
0.4 0.6
0.4
0.2 0.2
0.00.0 0.2 0.4 0.6 0.8 1.0 0.00.0 0.2 0.4 0.6 0.8 1.0
LH (SA(1.0)) LH (SA(1.0))
AkkarEtAlRjb2014 - Intra event
1.2
Median LH = 0.506
1.0
Frequency
0.8
0.6
0.4
0.2
0.00.0 0.2 0.4 0.6 0.8 1.0
LH (SA(1.0))
Figure 5.4 – LH distribution for the observed Sa (1.0s) set using the Akkar et al. (2014) GMPE
As shown in Figure 5.5, and in subsequent figures, a linear model is fit to the observed
residual trends. The significance of the trend is measured via the “p-value”, reported in the figure
header. This indicates the probability observing the measured trend in the residuals assuming
a null hypothesis of no trend (i.e. zero gradient). Consequently a smaller “p-value” indicates
a more significant trend, assuming (loosely) that statistically significant trends might be those
with a “p-value” smaller than 0.1. If the magnitude scaling is largely unbiased with respect to
the GMPE it is expected that no significant linear trend can be observed the plot of residuals
with magnitude. This is the case for the Akkar et al. (2014) GMPE in which no statistically
significant trend is observed with respect to magnitude. For the Boore and Atkinson (2008)
model a statistically significant trend is visible in the inter-event residuals. For PGA this trend is
negative, suggesting that the GMPE is predicting higher than observed ground motions for the
larget magnitudes, whilst for Sa (1.0s) the opposite is true, indicating the GMPE is predicting
lower than expected ground motions at higher magnitudes.
Z (PGA)
0 0
2 2
4
6 4
3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0
Magnitude Magnitude
BooreAtkinson2008 - Inter event AkkarEtAlRjb2014 - Inter event
4
Slope = -3.6407e-01, Intercept = 1.307 p = 1.823216e-09 2.0
Slope = 5.0204e-02, Intercept = -0.320 p = 2.757225e-01
3 1.5
2 1.0
Z (PGA)
1
Z (PGA)
0.5
0 0.0
1 0.5
2 1.0
3 1.5
43.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 2.03.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0
Magnitude Magnitude
BooreAtkinson2008 - Intra event AkkarEtAlRjb2014 - Intra event
6
Slope = -7.4827e-02, Intercept = 0.188 p = 4.357956e-01 4
Slope = 2.6082e-03, Intercept = -0.017 p = 9.674383e-01
4 3
2 2
Z (PGA)
Z (PGA)
1
0 0
2 1
4 2
3
63.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 43.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0
Magnitude Magnitude
(a) Boore and Atkinson (2008) model - PGA (b) Akkar et al. (2014) model - PGA
BooreAtkinson2008 - Total AkkarEtAlRjb2014 - Total
6
Slope = 1.6236e-01, Intercept = -1.141 p = 7.394663e-02 6
Slope = -8.3509e-02, Intercept = 0.493 p = 2.571171e-01
4 4
Z (SA(1.0))
Z (SA(1.0))
2 2
0 0
2 2
4 4
63.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 63.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0
Magnitude Magnitude
BooreAtkinson2008 - Inter event AkkarEtAlRjb2014 - Inter event
4
Slope = 2.7397e-01, Intercept = -1.694 p = 2.048679e-05 4
Slope = 1.6185e-02, Intercept = -0.020 p = 7.412424e-01
3 3
2 2
Z (SA(1.0))
Z (SA(1.0))
1 1
0 0
1 1
2 2
3 3
43.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 43.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0
Magnitude Magnitude
BooreAtkinson2008 - Intra event AkkarEtAlRjb2014 - Intra event
Slope = 3.8937e-02, Intercept = -0.396 p = 6.299443e-01 6
Slope = -1.0598e-01, Intercept = 0.582 p = 1.133985e-01
4 4
Z (SA(1.0))
Z (SA(1.0))
2 2
0 0
2 2
4 4
3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 63.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0
Magnitude Magnitude
(c) Boore and Atkinson (2008) model - Sa (1.0s) (d) Akkar et al. (2014) model - Sa (1.0s)
Figure 5.5 – Residual trends with magnitude for the observed PGA and Sa (1.0s) records
5.4 Residual Trends with Predictor Variables 63
The input arguments are identical to the ResidualwithMagnitude tool, with the exception
of the distance_type and plot_type keywords. The distance_type determines the distance
measure used for visualisation, whilst the plot_type keyword indicates whether to plot the
distance values on a logarithmic axis (“log”) or a linear axis (“linear”). A logarithmic axis is
preferred by default.
In contrast to the residual trends with magnitude, it is evident in Figure 5.6 that statistically
significant trends with distance exist for both GMPEs. This can be clearly seen in the intra-event
residual, which shows a negative trend in the residuals, a trend that is more pronounced for the
Boore and Atkinson (2008) model. This indicates that both models underestimate the degree
of attenuation in the ground motions observed in Italy, as both models predict higher ground
motion at greater distances than those observed in the strong motion records.
Z (PGA)
0 0
2 2
4
6 4
0 50 100 150 200 250 0 50 100 150 200 250
rjb Distance (km) rjb Distance (km)
BooreAtkinson2008 - Inter event AkkarEtAlRjb2014 - Inter event
4
Slope = -7.7842e-03, Intercept = -0.317 p = 1.092224e-11 2.0
Slope = -1.5720e-03, Intercept = -0.012 p = 7.247694e-02
3 1.5
2 1.0
Z (PGA)
Z (PGA)
0.5
0 0.0
1 0.5
2 1.0
3 1.5
40 50 100 150 200 250 2.00 50 100 150 200 250
rjb Distance (km) rjb Distance (km)
BooreAtkinson2008 - Intra event AkkarEtAlRjb2014 - Intra event
6
Slope = -1.3273e-02, Intercept = 0.227 p = 7.310600e-14 4
Slope = -3.7435e-03, Intercept = 0.116 p = 1.963430e-03
4 3
2 2
Z (PGA)
Z (PGA)
1
0 0
2 1
4 2
3
60 50 100 150 200 250 40 50 100 150 200 250
rjb Distance (km) rjb Distance (km)
(a) Boore and Atkinson (2008) model - PGA (b) Akkar et al. (2014) model - PGA
BooreAtkinson2008 - Total AkkarEtAlRjb2014 - Total
6
Slope = -5.1103e-03, Intercept = -0.143 p = 3.022746e-03 6
Slope = -3.3772e-03, Intercept = 0.171 p = 1.573572e-02
4 4
Z (SA(1.0))
Z (SA(1.0))
2 2
0 0
2 2
4 4
60 50 100 150 200 250 60 50 100 150 200 250
rjb Distance (km) rjb Distance (km)
BooreAtkinson2008 - Inter event AkkarEtAlRjb2014 - Inter event
4
Slope = 3.6557e-04, Intercept = -0.296 p = 7.672829e-01 4
Slope = 3.3485e-04, Intercept = 0.052 p = 7.194933e-01
3 3
2 2
Z (SA(1.0))
Z (SA(1.0))
1 1
0 0
1 1
2 2
3 3
40 50 100 150 200 250 40 50 100 150 200 250
rjb Distance (km) rjb Distance (km)
BooreAtkinson2008 - Intra event AkkarEtAlRjb2014 - Intra event
Slope = -5.9629e-03, Intercept = -0.006 p = 9.230966e-05 6
Slope = -4.1003e-03, Intercept = 0.168 p = 1.223585e-03
4 4
Z (SA(1.0))
Z (SA(1.0))
2 2
0 0
2 2
4 4
0 50 100 150 200 250 60 50 100 150 200 250
rjb Distance (km) rjb Distance (km)
(c) Boore and Atkinson (2008) model - Sa (1.0s) (d) Akkar et al. (2014) model - Sa (1.0s)
Figure 5.6 – Residual trends with Joyner-Boore distance for the observed PGA and Sa (1.0s) records
Z (PGA)
0 0
2 2
4
6 4
500 1000 1500 2000 500 1000 1500 2000
Vs30 (m/s) Vs30 (m/s)
BooreAtkinson2008 - Inter event AkkarEtAlRjb2014 - Inter event
4
Slope = 2.2935e-04, Intercept = -0.684 p = 1.522898e-01 2.0
Slope = -1.0316e-04, Intercept = -0.008 p = 3.888811e-01
3 1.5
2 1.0
1 0.5
Z (PGA)
Z (PGA)
0 0.0
1 0.5
2 1.0
3 1.5
4 500 1000 1500 2000 2.0 500 1000 1500 2000
Vs30 (m/s) Vs30 (m/s)
BooreAtkinson2008 - Intra event AkkarEtAlRjb2014 - Intra event
6
Slope = 1.4666e-03, Intercept = -0.957 p = 2.123134e-09 4
Slope = 5.2460e-04, Intercept = -0.276 p = 1.491352e-03
4 3
2
2 1
Z (PGA)
Z (PGA)
0 0
2 1
2
4 3
6 500 1000 1500 2000 4 500 1000 1500 2000
Vs30 (m/s) Vs30 (m/s)
(a) Boore and Atkinson (2008) model - PGA (b) Akkar et al. (2014) model - PGA
BooreAtkinson2008 - Total AkkarEtAlRjb2014 - Total
6
Slope = 9.3104e-04, Intercept = -0.789 p = 7.208593e-05 6
Slope = 8.8107e-04, Intercept = -0.393 p = 3.310098e-06
4 4
Z (SA(1.0))
Z (SA(1.0))
2 2
0 0
2 2
4 4
6 500 1000 1500 2000 6 500 1000 1500 2000
Vs30 (m/s) Vs30 (m/s)
BooreAtkinson2008 - Inter event AkkarEtAlRjb2014 - Inter event
4
Slope = 3.8514e-04, Intercept = -0.484 p = 2.211517e-02 4
Slope = 3.1393e-04, Intercept = -0.100 p = 1.342158e-02
3 3
2 2
Z (SA(1.0))
Z (SA(1.0))
1 1
0 0
1 1
2 2
3 3
4 500 1000 1500 2000 4 500 1000 1500 2000
Vs30 (m/s) Vs30 (m/s)
BooreAtkinson2008 - Intra event AkkarEtAlRjb2014 - Intra event
Slope = 8.4829e-04, Intercept = -0.636 p = 4.613592e-05 6
Slope = 8.3658e-04, Intercept = -0.397 p = 1.157889e-06
4 4
Z (SA(1.0))
Z (SA(1.0))
2 2
0 0
2 2
4 4
500 1000 1500 2000 6 500 1000 1500 2000
Vs30 (m/s) Vs30 (m/s)
(c) Boore and Atkinson (2008) model - Sa (1.0s) (d) Akkar et al. (2014) model - Sa (1.0s)
Figure 5.7 – Residual trends with VS30 for the observed PGA and Sa (1.0s) records
In this case both GMPEs show statistically significant negative trends in the residual with
respect to depth. As expected, it is the inter-event residual where these trends are evident, and
that control the trends in the total residual. This indicates that the GMPEs are predicting higher
ground motions for deeper events than those observed. For the two GMPEs considered, this
result is somewhat expected as neither have an explicit dependence on a depth predictor variable;
66 Chapter 5. Comparing Models and Observations
Z (PGA)
0 0
2 1
4 2
60 5 10 15 20 25 30 35 40 45 30 5 10 15 20 25 30 35 40 45
Hypocentral Depth (km) Hypocentral Depth (km)
BooreAtkinson2008 - Inter event AkkarEtAlRjb2014 - Inter event
4
Slope = -3.8553e-02, Intercept = -0.115 p = 1.127868e-13 2.0
Slope = -2.8419e-02, Intercept = 0.269 p = 2.116516e-13
3 1.5
2 1.0
Z (PGA)
Z (PGA)
0.5
0 0.0
1 0.5
2 1.0
3 1.5
40 5 10 15 20 25 30 35 40 45 2.00 5 10 15 20 25 30 35 40 45
Hypocentral Depth (km) Hypocentral Depth (km)
BooreAtkinson2008 - Intra event AkkarEtAlRjb2014 - Intra event
6
Slope = -1.7600e-02, Intercept = 0.013 p = 3.265616e-02 3
Slope = -9.2244e-03, Intercept = 0.102 p = 9.144008e-02
4 2
2 1
Z (PGA)
Z (PGA)
0 0
2 1
4 2
60 5 10 15 20 25 30 35 40 45 30 5 10 15 20 25 30 35 40 45
Hypocentral Depth (km) Hypocentral Depth (km)
(a) Boore and Atkinson (2008) model - PGA (b) Akkar et al. (2014) model - PGA
BooreAtkinson2008 - Total AkkarEtAlRjb2014 - Total
Slope = -2.7090e-02, Intercept = 0.008 p = 4.285575e-04 6
Slope = -1.4530e-02, Intercept = 0.228 p = 1.907339e-02
4 4
Z (SA(1.0))
Z (SA(1.0))
2 2
0 0
2 2
4 4
0 5 10 15 20 25 30 35 40 45 60 5 10 15 20 25 30 35 40 45
Hypocentral Depth (km) Hypocentral Depth (km)
BooreAtkinson2008 - Inter event AkkarEtAlRjb2014 - Inter event
4
Slope = -3.3831e-02, Intercept = 0.109 p = 8.191199e-10 4
Slope = -2.2742e-02, Intercept = 0.326 p = 3.856035e-08
3 3
2 2
Z (SA(1.0))
Z (SA(1.0))
1 1
0 0
1 1
2 2
3 3
40 5 10 15 20 25 30 35 40 45 40 5 10 15 20 25 30 35 40 45
Hypocentral Depth (km) Hypocentral Depth (km)
BooreAtkinson2008 - Intra event AkkarEtAlRjb2014 - Intra event
Slope = -1.2758e-02, Intercept = -0.048 p = 6.313971e-02 Slope = -3.5921e-03, Intercept = 0.074 p = 5.265000e-01
4 4
Z (SA(1.0))
Z (SA(1.0))
2 2
0 0
2 2
4 4
0 5 10 15 20 25 30 35 40 45 0 5 10 15 20 25 30 35 40 45
Hypocentral Depth (km) Hypocentral Depth (km)
(c) Boore and Atkinson (2008) model - Sa (1.0s) (d) Akkar et al. (2014) model - Sa (1.0s)
Figure 5.8 – Residual trends with hypocentral depth for the observed PGA and Sa (1.0s) records
Consider the case of two models defined by continuous probability distributions f (x) and
g (x) respectively. If model f (x) is not known explicitly, but has been sampled N times, such
that the observation set is x = {xi } for i = 1, . . . , N, then the likelihood of model g (x) given the
observations is defined as:
N
L (g|x) = ∏ g (xi ) (5.9)
i=1
which for a measure independent of sample size becomes the average sample log-likelihood:
1 N
LLH = hlogb (L (g|x))i = ∑ logb (g (xi )) (5.10)
N i=1
where b = 2 if considering information in “bits”.
The close the two models the larger the corresponding log-likelihood. This concept can be
applied to GMPEs, which are themselves probability distributions. If the set of observations is
sampled from the model f (x), in this case representing the “true” model, then the information
loss that occurs by representing f (x) by the model g (x) is determined via the Kullback-Leibler
distance:
f (x)
Z ∞
D ( f , g) = f (x) logb dx (5.11)
−∞ g (x)
To compare the information loss for multiple GMPEs, given that the “true” model is unknown
but that it is represented by N samples, the model distance between the “true” model and the
GMPE is represented by the negative average sample log-likelihood.
Scherbaum et al. (2009) provide a potential means of deriving weights for each model within
a set of models using the average sample log-likelihood:
2−LLH
wl = (5.12)
∑Kk=1 2−LLH
To illustrate this we use the LLH tool from the res module. We consider the same four
GMPEs and the same set of records. The LLH analysis is run as follows:
1 llh_1 = res . LLH ( gmpe_list , imt_list )
2 llh_1 . get_residuals ( italy_db_clean )
3 Run LLH analysis
4 llh_values , weights = llh_1 . g e t _ l o g l i k e l i h o o d _ v a l u e s ()
To view the LLH values and weights, it is only necessary to do the following:
1 for gmpe in gmpe_list :
2 print " LLH (% s ) = %12.6 f Weight = %12.6 f " %( gmpe ,
3 llh_values [ gmpe ] ,
4 weights [ gmpe ])
which, for the GMPEs and the strong motion database considered throughout this chapter, returns
an output similar to that below:
In this particular case it is, as expected, the Akkar et al. (2014) GMPE that provides the
smallest average sample log-likelihood, and would therefore be assigned a greater weighting.
D = a −Y (5.13)
dd dd
P (|D| < |d j |) = P |D| < |d j + | − P |D| < |d j − | (5.15)
2 2
The total occurrence probability for a set of |d j | values is the modified Euclidean distance
(MDE):
n
MDEd = ∑ |d j |P (|D| < |d j |) (5.16)
j=1
The modified Euclidean Distance (MDE) does not explicitly consider potential in the median
value of the GMPE with respect to the observations. To quantify the level of bias in the predictions
of the median values a parameter κ is introduced, which is the ratio of the total Euclidean distance
between observed and expected median ground motions with respect the Euclidean Distance
between the expected motions and the observed values corrected by a predictive model derived
from a simple linear regression on the data.
N
2
∑ (ai −Yi )
i=1
κ= N
(5.17)
2
∑ (ai −Yc,i )
i=1
where Yc,i = Yi − (Y f it,i − ai ) and Y f it,i is the predicted value of the observation from a linear
regression of Yi against ai .
5.7 Site Specific Analysis 69
The sum of the modified Euclidean Distances represents the overall probability of the
differences between the observed and estimated ground motion. Consequently a smaller sum
of the MDE values indicates a better representation of the ground motion from the predictive
model. To eliminate the dependency on sample size the sum of the MDE values is divided by
the number of observations, to give the mean MDE. Finally to penalise to penalise predictive
models displaying a larger bias in the median estimations, the mean MDE is multiplied by κ.
The final Euclidean Distance Ranking (EDR) or a GMPE with respect to the dataset is therefore
calculated via:
N
1
EDR2 = κ × × ∑ MDEi2 (5.18)
N i=1
To run an Euclidean distance-based ranking analysis for a database, the following process
should be followed:
1 # EDR analysis
2 edr1 = res . EDR ( gmpe_list , imt_list )
3 edr1 . get_residuals ( italy_db_clean )
4 edr_values = edr1 . get_edr_values ()
The EDR values and corresponding information can be viewed with the following:
1 for gmpe in gmpe_list :
2 print " EDR (% s ) = %8.4 f ( sqrt ( kappa ) = %8.4 f ) " %( gmpe ,
3 edr_values [ gmpe ][ " EDR " ] , edr_values [ gmpe ][ " sqrt Kappa " ])
NEQ
1
δ S2SS = ∑ δA,i j (5.19)
NEQ j=1
where δ S2SS represents the average within-event residual at the station recorded from NEQ
events. If there is minimal bias in the sub-set of single station records, this term should have a
zero mean and a standard-deviation of φS2S (Rodriguez-Marek et al., 2011). Therefore the total
aleatory variability (δT,i j ) can be decomposed into an average site-specific intra-event term and a
residual variability, denoted by δWo,i j :
term from the residuals. Taking the standard deviation of this term for each station returns the
single-station standard deviation for the station (φss,s ):
v
uN
u EQ
u ∑ (δA,i j − δ S2SS )2
u j=1
φss,s = (5.21)
t
NEQ − 1
For a subset of NSIT ES records within a database the total single-station standard deviation
(φss ) for the specific ground motion prediction equation can then be determined from:
v
u SIT ES NEQ,i
uN
u ∑ ∑ (δA,i j − δ S2SS )2
u i=1 j=1
φss = u
u N (5.22)
SIT ES
∑ EQ,i − 1
t
N
i=1
This returns 16 sites for which more than 30 records exist in our database. The first step is to
get the residual information for the sites. This can be done using the function in the res module
called SingleStationAnalysis. This function requires as input the list of GMPE’s used for
the residual analysis and the list of intensity measures. In this case we consider only the Akkar
et al. (2014) GMPE using PGA and Sa (1.0s).
1 # Consider the AkkarEtAlRjb2014 GMPE with PGA , Sa (0.2) , Sa (1.0)
2 gmpe_list = [ " AkkarEtAlRjb2014 " ]
3 imt_list = [ " PGA " , " SA (0.2) " , " SA (1.0) " ]
4 # Get the residuals for the site
5 site_ids = top_sites . keys ()
6 ssa1 = res . S i n g l e S t a t i o n A n a l y s i s ( top_sites . keys () ,
7 gmpe_list ,
8 imt_list )
9 ssa1 . g et _si te _r esi du al s ( db1 )
The SingleStationAnalysis module is instantiated with a list of station IDs, a list of
GMPEs and a list of the intensity measure types. The analysis is then run on the input database.
Two visualisation tools are available in the rspl modules: ResidualsWithSite and
IntraEventResidualWithSite. The former creates plots of normalised total-, inter- and
intra-event residual for a a set of sites, given a particular GMPE and intensity measure type. For
example, using the Akkar et al. (2014), the normalised residuals for the stations listed previously
are shown can be calculated for PGA and Sa (1.0s) using the following, and the results may be
similar to those shown in Figure 5.9:
1 rspl . ResidualWithSite ( ssa1 ,
2 " AkkarEtAlRjb2014 " ,
3 " PGA " ,
4 figure_size =(7 ,7) ,
5 filename = " path / to / image . pdf " ,
6 filetype = " pdf " )
7 rspl . ResidualWithSite ( ssa1 ,
8 " AkkarEtAlRjb2014 " ,
9 " SA (1.0) " ,
10 figure_size =(7 ,7) ,
11 filename = " path / to / image . pdf " ,
12 filetype = " pdf " )
To view the distribution of δ S2SS and δWo,i j for each site, and calculate the variability in the
average within-event residual to return φS2S and φSS for the corresponding GMPE and intensity
measures, the IntraEventResidualWithSite tool is used. For the Akkar et al. (2014) GMPE
and the decomposition of the intra-event residual for PGA and Sa (1.0s) is run as follows, and
would produce results similar to those shown in Figure 5.10:
1 rspl . I n t r a E v e n t R e s i d u a l W i t h S i t e ( ssa1 ,
2 " AkkarEtAlRjb2014 " ,
3 " PGA " ,
4 figure_size =(7 ,7) ,
5 filename = " path / to / image . pdf " ,
6 filetype = " pdf " )
7
72 Chapter 5. Comparing Models and Observations
Total
0 0
2
5 4
6
182
182
155
105
155
105
187
187
183
153
183
153
149
139
149
139
188
188
2322
2322
134
184
194
2591
134
184
194
2591
229
229
2466
2466
3
AkkarEtAlRjb2014 - PGA - Inter event Residual 3
AkkarEtAlRjb2014 - SA(1.0) - Inter event Residual
2 2
Inter event
Inter event
1 1
0 0
1 1
2 2
3 182 3
182
155
105
155
105
187
187
183
153
183
153
149
139
149
139
188
188
2322
2322
134
184
194
2591
134
184
194
2591
229
229
2466
2466
6
AkkarEtAlRjb2014 - PGA - Intra event Residual 4
AkkarEtAlRjb2014 - SA(1.0) - Intra event Residual
4 3
2
Intra event
Intra event
2 1
0 0
2 1
2
4 3
6 4
182
182
155
105
155
105
187
187
183
153
183
153
149
139
149
139
188
188
2322
2322
134
184
194
2591
134
184
194
2591
229
229
2466
2466
(a) PGA (b) Sa (1.0s)
8 rspl . I n t r a E v e n t R e s i d u a l W i t h S i t e ( ssa1 ,
9 " AkkarEtAlRjb2014 " ,
10 " SA (1.0) " ,
11 figure_size =(7 ,7) ,
12 filename = " path / to / image . pdf " ,
13 filetype = " pdf " )
4
AkkarEtAlRjb2014 - PGA (Std Dev = 0.62923) 3
AkkarEtAlRjb2014 - SA(1.0) (Std Dev = 0.67289)
3 2
δWes (SA(1.0))
2 1
δWes (PGA)
1
0 0
1 1
2 2
3 3
4
182
155
105
187
183
153
149
139
188
2322
134
184
194
2591
229
2466
182
155
105
187
183
153
149
139
188
2322
134
184
194
2591
229
2466
1.0
AkkarEtAlRjb2014 - PGA (φS2S = 0.29532) 1.0
AkkarEtAlRjb2014 - SA(1.0) (φS2S = 0.28851)
δS2SS (SA(1.0))
0.5 0.5
δS2SS (PGA)
0.0 0.0
0.5 0.5
1.0 1.0
182
155
105
187
183
153
149
139
188
2322
134
184
194
2591
229
2466
182
155
105
187
183
153
149
139
188
2322
134
184
194
2591
229
2466
3 3
2 2
1 1
0 0
1 1
2 2
3 3
182
182
155
105
155
105
187
187
183
153
183
153
149
139
149
139
188
188
2322
2322
134
184
194
2591
134
184
194
2591
229
229
2466
2466
Figure 5.10 – Decomposition of Intra-event residuals for PGA and Sa (1.0s) for each station using
the Akkar et al., 2014 GMPE
In Figure 5.10 the analysis is broken down into three components, similar to that shown in
Figure 5 of Rodriguez-Marek et al. (2011). The top figure for each plot shows the observed intra-
event residual for each site, not normalised by the intra-event standard deviation σ . Taking the
standard deviation of these residual values should, in theory, approximately equal the intra-event
5.7 Site Specific Analysis 73
standard deviation for the GMPE. In the present case the original GMPE σ for PGA was equal to
0.6201, and for Sa (1.0s) it was equal 0.6787. In the top graph in Figure 5.10 the total standard
deviation of all the non-normalised intra-event residuals is very close to the GMPE σ . In the
middle plot we see the average within-event residual for each station. In this example we observe
that these values do not have a zero mean, suggesting a potential bias in the sample of stations.
All 16 stations come from the same region (Turkey) of the data set. The standard deviation of the
average within-event residuals for the subset of stations (φS2S ) is shown. Finally, in the bottom
figure we see the distribution residual variabilities (i.e. δA,i j − δ S2SS ) for each of the stations.
The standard deviation of these terms represents the single-station standard deviation (φSS ) of
the whole model. This term should usually, but may not always, be smaller than the intra-event
residual of the GMPE. This value is an estimate of the non-ergodic standard deviation for the
GMPE.
Developing GMPE Logic Trees: A “Good
Practice” Guide
Conditional Field Simulation
Example of Conditional Simulation:
L’Aquila
Books
Articles
Reports
6. Hazard Applications
(TODO) - These should follow from future feedback regarding these tools
The extraction of the ground motion residuals from a set of observations also opens up the
possibility of implementing another type of calculation that is becoming increasingly common in
seismic hazard and risk modelling, and that is conditional random field simulation. These are
randomly generated fields of ground motion residuals (z) whose values are i) spatially correlated
according to a multivariate Gaussian distribution, and ii) conditioned upon observed (known)
values of the residual. This type of analysis can be critical in characterising the uncertainty in
“ShakeMaps” (i.e. field of ground motion generated from an observed event), which in turn can
provide insights into the distribution of expected or, if applied a posteriori, observed losses (e.g.
Crowley et al., 2008b; Park et al., 2007; Stafford, 2012).
It has been well-established from observations of densely recorded earthquakes, that ground
motion residuals are spatially correlated when stations are separated by distances typically on
the order of a few tens of kilometres (Jayaram and Baker, 2009a). Given the assumption of
lognormality in the GMPEs, it is has also been demonstrated appropriate to model the spatial
correlation in ground motion residual between two or more sites using a multivariate Gaussian
distribution (Jayaram and Baker, 2009b). The coeffiecient of correlation between two sites
separated by a distance h (ρ (h)) is shown to decay exponentially with distance such that:
−a (T ) h
ρ (h) = exp (6.1)
b (T )
where a (T ) and b (T ) control the shape of the decay and are dependent on the period of ground
motion under consideration. One such model of spatial correlation, which we shall use in this
76 Chapter 6. Hazard Applications
(
−3h
8.5 + 17.2T “Case 1”
T <1s
ρ (h) = exp where b (T ) = 40.7 − 15.0T “Case 2” T <1s (6.2)
b (T )
22.0 + 3.7T T ≥1s
X = µ + LU (6.3)
where µ is the mean values of the field (in this case a zero-vector 0), U is a sample of independent
normally distributed random variates and L is the lower matrix defined by LLT = C, which is
obtained by Cholesky factorisation of the covariance matrix. This assumes that values of X are
unknown a priori, as might be the case if considering spatially correlated fields of ground motion
residuals for some as yet unrecorded event. The ability to generate spatially correlated fields in
this manner is supported directly by OpenQuake.
When considering a recorded event it is possible to partition the ground motion field into
those locations for which the GMPE residual is known (XOBS ), and those for which it is unknown
(XUNK ). Given the locations of both the known and unknown values the covariance matrices
can be formed where C11 is the covariance of the known residuals, C22 the covariance of the
unknown locations and C12 and C21 the covariance matrices considering the distance between
the known and unknown locations. In the case of a multivariate standard normal distribution, the
distribution of residuals at both locations can be depicted as:
XOBS 0 C11 C12
∼ NM , (6.4)
XUNK 0 C21 C22
which is arranged to give the distribution of residuals at the unknown locations, conditional upon
the known residuals:
h i h i
[XUNK |XOBS ] ∼ NM C21 C−1 11 X OBS , C 22 − C 21 C −1
11 C12 (6.5)
From this model it is then possible to simulate random fields of GMPE residuals conditioned
upon observed residuals. This functionality is not directly supported in OpenQuake, as it requires
a mean by which the observed residuals can be characterised using the desired GMPE. As has
been shown in Chapter 5, however, the GMPE-SMTK does exactly this. Therefore it becomes
possible to use the GMPE-SMTK, in conjunction with OpenQuake, to produce multiple fields of
spatially correlated ground motions that are conditional upon a set of known observations. For this
purpose we include a set of tools in a module called smtk.hazard.conditional_simulation,
which we shall import as, and subsequently refer to as, csim
1 import smtk . hazard . c o n d i t i o n a l _ s i m u l a t i o n as csim
6.2 Conditional Field Simulation 77
In this example we shall consider only the Akkar et al., 2014 GMPE, and just two intensity
measures: PGA and Sa (1.0s):
1 gmpe_list = [ " AkkarEtAlRjb2014 " ]
2 imts = [ " PGA " , " SA (0.2) " , " SA (1.0) " ]
3 # Calculate the residuals
4 resid1 = Residuals ( gmpe_list , imts )
5 resid1 . get_residuals ( db1 )
We may be interested to observe the distance trend in these residuals. This is generated using
the tools described in chapter 5, and can be seen in Figure 6.1.
1 1
Z (PGA)
0 0
1 1
2 2
30 50 100 150 200 250 30 50 100 150 200 250
rjb Distance (km) rjb Distance (km)
AkkarEtAlRjb2014 - Inter event AkkarEtAlRjb2014 - Inter event
Slope1.0
= 4.2994e-34, Intercept = -0.976 p = 1.000000e+00 Slope1.0
= 1.0748e-34, Intercept = -0.235 p = 1.000000e+00
0.5 0.5
Z (SA(1.0))
Z (PGA)
0.0 0.0
0.5 0.5
1.00 50 100 150 200 250 1.00 50 100 150 200 250
rjb Distance (km) rjb Distance (km)
AkkarEtAlRjb2014 - Intra event AkkarEtAlRjb2014 - Intra event
Slope =3 -9.5296e-03, Intercept = 0.827 p = 2.910744e-03 Slope =3 -1.0368e-02, Intercept = 1.014 p = 6.787516e-03
2 2
Z (SA(1.0))
1 1
Z (PGA)
0 0
1 1
2 2
30 50 100 150 200 250 30 50 100 150 200 250
rjb Distance (km) rjb Distance (km)
(a) PGA (b) Sa (1.0s)
Figure 6.1 – Residual trends with distance for the L’Aquila ground motion residuals
Here we see that for both PGA and Sa (1.0s) the inter-event residual is moderately negative
(-0.976 for PGA and -0.235 for Sa (1.0s)), and we observe a clear trend that the ground motions
from this earthquake attenuated to a greater extent than that predicted by the GMPE.
78 Chapter 6. Hazard Applications
In the present case we have a model of the finite extent of the earthquake rupture. We
put this rupture into an OpenQuake xml format1 , as shown below, and save it in the file
laquila_rupture.xml.
With the use of the OpenQuake hazardlibrary and Python’s Matplotlib plotting tools we
can visualise the spatial trend in the residuals. Firstly we load in the rupture. The csim module
contains the method build_rupture_from_file, which will load in the rupture:
1 rupture_file = " laquila_rupture . xml "
2 rupture = csim . b u i l d _ r u p t u r e _ f r o m _ f i l e ( rupture_file )
For plotting it is convenient to define the outline of the surface projection of the rupture as a
simple polygon:
1 # Import the OpenQuake polygon class
2 from openquake . hazardlib . geo . polygon import Polygon
3 rupture_outline = Polygon ([ rupture . surface . top_left ,
4 rupture . surface . top_right ,
5 rupture . surface . bottom_right ,
6 rupture . surface . bottom_left ,
7 rupture . surface . top_left ])
The next step is to take the database and return its locations as an instance of the class
openquake.hazardlib.site.SiteCollection. This can be done using the method within
the database class (GroundMotionDatabase) called get_site_collection
1 observed_sites = db1 . ge t _s i t e_ c ol l ec t i on ()
The plot of the spatial distribution of residuals of PGA with respect to the rupture location is
shown in Figure 6.2. This can be generated using the Python code below:
1 # Import the Matplotlib library
2 import matplotlib . pyplot as plt
1 More information on the OpenQuake scenario rupture format can be found in Crowley et al. (2013)
6.2 Conditional Field Simulation 79
44.5
PGA Observed Intra-event Residual 3.0
44.0 2.4
1.8
43.5
1.2
43.0
0.6
42.5
Latitude
0.0
42.0
0.6
41.5
1.2
41.0
1.8
40.5 2.4
40.011.5 12.0 12.5 13.0 13.5 14.0 14.5 15.0 15.5 16.0 3.0
Longitude
44.5
Sa(1.0s) Observed Intra-event Residual 3.0
44.0 2.4
1.8
43.5
1.2
43.0
0.6
42.5
Latitude
0.0
42.0
0.6
41.5
1.2
41.0
1.8
40.5 2.4
40.011.5 12.0 12.5 13.0 13.5 14.0 14.5 15.0 15.5 16.0 3.0
Longitude
Figure 6.2 – Distribution of intra-event residuals for the L’Aquila ground motion records. The
surface projection of the L’Aquila rupture is shown in red.
Figure 6.2 helps understand the residual distribution further as we observed that for both
intensity measures there is a small cluster of strongly positive residuals in the very near-field of
80 Chapter 6. Hazard Applications
44.5
PGA - Simulated Intra-event Residual 3.0
44.0 2.4
1.8
43.5
1.2
43.0
0.6
42.5
Latitude
0.0
42.0
0.6
41.5
1.2
41.0
1.8
40.5 2.4
40.011.5 12.0 12.5 13.0 13.5 14.0 14.5 15.0 15.5 16.0 3.0
Longitude
Figure 6.3 – Random field of PGA ground motion residuals conditioned upon observed residuals
(circles) in the L’Aquila region
The spacing of this particular field is approximately 5 km. The typical correlation length
(i.e. the distance at which ρ (h) drops below 0.05) of PGA is on the order of approximately 10 to
6.2 Conditional Field Simulation 81
44.5
Sa (1.0s) - Simulated Intra-event Residual 3.0
44.0 2.4
1.8
43.5
1.2
43.0
0.6
42.5
Latitude
0.0
42.0
0.6
41.5
1.2
41.0
1.8
40.5 2.4
40.011.5 12.0 12.5 13.0 13.5 14.0 14.5 15.0 15.5 16.0 3.0
Longitude
Figure 6.4 – Random field of Sa (1.0s) ground motion residuals conditioned upon observed residuals
(circles) in the L’Aquila region
15 km. Given the exponential model it is evident that for PGA the spatial correlation is not so
significant at this resolution. For Sa (1.0s) the correlation length may be on the order of 30 to
40 km; hence both the spatial correlation and the effects of the conditioning are visible clearly
in Figure 6.4. Particular attention should be paid to the area of strong positive residuals in the
near-field of the rupture.
The csim tools contain a general method to implement much of the process outlined previ-
ously. This method is called get_conditional_gmfs and its usage is illustrated below:
1 gmfs = csim . g e t _ c o n d i t i o n a l _ g m fs ( db1 ,
2 rupture ,
3 sites = unknown_sites ,
4 gsims =[ " AkkarEtAlRjb2014 " ] ,
5 imts =[ " PGA " , " SA (1.0) " ] ,
6 nu mb er _si mu la tio ns =5 ,
7 truncation_level =3.0)
43.0
PGA (g) - Conditional Random Field 100
42.5
10-1
42.0
Latitude
41.5
10-2
41.0
Figure 6.5 – PGA ground motion field conditioned upon the ground motion residuals conditioned
upon observed ground motions from the L’Aquila (2009) earthquake
6.2 Conditional Field Simulation 83
43.0
Sa (1.0s) (g) - Conditional Random Field 100
42.5
10-1
42.0
Latitude
41.5
10-2
41.0
Figure 6.6 – Sa (1.0s) ground motion field conditioned upon the ground motion residuals conditioned
upon observed ground motions from the L’Aquila (2009) earthquake
Bibliography
Books
Crowley, H., D. Monelli, M. Pagani, V. Silva, and G. Weatherill (2013). OpenQuake Book. Pavia,
Italy: GEM FOUNDATION (cited on page 78).
Articles
Abrahamson, N. A. and W. J. Silva (2008). “Summary of the Abrahamson & Silva NGA Ground
Motion Relations”. In: Earthquake Spectra 24(1), pages 67 –97 (cited on page 46).
Abrahamson, N. A. and R. R. Youngs (1992). “A Stable Algorithm for Regression Analysis
Using the Random Effects Model”. In: Bulletin of the Seismological Society of America
82(1), pages 505 –510 (cited on page 56).
Akkar, S. and J. J. Bommer (2010). “Empirical equations for the prediction of PGA, PGV,
and spectral accelerations in Europe, the Mediterranean Region, and the Middle East”. In:
Seismological Research Letters 81.2, pages 195–206 (cited on pages 38, 56, 58, 60).
Akkar, S. and Z. Cagnan (2010). “A Local Ground-Motion Predictive Model for Turkey, and Its
Comparison with Other Regional and Global Ground-Motion Models”. In: Bulletin of the
Seismological Society of America 100(6), pages 2978 –2995 (cited on pages 38, 42, 56, 58,
60).
Akkar, S., M. A. Sandikkaya, and J. J. Bommer (2014). “Empirical Ground-Motion Models for
Point- and Extended- Source Crustal Earthquake Scenarios in Europe and the Middle East”.
In: Bulletin of Earthquake Engineering 12(1), pages 359 –387 (cited on pages 38, 56–62,
64–66, 68, 71, 72, 77).
Beyer, K. and J. J. Bommer (2006). “Relationships Between Median Values and Between
Aleatory Variabilities for Different Definitions of the Horizontal Component of Ground
Motion”. In: Bulletin of the Seismological Society of America 96(4A), pages 1512 –1522
(cited on page 28).
Boore, D. M. and G. M. Atkinson (Feb. 2008). “Ground-Motion Prediction Equations for the
Average Horizontal Component of PGA, PGV, and 5%-Damped PSA at Spectral Periods
between 0.01 s and 10.0 s”. In: Earthquake Spectra 24.1, pages 99–138 (cited on pages 38,
56, 58, 60–66).
86 Chapter 6. Hazard Applications
Other Sources
Park, J., P. Bazzurro, and J. W. Baker (2007). “Modeling spatial correlation of ground motion
Intensity Measures for regional seismic hazard and portfolio loss estimation”. In: Applications
of Statistics and Probability in Civil Engineering. Edited by Kanada, Takada, and Furuta.
Taylor & Francis Group, London (cited on page 75).
Weatherill, G. (2014). Hazard Modeller’s Toolkit - User Guide. Technical report. Global Earth-
quake Model (GEM) (cited on page 5).