C++ libraries for point processes

All programs on these pages were made by Linda Stougaard Nielsen for personal use. Use at own risk - no guarantees given!
Direct link to directory containing all programs described below
Brief introduction to point processes


C++ library for Strauss/Geyer point processes in 1D/2D/3D product sets

The file is a C++ library containing classes for defining point processes of type Strauss or Geyer (can be extended) in a product set of 1, 2 or 3 dimensions. The number of points can be fixed or random.
The library uses a function to generate a Poisson distributed stochastic variable which can be found in:

Some examples of how to use the library:

Example 1: Basics about how to define, make, transform and save (to file) a Strauss process with random or fixed number of points in 2 or 3 dimensional unit cube This program generates data sets such as:

  • 2D Strauss, random number of points ( = 300, = 0.1, R = 0.05): data1
  • Same realization, transformed (1-dimensional exponential transformation of first coordinates with theta = 1.5): transfdata1
  • 2D Strauss, fixed number of points (n = 100, = 0.1, R = 0.05): data2
  • 3D Strauss, fixed number of points (n = 50, = 0.1, R = 0.05): data1_3D

Example 2: How to read data from file and estimate theta0hat cf. Jensen & Nielsen (2000):

Example 3:

How to estimate E,,Rn(X) and E,,Rs(X;R) in homogeneous Strauss:

Extension: Edge-correction


Full MLE analysis of the cell data set

The cell data set was first introduced in Nielsen (2000). Here the data was analysed using the estimator of the transformation parameter based on the Poisson assumption, i.e. disregarding the interaction. In Nielsen & Jensen (2001) we argue that this is a good estimator.
In the paper Nielsen & Jensen (2001) and the accompanying technical report Nielsen (2001) the analysis under the full model is described for the cell data. Below the relevant C++ programs are given. Notice that as a consequense of the way the algorithm is constructed, the partial MLE's (using the Poisson based estimator for the transformation parameter) are also calculated. We refer to Nielsen (2001) for detailed explanations.

Download the technical report Nielsen (2001).

Programs (the five steps are referred to in Nielsen (2001)): Step 1 | Step 2 | Step 3 | Step 4 | Step 5
Included library and other programs: ppunfix5.h | poisson.cpp | solve.cpp | matrix.cpp | inverse3X3.cpp


C++ library for 1 dimensional Strauss on circle

In Nielsen & Jensen (2001, Section 7), various simulation experiments were performed for the Strauss point process living on the unit circle with distance relation on the circle. A library for this point process is found in cirkelstrauss.h (includes the program expsolve.cpp).

Download the paper Nielsen & Jensen (2001).

The plots in Figure 8 and 9 are quite easy to compute. They are based on realizations from the model. For each realization y, the values t(y)/n(y) and theta0hat (see solve.cpp) are computed. The plots show the sample mean and standard deviation of t(y)/n(y) and theta0hat.

The plot in Figure 10 have been computed using the program: scatter.cpp.
Notice that the time and code consuming part of this program is to find the MLE based on the full model.



List of publications of Linda Stougaard Nielsen
C. J. Geyer (1999)
Likelihood inference for spatial point processes.
In O. E. Barndorff-Nielsen, W. S. Kendall and M. N. M. Lieshout (editors),
Stochastic Geometry: Likelihood and Computation, chapter 3, pages 79-140. Chapman and Hall/CRC.


This page was last modified on September 28th 2001