<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Hot Spot Analysis for Big Trajectory Data in Road Networks</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Panagiota Keziou</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Christos Doulkeridis</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Digital Systems, University of Piraeus</institution>
          ,
          <country country="GR">Greece</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Hot spot analysis is the problem of identifying statistically significant spatial clusters and is typically applied on point data. The aim of this paper is to discover hot spots in an urban environment, namely road segments with statistically significant amount of trafic congestion, using massive GPS data of moving objects. To this end, we adjust the Getis-Ord index for hot spot discovery to become applicable for road networks. Then, we propose two data-parallel algorithms for hot spot discovery in road networks implemented in Apache Spark; an exact algorithm that has scalability limitations for very large data sets, and a scalable approximate algorithm that balances between performance and accuracy. We provide experiments over a large real-life data set that indicate the salient features of our approach.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Hot spot analysis</kwd>
        <kwd>road networks</kwd>
        <kwd>big data</kwd>
        <kwd>urban mobility</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>In recent years, the analysis of mobility data has drawn
the attention of both the academic society and the industry.
Tracking of moving objects on road networks is ubiquitous
in fleet management applications and can support diverse
scenarios of urban planning, more eficient transportation,
reduction of greenhouse gas emissions, and improvement
of life quality. Due to the technological evolution of GPS
sensors and their integration in mobile devices and cars, it
is possible to collect vast amounts of spatio-temporal data.
Thus, our work is motivated by the need for identifying
trafic congestion from GPS data on the road network.</p>
      <p>In this paper, we present an approach for identifying
trafic hot spots, using big trajectory data collected by GPS
sensors. Through hot spot analysis, we aim to identify road
segments with statistically significant high levels of trafic
congestion. This means that we do not just aim to identify
road segments that have high congestion values; such road
segments may be of interest, but they are not necessarily
statistically significant. Instead, a hot spot is statistically
significant if it has high congestion value but additionally is
surrounded by other segments with high congestion values.</p>
      <p>For this purpose, we employ the Getis-Ord Statistic index,
a popular metric for hot spot analysis, which – to the best of
our knowledge – has so far been used for spatial and
spatiotemporal data of objects with free movement. Instead, we
adapt the Getis-Ord index to become applicable for graphs
that represent the road network, such as the ones
obtainable via OpenStreetMap. Moreover, to handle the temporal
dimension, we consider diferent temporal snapshots of the
road network whose duration is user-defined according to
the application requirements. Efectively, we have multiple
snapshots of the same graph, each corresponding to the
same road network but for a diferent time interval and thus
each road segment has diferent trafic congestion values.
In this way, we formulate the problem of hot spot discovery
in road networks using a model that consists of a sequence
of temporal snapshots of the same graph (road network).</p>
      <p>Computing the hot spots using this model is a
processingintensive operation, which relies on difusion of information
over (parts of) the graphs. Moreover, the necessary data
to infer trafic congestion on roads may be in the order of
millions of GPS records per temporal interval. Therefore, we
need to design scalable algorithms for hot spot analysis by
exploiting big data technologies. To this end, we introduce
two data-parallel algorithms for hot spot discovery in road
networks, with a goal to be applicable for massive trajectory
data sets. The first algorithm returns the exact result, but
faces performance limitations for really large data sets due
to the underlying exchange of information between pairs
of edges. Then, we present an approximate algorithm with
a cut-of threshold for excluding edges that are located too
far away spatially or temporally, as their contribution to
hot spot discovery is minimal. It turns out that our
approximate algorithm provides an interesting trade-of between
scalability and accuracy, returning hot spots that are very
similar to ones discovered by the exact algorithm but orders
of magnitude faster.</p>
      <p>In summary, we make the following contributions:
• We formulate the problem of hot spot analysis in
road networks, by the means of Getis-Ord Statistic,
appropriately tailored for graphs.
• We design and implement an exact algorithm in</p>
      <p>Apache Spark that computes hot spots in parallel.
• We present a scalable approximate algorithm that
discovers hot spots of high accuracy but significantly
faster.
• We evaluate the performance and scalability of our
algorithms for diferent parameters, using a real-life
data set from the Metropolitan Area of Athens.</p>
      <p>The rest of this paper is structured as follows: Section 2
reviews related research eforts. Section 3 formulates the
problem under discussion. In Section 4, we present our
approach for hot spot analysis over road networks, while in
Section 5 we present the parallel algorithms for detecting
hot spots. Then, in Section 6 describes the results of our
evaluation, while in Section 7, we conclude the paper.
Existing works in hot spot analysis over mobility data can be
broadly classified in two categories: (a) point-based hot spot
analysis, where mobility data consist of individual spatial
or spatio-temporal points, and (b) trajectory-based hot spot
analysis, where sequences of spatio-temporal points that
belong to the same user/vehicle/vessel (i.e., trajectories) are
considered. As our work belongs to the latter category, we
briefly review point-based approaches and put our main
focus on trajectory-based approaches.</p>
      <sec id="sec-1-1">
        <title>2.1. Point-based Hot Spot Analysis</title>
        <p>
          Eftelioglu et al. [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] propose the CGC (Cubic Grid Circle)
algorithm for the problem of detecting geographically robust
hot spots, modeled as circles in a 2D space. The proposed
algorithm is an improvement of SaTScan algorithm, as it
detects non-contiguous or sparse center hot spots and
eliminates very small hot spots. In their studies, [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ] and [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]
expand the methodology for ring-shaped and elliptical hot
spots detection, respectively. In [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ], a density-based
clustering algorithm (sig-DBSCAN) improves the quality of
results by discarding random patterns, while the use of
DualConvergence algorithm significantly reduces computational
cost. For the above studies, the statistical significance of
the proposed hot spots is assessed via Monte Carlo
simulation. In contrast, Nikitopoulos et al. [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ] propose a parallel
and scalable solution for hot spot analysis over big
spatiotemporal data. The spatio-temporal domain is divided into
3D cells and the Getis-Ord * statistic is used to detect the
top- statistically significant cells:
* =
∑︀ =1 ,
        </p>
        <p>=1 ,  −  ∑︀

√︂ [ ∑︀
=1 2, − (∑︀=1 , )2]
− 1
(1)
where  is the attribute value for cell , , is the spatial
weight between cell  and ,  is equal to the total number
of cells, and  and  represent the mean and standard
deviation respectively:
 =
∑︀
=1 

 =
√︃ ∑︀
=1 2

In our work, we adapt the Getis-Ord statistic to be
applicable on graphs representing temporal snapshots of road
networks. The attribute  can be any indicator of trafic
congestion, such as the average speed or the number of
vehicles per time unit.</p>
        <p>
          The proposed approaches of [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ] and [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ] take into account
the underlying road network. Tang et al. [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ] present a
dynamic segmentation model of the road network, which
allows the identification of statistically significant linear hot
spots with high concentration of activities, such as
pedestrian accidents on the road network, which otherwise would
not have been recognized. According to the proposed
approach, the shortest paths between activities are identified
and a density index is calculated for each of them. The
algorithm returns all the paths that are statistically
significant (based on the Monte Carlo method) and their density
value exceeds a threshold. In [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ], the Network Isodistance
Hotspot Detection (NIHD) problem is studied, which reveals
sub-graph hot spots with high concentration of activities,
difused isotropically along the network. The deducted
computational cost of the algorithm is achieved through network
partitioning and upper-bound pruning.
        </p>
      </sec>
      <sec id="sec-1-2">
        <title>2.2. Trajectory-based Hot Spot Analysis</title>
        <p>
          In their studies, Häsner et al. [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ] and Li et al. [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ] take into
account the limitations of the road network. Li et al. [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]
propose the density-based algorithm FlowScan to discover
patterns in the flow of trafic, referred to as “hot routes”. By
defining the minimum common trafic that successive road
segments should share and the the number of edges that
form a neighborhood, clusters of the moving objects are
detected. The algorithm is capable of recognizing complex
spatial patterns. The OPS methodology proposed by Häsner
et al. [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ] predicts near future trafic hot spots, based on
recent positions of vehicles on the road network. A heuristic
method is employed to predict the future position of the
vehicles, and a weight is assigned to the nodes of the road
network that reflects the likely trafic intensity within a
specified time window. Finally, through an outlier detection
approach, hot spots nodes are detected and the DBSCAN
algorithm derives the sub-graphs that represent trafic hot
spot regions.
        </p>
        <p>
          Sacharidis et al. [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ] propose a framework for on-line
discovery of hot motion paths, in order to detect frequently
travelled paths. Their study diferentiates in the fact that
the hotness of a road segment is determined as a function
of the amount of time the moving object has spent on the
path. Similarly, the studies in [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ] and [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] detect hot spots
without taking into account the road network restrictions.
In [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ], the authors address the problem of hot spot
analysis over big trajectory data in a parallel and scalable way.
Their approach is based on spatio-temporal partitioning
of the 3D space in cells. The Getis-Ord index is employed
and appropriately tailored to reveal hot spots in terms of
spatio-temporal cells. Two algorithms are proposed: the
THS algorithm defines the z-score of the cell under study
depending to the cell values of the whole grid, which is
computationally expensive. The aTHS algorithm as the authors
mentions trade-of accuracy for eficiency in a controlled
manner and ignore the contribution of cells located out side
a predefined area of influence. Finally, Qiao et al. [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ]
introduce a cloud-based analytical framework for big mobile
data from the view of user mobility in densely populated
areas, collected from 2G/3G/4G networks.
        </p>
        <p>Our work difers from these approaches as we consider
road segments as candidate hot spots and adapt a
wellknown hot spot index to be applicable on temporal graphs
that represent the road network for diferent temporal
intervals. In this way, we capture the efect of spatial and
temporal proximity of neighboring congested road segments.
This is a diferentiating factor compared to related works
that operate over trajectories, as they produce hot spots at
diferent level of granularity (e.g., routes, paths, grid cells)
and using other metrics. To the best of our knowledge ours
is the first work that shows how to apply hot spot analysis
via Getis-Ord in road networks.</p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>3. Problem Formulation</title>
      <sec id="sec-2-1">
        <title>3.1. Preliminaries</title>
        <p>We consider a directed graph (, ) that represents the
road network, where an edge  ∈  corresponds to a road
segment and is defined by two vertices , ′ ∈  , which
represent crossroads. The edge  is directed, indicating the
lfow of movement on the road network from  to ′. We
use the terms edge and road segment interchangeably.</p>
        <p>To model the efect of time on trafic congestion, we
consider a sequence  = {1, 2, . . . , } of
temporal snapshots of the graph , where each snapshot
corresponds to a pre-defined temporal duration  . A snapshot
 corresponds to an interval [, +1) of duration  , i.e.,
+1 −  =  . For example, if  is set to 5 minutes, one
such interval could be 9:00 am – 9:05 am. A temporal
snapshot  of the graph  is used to represent the trafic for
the specific time interval [, +1). Fig. 1 illustrates the
concept of temporal snapshots of a graph that represents
the road network.</p>
      </sec>
      <sec id="sec-2-2">
        <title>3.2. Problem Formulation</title>
        <p>The problem of hot spot analysis addressed in this work is to
identify statistically significant road segments that indicate
hot spots, due to trafic congestion. An edge  at snapshot
, denoted  ∈ (), where () represents the
edges of the snapshot , is associated with an attribute
value  that indicates trafic congestion on  during the
temporal interval of . As such, whether an edge  is
considered hot spot is a function of the edge’s attribute value
, but also of other neighboring edges’ attribute values. By
neighboring edges, we mean both spatially (nearby edges
on the graph ) and temporally (edges at previous/next
temporal snapshots).</p>
        <p>
          To express this dependence on neighboring edges, we
adjust a commonly used function, namely the Getis-Ord
statistic [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ]. To the best of our knowledge, Getis-Ord has
been used so far to discover hot spots in cell-based
partitions for spatial (2D) and spatio-temporal (3D) domain, for
point [
          <xref ref-type="bibr" rid="ref14 ref5">14, 5</xref>
          ] and trajectory data [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ]. Our work extends the
applicability of Getis-Ord for hot spot discovery in graphs
representing the road network. Thus, for any edge  of a
snapshot  of  we adapt Eq. 1 and define the Getis-Ord
value of the -th edge of the -th temporal snapshot:
* =
∑︀|=|1 ∑︀=1 (),() −  ∑︀|=|1 ∑︀=1 (),()
 =
√︃ ∑︀|| ∑︀
=1 =1 2
        </p>
        <p>The weight (),() between two edges  (edge  at
snapshot ) and  (edge  at snapshot ) indicates
the influence of edge  to edge . Intuitively, if a road
segment is congested, this also afects other road segments
in its vicinity. More precisely, in this paper, we assume that
if a road segment  is congested, this afects (or will afect
in the near future) the previous road segments, i.e., those
leading to . For example, in Fig. 1 (left), the edge 3 (in
red color) is afected by the weights of edges 4, 5 and
6 (in blue color), whereas all other weights are considered
equal to zero (3)(1) = (3)(2) = 0 .</p>
        <p>Moreover, when considering diferent temporal
snapshots of the graph , the congestion of edges in snapshot
+1 afect edges of previous and next temporal snapshots
{. . . , +2, , − 1, . . . }. In Fig. 1 (right), edge 3 at
snapshot  is afected by edges 3, . . . , 6 at .</p>
        <p>According to the above, the problem of hot spot analysis
in road networks is to identify the  most statistically
significant road segments (edges) according to the Getis-Ord
statistic and can be formally stated as follows.</p>
        <p>Problem 1. (Hot spot analysis in road networks) Given a
sequence  of temporal snapshots of a directed graph (, )
representing the road network, find the top-  edges  of 
based on the Getis-Ord statistic *, such that: * ≥ *,
∀ ∈ ,  ∈ (⋃︀=1 ()) − .</p>
        <p>Intuitively, for each road segment we compute a value
that indicates if it is a hot spot. This value depends on
the trafic congestion of the road segment itself, but also
on the trafic congestion of subsequent road segments (as
congestion is propagated backwards). Moreover, it depends
on the trafic congestion of these road segments in the next
temporal snapshots of the network, as illustrated in Fig. 1.</p>
        <p>The novelty of our work lies in the identification of hot
spots in road networks using a statistically significant
metric. In contrast, existing works (Section 2) either use ad-hoc
ways to compute hot spots or compute statistically
significant hot spots as 2D/3D cells of predefined size. Adapting
the Getis-Ord statistic to become applicable for graphs is
the main technical contribution of our work. The challenge
relates to the definition of neighboring edges over multiple
temporal snapshots of the same graph.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>4. Hot Spot Analysis</title>
      <p>This section presents our approach for hot spot analysis
in road networks. The input is a data set of GPS records,
each corresponding to a specific vehicle (based on identifier
vehID), a timestamp , as well as the longitude  and latitude
 values. Also, a graph (, ) is available that represents
the road network, which consists of road segments, their
geometry, as well as additional information, such as
direction, speed limit, etc. Such a graph can be typically obtained
from external sources, such as OpenStreetMap.</p>
      <sec id="sec-3-1">
        <title>4.1. Map-matching</title>
        <p>
          Data collected from GPS sensors typically contain small
errors, thereby making the mapping of GPS coordinates to
the underlying road network hard. This problem is typically
solved by applying a map-matching algorithm, which is
responsible for mapping each pair of GPS coordinates
(longitude, latitude) to another point located on the road network.
Several sophisticated algorithms for map-matching have
been developed, such as [
          <xref ref-type="bibr" rid="ref15 ref16">15, 16</xref>
          ].
        </p>
        <p>As the problem of map-matching is orthogonal to the one
we are trying to solve, we adopt a simplistic approach where
each pair of GPS coordinates is assigned to the nearest edge.
In this way, each GPS record is enriched with an edge (road
segment) of the graph, the coordinates of the two points that
define the road segment, its length, as well as with other
available information such as the speed limit.</p>
      </sec>
      <sec id="sec-3-2">
        <title>4.2. Estimating an Edge’s Trafic Congestion</title>
        <p>
          In order to compute the Getis-Ord value of an edge , the
ifrst step is to compute the edge’s attribute value , an
indicator of trafic congestion. This is computed as the
average value of contributions from each vehicle that reported
its position on  during the timespan of . In the same
spirit as in [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ], we define this contribution as:
1 −


where  is the observed speed of a vehicle on edge ,
whereas  is the free flow speed for edge . One way
to compute  is to exploit the enter () and exit ()
time of the vehicle on edge . Thus, we have:
 =
        </p>
        <p>− 
where  is the length of the edge, and  () is the
entry (exit) time. Unfortunately, for a vehicle that provides
its position on edge  (after map-matching), we do not
know the exact entry and exit time. Therefore, we estimate
these values, in particular given two successive positions
we compute the entry time  as follows:
2 − 1
 = 1 + 1 · 1 + 2
where 1 and 2 correspond to the two timestamps, while
1 and 2 are the distances of the two points from the entry
node, as shown in Fig. 2. In this way, we can estimate the
entry/exit times for each edge.</p>
      </sec>
      <sec id="sec-3-3">
        <title>4.3. Defining the Weights</title>
        <p>
          Given two edges  and , where  precedes  on graph
, the weight (),() indicates the influence of trafic
congestion of edge  to edge . The weight is a function
of the distance between the edges, as an edge  that is
in close proximity with , has a stronger efect on ’s
congestion in comparison with another edge ′ that is
further away. As in [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ], we use a Gaussian kernel as weight
function, defined as follows:
(),() = (−
(2),() )
ℎ2
where ℎ is the kernel’s bandwidth and (),() denotes the
distance between edges  and . The distance function
takes into account both spatial as well as temporal proximity.
As such, we define the distance as a linear combination of
spatial and temporal distance:
(),() =   ((),())2 +   ((),())
2  
2
where   ,   are scale factors for spatial and temporal
distance respectively, whereas
        </p>
        <p>(),() is the spatial distance
and</p>
        <p>(),() the temporal distance. The spatial distance
(),() is measured as the number of edges between 
and  on graph . The temporal distance is the diference
between temporal snapshots, e.g., edges at snapshots 
and +1 have temporal distance equal to 1.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>5. Parallel Algorithms</title>
      <p>In this section, we present two data-parallel algorithms
designed and implemented in Apache Spark that compute
hot spots over very-large collections of GPS records in a
scalable way. The first algorithm is an exact algorithm,
whereas the second computes approximate results but with
high accuracy and much faster.</p>
      <p>
        In Apache Spark, the main data structure is the
DataFrame, and its predecessor the RDD (Resilient
Distributed Dataset) [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]. RDDs are immutable, distributed
collections of records, which support transformations and
actions. Transformations produce new RDDs from a given
RDD, with notable examples: map, flatMap, mapValues,
filter, etc. Actions perform some computation on an RDD
and produce a new result (e.g., count). Our algorithms are
implemented in Spark to support parallel processing.
      </p>
      <sec id="sec-4-1">
        <title>5.1. Pre-processing</title>
        <p>In the pre-processing phase, we perform map-matching (see
Section 4.1) and we split the data of each vehicle in a set of
trajectories. For each vehicle, we create a new trajectory
when we observe a temporal gap of  in the timestamps
of reported positions. The value of  is a parameter that
depends on the sampling rate of the data set at hand.</p>
        <p>
          As a result, the output of the pre-processing phase is a
set of records in the following format: (vehID, trajID, , ,
, , length, speed, , ′), where each GPS record (vehID,
, , ) of the original data set is enriched with information
Algorithm 1 Computation of trafic congestion on edges
Algorithm 2 Computation of Getis-Ord index
1: Input: The result of pre-processing: inputfile,
number of Apache Spark partitions  , temporal parameters:
, ,  , 
2: Output: RDD[(,),]
3: function
4: dataRDD = sc.load(inputfile)
5: attrRDD = dataRDD.groupByKey().
6: mapValues(sort_grouped_values).
7: lfatMap (lambda group: calc_attribute_value(group,
, ,  , )).
8: partitionBy( , lambda k: hash_partitioner).
9: mapValues(lambda x: (x,1)).
10: reduceByKey(lambda x, y: (x[0] + y[0], x[
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] +
y[
          <xref ref-type="bibr" rid="ref1">1</xref>
          ])).
11: mapValues(lambda x: x[0] / x[
          <xref ref-type="bibr" rid="ref1">1</xref>
          ])
12: end function
about the road segment (, length, speed, , ′) and each
record is assigned with a trajectory identifier (trajID). The
values  and ′ correspond to the start and end vertices of
edge , while speed is the speed limit which is typically
provided in the road network data set and we use it as free
lfow speed .
        </p>
      </sec>
      <sec id="sec-4-2">
        <title>5.2. The Exact Algorithm</title>
        <p>The main stages of our algorithm are summarized below:
• Stage 1: A set of transformations and aggregations
is applied to the input data set to assign a trafic
congestion value  to each edge .
• Stage 2: The road network is represented in the
form of a graph and the mean value () and
standard deviation () of the trafic congestion variable
are computed. This data is assigned to a broadcast
variable in order to become available to all the nodes
of the cluster.
• Stage 3: The * z-score for each edge  is
computed.
• Stage 4: The results of the previous step are filtered
for a level of confidence and the top-  edges with
the highest * z-score are selected.</p>
        <p>It should be noted that stages 1 and 3 are the time-consuming
steps, therefore we delve into their details next. Stage 3 is
the dominant cost, while stage 1 practically involves reading
data from disk, but it is still much lower than the cost of
stage 3.</p>
        <p>Algorithm 1 describes how the trafic congestion values
are computed (i.e., stage 1). First, we create an RDD of
keyvalue pairs (known as PairRDD) with trajID as key
(groupByKey, line 5) and value the records that correspond to
this trajectory in sorted temporal order (mapValues, line 5).
Then, for subsequent edges of each trajectory we compute
the congestion value per vehicle per edge (using function
calc_attribute_value()) and we create a new PairRDD with
a composite key that consists of the edge and the temporal
snapshot, while the value is the congestion value (flatMap,
line 7). Subsequently, we partition the records based on edge
using hash partitioning (line 8). In other words, all records
that have been mapped to the -th edge  at snapshot 
are assigned to the same partition. This allows the
computation of the average congestion value  per edge based
1: Input: The attrRDD: RDD[(,),], number of
Apache Spark partitions  , temporal parameters: ,
,  , , bandwidth ℎ, output of stage 2: , , 
2: Output: RDD[(,),*]
3: function
4: GetisOrdRDD = attrRDD.flatMap (lambda x :
GetisOrd</p>
        <p>
          Calculations(x, , ,  , , ℎ, , , ))).
5: partitionBy( , lambda k: hash_partitioner).
6: reduceByKey(lambda x, y: (x[0] + y[0], x[
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] + y[
          <xref ref-type="bibr" rid="ref1">1</xref>
          ],
x[
          <xref ref-type="bibr" rid="ref2">2</xref>
          ] + y[
          <xref ref-type="bibr" rid="ref2">2</xref>
          ])).
7: mapValues(lambda x: Gi_formula(x, , ))
8: end function
on the contributions of all vehicles (lines 9–11). It should
be noted that the function calc_attribute_value() performs
the computation of , as described in Section 4.2.
        </p>
        <p>Then, in stage 2, we compute the aggregate values
necessary for the computation of Getid-Ord. These include the
mean , the standard deviation , and the total number
of edges  for all temporal snapshots of the graph . This
information together with the graph  is broadcast to all
worker nodes in the cluster, so as to be available during the
computation of Getis-Ord.</p>
        <p>In stage 3, we compute the Getis-Ord index * per edge
 and temporal snapshot . Algorithm 2 provides the
pseudocode for the computation of Getis-Ord values. First,
using flatMap (line 4), we transform attrRDD into a new
RDD with key the edge  and value a triple:</p>
        <p>(),(), (2),(), (),()
that corresponds to another edge . This computation is
performed by function GetisOrdCalculations(), which takes
into account neighboring edges  to the current edge 
and computes their contribution to  in terms of weight,
squared weight and weight times attribute value, which are
the basic constituent parts for computing Getis-Ord. Notice
that this function takes as parameters the information about
temporal snapshots, the kernel’s bandwidth ℎ, as well the
broadcast data. Then, we perform hash partitioning based
on edge in order to accumulate all records that correspond
the same edge for the same timestamp (line 5), in order to
compute the aggregate values (line 6):
|| 
∑︁ ∑︁ (),()
=1 =1
|| 
∑︁ ∑︁ (2),()
=1 =1
|| 
∑︁ ∑︁ (),()
=1 =1
Thereafter, we compute the Getis-Ord value * per edge 
and per temporal snapshot  using function Gi_formula()
(line 7).</p>
        <p>Finally, in stage 4, the edges are ordered based on the
computed Getis-Ord value and only the top- edges are
returned. Obviously,  is a parameter that is set according
to the application requirements.
From the analysis of the exact algorithm we can derive
useful information about its complexity with respect to the
input parameters. We focus on the number of records that
need to be processed, as they influence the processing cost.</p>
        <p>In Algorithm 1, the size of dataRDD is ( ), where 
denotes the number of GPS records. Then, the algorithm
builds the attrRDD which contains one record per edge per
temporal snapshot. If || is used to denote the number of
edges of graph  (the road network) and  denotes the
number of temporal snapshots of , then attrRDD contains
(|| · ) records. As such, its size is linearly dependent
on the size of the road network (in edges) and the number
of temporal snapshots.</p>
        <p>In Algorithm 2, the attrRDD is given as input and
another RDD called GetisOrdRDD is built. For a given
temporal snapshot, this contains (||2) records because it
combines each edge with its neighboring edges with
nonzero congestion value (in worst case with all edges). When
other temporal snapshots are considered too, the number of
records increases exponentially. Distributing these records
and aggregating per edge is the main factor that afects the
processing cost of the exact algorithm.</p>
      </sec>
      <sec id="sec-4-3">
        <title>5.4. The Approximate Algorithm</title>
        <p>The previous algorithm computes the exact Getis-Ord
zscores, but it is computationally expensive because every
edge  with non-zero congestion value () has an
influence on the z-score of all other edges. However, edges at
high distance (in spatial or temporal terms) are expected to
have extremely small impact on the computed z-score.</p>
        <p>Motivated by this observation, we propose the use of an
approximate algorithm that takes as input a cut-of threshold
, which determines the subset of neighboring edges that
will be considered when computing the Getis-Ord values of
a given edge. In spatial terms,  corresponds to number of
hops between two edges. In temporal terms,  corresponds
to the number of (previous/next) temporal snapshots that
should be considered. In this way, we limit the number
of records that need to be processed and do not allow this
number to increase exponentially. In turn, this drastically
reduced number of records that need to be processed makes
the algorithm work much faster, at the expense of slightly
inaccurate results.</p>
        <p>As shown in our experimental study, the approximate
algorithm ofers an interesting trade-of between performance
and accuracy. Thus, we can compute hot spots with high
accuracy but in a much shorter execution time.</p>
        <p>Parameters
Size of the data set (x106 GPS records)
Duration ( ) of temporal snapshots (in hrs)
Number of partitions ( )
Cut-of threshold ( ) in hops</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>6. Experimental Evaluation</title>
      <p>We evaluate the performance of our approach for urban hot
spot analysis. We implemented both algorithms in PySpark,
using Apache Spark 3.1.1 Core API.</p>
      <sec id="sec-5-1">
        <title>6.1. Experimental Setup</title>
        <p>Platform. We deployed our code in Google Cloud Platform
(GCP). The platform supports the process of big data in
Apache Spark. The initiated cluster runs on Debian 10,
while we used the version Spark 3.1.1 in Hadoop 3.2.2. The
cluster consisted of 4 nodes in total, 1 Master and 3 Workers.
Each node has 2vCPU 13GB RAM, 500GB hard drive and
375GB SSD.</p>
        <p>Data Set. We employed a real data set of anonymized
GPS records collected by a fleet management provider. The
data was collected over a a period of five months from July
to November 2018, consisting of 368,977 individual vehicle
trajectories moving at the Metropolitan Area of Athens
in Greece (Fig. 3). This data set is 1.1GB in total size and
contains approximately 7.4M (million) GPS records. We
also create two subsets of size 5M and 2.5M records. After
pre-processing (Section 5.1), each record consists of the
ifelds: (vehID, trajID, , , , , length, speed, , ′). Even
though the specific data set is sparse and medium-sized, it
is still a real-world data set that allows the evaluation of our
approach.</p>
        <p>Metrics. Our main evaluation metric was the execution
time needed for each individual stage of the algorithm to be
completed. The execution time is measured in seconds.</p>
        <p>Evaluation Methodology. The eficiency of our
algorithm was assessed based on four parameters: (a) the size
of the data set, (b) the temporal window  , which
determines the number of temporal snapshots, (c) the number
of Apache Spark partitions  , and (d) the cut-of threshold
, used only by the approximate algorithm (for the exact
 = ∞), that defines the neighboring edges in the axes of
time and space that contribute in Getis-Ord z-score,
measured in hops. After diferent tests, we also set the kernel’s
bandwidth ℎ = 8 for the exact algorithm, while ℎ = 23 · 
for the approximate algorithm. Our experimental setup is
summarized in Table 1.</p>
      </sec>
      <sec id="sec-5-2">
        <title>6.2. Results for the Exact Algorithm</title>
        <p>Varying the size of the data set. In Fig. 4 (left), we
demonstrate the performance of the exact algorithm when
increasing the data set size. We measure the time of stage 3, which
is the most time-consuming part of the algorithm. As the
number of observations to be processed increases from 2.5M
to 7.4M, so does the total execution time of the algorithm
but not linearly. This is due to the fact that the larger data
set implies more temporal snapshots, hence more edges in
total, which all need to be processed for the computation of
the Getis-Ord value of an edge.</p>
        <p>Varying the duration  of temporal snapshots. The
temporal duration  of 24, 48 and 168 hours for a period
of five months leads to the generation of 153, 27 and 22
non-empty temporal snapshots respectively. Therefore, the
fewer the temporal partitions, the smaller the overall
execution time. In Fig. 4 (left) the temporal partitioning that
comes from  = 48 hrs time window is twice as eficient
in terms of execution time as the  = 24 hrs time window.
The  = 168 hrs time window is about seven times more
eficient than  = 24 hrs, indicating a linear relationship
between execution time and temporal duration  for the
data set of 2.5M and 5M records.</p>
        <p>Varying the number  of Spark partitions. Fig. 4
(right) shows the total execution time of the exact algorithm
and the time of stage 3 for diferent numbers of Spark
partitions. The first observation is that the execution time of
stage 3 practically determines the overall execution time.
Regarding the efect of using a higher number of
partitions, this seems to reduce execution time. Using more
partitions results in smaller subsets of data to be processed,
which require less processing time. However, the reduction
is not that big (about 15% when using 120 partitions for
 = 24hrs).</p>
      </sec>
      <sec id="sec-5-3">
        <title>6.3. Results for the Approximate Algorithm</title>
        <p>shows that our approximate algorithm that uses the cut-of
threshold can make the discovery of hot spots practically
applicable for extremely large data sets.</p>
        <p>However, the remaining question is how accurate are
the results of the approximate algorithm? Fig. 6 shows
the hot spots discovered by the approximate and the exact
algorithm. This demonstrates visually that the results of the
experiment for  = 12 are similar to those obtained when
applying the exact algorithm.</p>
        <p>To complement the visual evaluation, we also performed
a quantitative study. We obtained a ranked list of the
top100 edges in terms of trafic congestion for  = 12 and for
the exact algorithm. Then, we computed the Spearman’s
rank correlation for these two lists, in order to assess if the
same ordering is observed (i.e., if the ranking for  = 12
resembles the ranking obtained by the exact algorithm). If
the two rankings were identical, we would obtain a value of
1. In our case, we obtained a value of 0.82 for the Spearman’s
rank correlation. This indicates that the two lists are highly
correlated, or (put diferently) that the hot spots discovered
for  = 12 are very similar to the ones of discovered by
the exact algorithm. In the case of the results using  =
6, there is less sensitivity in the recognition of extreme
values, while in the case of  = 24 there is hypersensitivity
resulting in more edges being recognized as hot spots. Our
experiments indicate that using a cut-of threshold around
 = 12 provides a nice trade-of between performance and
accuracy.</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>7. Conclusions</title>
      <p>In this paper, we formulate the problem of hot-spot
discovery in road networks. We proposed an exact and an
approximate algorithm for hot spot discovery, which are
implemented as data-parallel algorithms on top of Apache
Spark. Our experiments using a real-life data set indicate
that the approximate algorithm provides a viable solution
that trades performance for accuracy. In the future, we will
apply our algorithms to other real-life data sets of larger
scale.</p>
    </sec>
    <sec id="sec-7">
      <title>Acknowledgements</title>
      <p>This research has received funding from the European
Union’s funded Project EMERALDS under grant agreement
no 101093051.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>E.</given-names>
            <surname>Eftelioglu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Tang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Shekhar</surname>
          </string-name>
          ,
          <article-title>Geographically robust hotspot detection: A summary of results</article-title>
          ,
          <source>in: Proc. of ICDMW'15</source>
          ,
          <year>2015</year>
          , pp.
          <fpage>1447</fpage>
          -
          <lpage>1456</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>E.</given-names>
            <surname>Eftelioglu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Shekhar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Oliver</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Zhou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. R.</given-names>
            <surname>Evans</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Xie</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. M.</given-names>
            <surname>Kang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Laubscher</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Farah</surname>
          </string-name>
          ,
          <article-title>Ringshaped hotspot detection: A summary of results</article-title>
          ,
          <source>in: Proc. of ICDM'14</source>
          ,
          <year>2014</year>
          , pp.
          <fpage>815</fpage>
          -
          <lpage>820</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>X.</given-names>
            <surname>Tang</surname>
          </string-name>
          , E. Eftelioglu,
          <string-name>
            <given-names>S.</given-names>
            <surname>Shekhar</surname>
          </string-name>
          ,
          <article-title>Elliptical hotspot detection: A summary of results</article-title>
          ,
          <source>in: Proc. of BigSpatial'15</source>
          ,
          <year>2015</year>
          , p.
          <fpage>15</fpage>
          -
          <lpage>24</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Xie</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Shekhar</surname>
          </string-name>
          ,
          <article-title>Significant DBSCAN towards statistically robust clustering</article-title>
          ,
          <source>in: Proc. of SSTD'19</source>
          ,
          <year>2019</year>
          , p.
          <fpage>31</fpage>
          -
          <lpage>40</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>P.</given-names>
            <surname>Nikitopoulos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.-I.</given-names>
            <surname>Paraskevopoulos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Doulkeridis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Pelekis</surname>
          </string-name>
          ,
          <string-name>
            <surname>Y. Theodoridis,</surname>
          </string-name>
          <article-title>BigCAB: Distributed hot spot analysis over big spatio-temporal data using Apache Spark</article-title>
          ,
          <source>in: Proc. of SIGSPATIAL'16</source>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>X.</given-names>
            <surname>Tang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Eftelioglu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Oliver</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Shekhar</surname>
          </string-name>
          ,
          <article-title>Significant linear hotspot discovery</article-title>
          ,
          <source>IEEE Trans. Big Data</source>
          <volume>3</volume>
          (
          <year>2017</year>
          )
          <fpage>140</fpage>
          -
          <lpage>153</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>X.</given-names>
            <surname>Tang</surname>
          </string-name>
          , E. Eftelioglu,
          <string-name>
            <given-names>S.</given-names>
            <surname>Shekhar</surname>
          </string-name>
          ,
          <article-title>Detecting isodistance hotspots on spatial networks: A summary of results</article-title>
          ,
          <source>in: Proc. of SSTD'17</source>
          ,
          <year>2017</year>
          , pp.
          <fpage>281</fpage>
          -
          <lpage>299</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>M.</given-names>
            <surname>Häsner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Junghans</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Sengstock</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Gertz</surname>
          </string-name>
          ,
          <article-title>Online hot spot prediction in road networks</article-title>
          ,
          <source>in: Proc. of BTW'11</source>
          ,
          <year>2011</year>
          , pp.
          <fpage>187</fpage>
          -
          <lpage>206</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>X.</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Han</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Lee</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Gonzalez</surname>
          </string-name>
          ,
          <article-title>Trafic density-based discovery of hot routes in road networks</article-title>
          ,
          <source>in: Proc. of SSTD'07</source>
          ,
          <year>2007</year>
          , pp.
          <fpage>441</fpage>
          -
          <lpage>459</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>D.</given-names>
            <surname>Sacharidis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Patroumpas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Terrovitis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Kantere</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Potamias</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Mouratidis</surname>
          </string-name>
          , T. Sellis,
          <article-title>On-line discovery of hot motion paths</article-title>
          ,
          <source>in: Proc. of EDBT'08</source>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>P.</given-names>
            <surname>Nikitopoulos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.-I.</given-names>
            <surname>Paraskevopoulos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Doulkeridis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Pelekis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Theodoridis</surname>
          </string-name>
          ,
          <article-title>Hot spot analysis over big trajectory data</article-title>
          ,
          <source>in: Proc. of Big Data'18</source>
          ,
          <year>2018</year>
          , pp.
          <fpage>761</fpage>
          -
          <lpage>770</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Qiao</surname>
          </string-name>
          , Y. Cheng, J.
          <string-name>
            <surname>Yang</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Liu</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          <string-name>
            <surname>Kato</surname>
          </string-name>
          ,
          <article-title>A mobility analytical framework for big mobile data in densely populated area</article-title>
          ,
          <source>IEEE Trans. on Veh. Techn</source>
          .
          <volume>66</volume>
          (
          <year>2017</year>
          )
          <fpage>1443</fpage>
          -
          <lpage>1455</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>J. K.</given-names>
            <surname>Ord</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Getis</surname>
          </string-name>
          ,
          <article-title>Local spatial autocorrelation statistics: Distributional issues and an application</article-title>
          ,
          <source>Geographical Analysis</source>
          <volume>27</volume>
          (
          <year>1995</year>
          )
          <fpage>286</fpage>
          -
          <lpage>306</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>G.</given-names>
            <surname>Makrai</surname>
          </string-name>
          ,
          <article-title>Eficient method for large-scale spatiotemporal hotspot analysis</article-title>
          ,
          <source>in: Proc. of SIGSPATIAL'16</source>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>C. Y.</given-names>
            <surname>Goh</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Dauwels</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Mitrovic</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. T.</given-names>
            <surname>Asif</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Oran</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Jaillet</surname>
          </string-name>
          ,
          <article-title>Online map-matching based on hidden markov model for real-time trafic sensing applications</article-title>
          ,
          <source>in: Proc. of ITSC'12</source>
          ,
          <year>2012</year>
          , pp.
          <fpage>776</fpage>
          -
          <lpage>781</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Lou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Zhang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Zheng</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Xie</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Huang</surname>
          </string-name>
          ,
          <article-title>Map-matching for low-sampling-rate GPS trajectories</article-title>
          ,
          <source>in: Proc. of SIGSPATIAL'09</source>
          ,
          <year>2009</year>
          , pp.
          <fpage>352</fpage>
          -
          <lpage>361</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>H.</given-names>
            <surname>Xiong</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Vahedian</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Zhou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Luo</surname>
          </string-name>
          ,
          <article-title>Predicting trafic congestion propagation patterns: A propagation graph approach</article-title>
          ,
          <source>in: Proc. of IWCTS@SIGSPATIAL'18</source>
          ,
          <year>2018</year>
          , pp.
          <fpage>60</fpage>
          -
          <lpage>69</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>B.</given-names>
            <surname>Wu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Huang</surname>
          </string-name>
          ,
          <article-title>A geographically and temporally weighted autoregressive model with application to housing prices</article-title>
          ,
          <source>Int. J. Geogr. Inf. Sci</source>
          .
          <volume>28</volume>
          (
          <year>2014</year>
          )
          <fpage>1186</fpage>
          -
          <lpage>1204</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>M.</given-names>
            <surname>Zaharia</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Chowdhury</surname>
          </string-name>
          ,
          <string-name>
            <surname>T. Das</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Dave</surname>
            , J. Ma,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>McCauly</surname>
            ,
            <given-names>M. J.</given-names>
          </string-name>
          <string-name>
            <surname>Franklin</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Shenker</surname>
            ,
            <given-names>I. Stoica</given-names>
          </string-name>
          ,
          <article-title>Resilient distributed datasets: A fault-tolerant abstraction for in-memory cluster computing</article-title>
          ,
          <source>in: Proc. of NSDI</source>
          , USENIX Association,
          <year>2012</year>
          , pp.
          <fpage>15</fpage>
          -
          <lpage>28</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>