Point Patterns of New Brunswick Forest Fires

Point patterns created from yearly records, provided by the New Brunswick Department of Natural Resources, of all fires falling under their jurisdiction for the years 1987 to 2003 inclusive (with the year 1988 omitted until further notice).

datasets, spatial

The coordinates of the fire locations were provided in terms of latitude and longitude, to the nearest minute of arc. These were converted to New Brunswick stereographic projection coordinates (Thomson, Mephan and Steeves, 1977) which was the coordinate system in which the map of New Brunswick --- which constitutes the observation window for the pattern --- was obtained. The conversion was done using a C program kindly provided by Jonathan Beaudoin of the Department of Geodesy and Geomatics, University of New Brunswick.

Finally the data and window were rescaled since the use of the New Brunswick stereographic projection coordinate system resulted in having to deal with coordinates which are expressed as very large integers with a bewildering number of digits. Amongst other things, these huge numbers tended to create very untidy axis labels on graphs. The width of the bounding box of the window was made equal to 1000 units. In addition the lower left hand corner of this bounding box was shifted to the origin. The height of the bounding box was changed proportionately, resulting in a value of approximately 959.

In the final dataset nbfires, one coordinate unit is equivalent to 0.403716 kilometres. To convert the data to kilometres, use rescale(nbfires).

The window for the fire patterns comprises 6 polygonal components, consisting of mainland New Brunswick and the 5 largest islands. Some lakes which should form holes in the mainland component are currently missing; this problem may be remedied in future releases. The window was formed by ‘simplifying’ the map that was originally obtained. The simplification consisted in reducing (using an interactive visual technique) the number of polygon edges in each component. For instance the number of edges in the mainland component was reduced from over 138,000 to 500.

For some purposes it is probably better to use a discretized (mask type) window. See Examples.

Because of the coarseness of the coordinates of the original data (1 minute of longitude is approximately 1 kilometer at the latitude of New Brunswick), data entry errors, and the simplification of the observation window, many of the original fire locations appeared to be outside of the window. This problem was addressed by shifting the location of the ‘outsider’ points slightly, or deleting them, as seemed appropriate.

Note that the data contain duplicated points (two points at the same location). To determine which points are duplicates, use duplicated.ppp. To remove the duplication, use unique.ppp.

The columns of the data frame comprising the marks of nbfires are:


This a factor with levels 1987, 1989, …, 2002, 2003. Note that 1988 is not present in the levels.


A factor with levels forest, grass, dump, and other.


The discovery date of the fire, which is the nearest possible surrogate for the starting time of the fire. This is an object of class POSIXct and gives the starting discovery time of the fire to the nearest minute.


The discovery date and time of the fire, expressed in ‘Julian days’, i.e. as a decimal fraction representing the number of days since the beginning of the year (midnight 31 December).


The date on which the fire was judged to be ‘out’. This is an object of class POSIXct and gives the ‘out’ time of the fire to the nearest minute.


The date and time at which the fire was judged to be ‘out’, expressed in Julian days.


General cause of the fire. This is a factor with levels unknown, rrds (railroads), misc (miscellaneous), ltning (lightning), for.ind (forest industry), incend (incendiary), rec (recreation), resid (resident), and oth.ind (other industry). Causes unknown, ltning, and incend are supposedly designated as ‘final’ by the New Brunswick Department of Natural Resources, meaning (it seems) “that's all there is to it”. Other causes are apparently intended to be refined by being combined with “source of ignition”. However cross-tabulating cause with ign.src --- see below --- reveals that very often these three ‘causes’ are associated with an “ignition source” as well.


Source of ignition, a factor with levels cigs (cigarette/match/pipe/ashes), burn.no.perm (burning without a permit), burn.w.perm (burning with a permit), presc.burn (prescribed burn), wood.spark (wood spark), mach.spark (machine spark), campfire, chainsaw, machinery, veh.acc (vehicle accident), rail.acc (railroad accident), wheelbox (wheelbox on railcars), hot.flakes (hot flakes off railcar wheels), dump.fire (fire escaping from a dump), ashes (ashes, briquettes, burning garbage, etc.)


The final size of the fire (area burned) in hectares, to the nearest 10th hectare.

Note that due to data entry errors some of the “out dates” and “out times” in the original data sets were actually earlier than the corresponding “discovery dates” and “discover times”. In such cases all corresponding entries of the marks data frame (i.e. dis.date, dis.julian, out.date, and out.julian) were set equal to NA. Also, some of the dates and times were missing (equal to NA) in the original data sets.

The ‘ignition source’ data were given as integer codes in the original data sets. The code book that I obtained gave interpretations for codes 1, 2, …, 15. However the actually also contained codes of 0, 16, 17, 18, and in one instance 44. These may simply be data entry errors. These uninterpretable values were assigned the level unknown. Many of the years had most, or sometimes all, of the ignition source codes equal to 0 (hence turning out as unknown, and many of the years had many missing values as well. These were also assigned the level unknown. Of the 7108 fires in nbfires, 4354 had an unknown ignition source. This variable is hence unlikely to be very useful.

There are also anomalies between cause and ign.src, e.g. cause being unknown but ign.src being cigs, burn.no.perm, mach.spark, hot.flakes, dump.fire or ashes. Particularly worrisome is the fact that the cause ltning (!!!) is associate with sources of ignition cigs, burn.w.perm, presc.burn, and wood.spark.


Executing data(nbfires) gives access to four objects: nbfires, nbw.rect, nbw.seg and nbfires.extra.

The object nbfires is a marked point pattern (an object of class "ppp") consisting of all of the fires in the years 1987 to 2003 inclusive, with the omission of 1988. The marks consist of a data frame of auxiliary information about the fires; see Details. Patterns for individual years can be extracted using the function split.ppp(). (See Examples.)

The object nbw.rect is a rectangular window which covers central New Brunswick. It is provided for use in illustrative and ‘practice’ calculations inasmuch as the use of a rectangular window simplifies some computations considerably.

The object nbw.seg is a line segment pattern (object of class "psp") consisting of all the boundary segments of the polygonal window of New Brunswick. The marks of this pattern are categorical values which classify the segments into three types: "border" (land border), "coast" (coast of the mainland) and "island" (coast of the 5 islands).

For conformity with other datasets, nbfires.extra is a list containing all the supplementary data. It contains copies of nbw.rect and nbw.seg.


Turner, Rolf. Point patterns of forest fire locations. Environmental and Ecological Statistics 16 (2009) 197 -- 223, doi:10.1007/s10651-007-0085-1.

Thomson, D. B., Mephan, M. P., and Steeves, R. R. (1977) The stereographic double projection. Technical Report 46, University of New Brunswick, Fredericton, N. B., Canada URL: gge.unb.ca/Pubs/Pubs.html.

  • nbfires
  • nbw.rect
  • nbw.seg
  • nbfires.extra
  if(require(spatstat)) {
# Get the year 2000 data.
X <- split(nbfires,"year")
Y.00 <- X[["2000"]]
# Plot all of the year 2000 data, marked by fire type.
# Cut back to forest and grass fires.
Y.00 <- Y.00[marks(Y.00)$fire.type %in% c("forest","grass")]
# Plot the year 2000 forest and grass fires marked by fire duration time.
stt  <- marks(Y.00)$dis.julian
fin  <- marks(Y.00)$out.julian
marks(Y.00) <- cbind(marks(Y.00),dur=fin-stt)
# Look at just the rectangular subwindow (superimposed on the entire window).
nbw.mask <- as.mask(Window(nbfires), dimyx=500)
plot(nbw.mask, col=c("green", "white"))
plot(Window(nbfires), border="red", add=TRUE)
# Look at the K function for the year 2000 forest and grass fires.
K.00 <- Kest(Y.00)
# }
Documentation reproduced from package spatstat.data, version 1.0-1, License: GPL (>= 2)

Community examples

Looks like there are no examples yet.