简体   繁体   中英

Creation of correlated marks. e.g. point sizes varying with inter-point distances

I recently dabbled a bit into point pattern analysis and wonder if there is any standard practice to create mark correlation structures varying with the inter-point distance of point locations. Clearly, I understand how to simulate independent marks, as it is frequently mentioned eg

library(spatstat)
data(finpines) 
set.seed(0907)
marks(finpines) <- rnorm(npoints(finpines), 30, 5)
plot(finpines)

enter image description here

More generally speaking, assume we have a fair amount of points, say n=100 with coordinates x and y in an arbitrary observation window (eg rectangle). Every point carries a characteristic, for example the size of the point as a continuous variable. Also, we can examine every pairwise distance between the points. Is there a way to introduce correlation structure between the marks (of pairs of points) which depends on the inter-point distance between the point locations?


Furthermore, I am aware of the existence of mark analysing techniques like

fin <- markcorr(finpines, correction = "best")
plot(fin)

When it comes to interpretation my lack of knowledge forces me to trust my colleagues (non-scientists). Besides, I looked at several references given in the documentation of the spatstat functions; especially, I had a look on " Statistical Analysis and Modelling of Spatial Point Patterns ", p. 347, where inhibition and mutual stimulation as deviations from 1 (independence of marks) of the normalised mark correlation function are explained.

I think the best bet is to use a random field model conditional on your locations. Unfortunately the package RandomFields is not on CRAN at the moment, but hopefully it will return soon. I think it may be possible to install an old version of RandomFields from the archives if you want to get going immediately.

Thus, the procedure is:

  1. Use spatstat to generate the random locations you like.
  2. Extract the coordinates (either coords() or as.data.frame.ppp() ).
  3. Define a model in RandomFields (eg RMexp() ).
  4. Simulate the model on the given coordinates ( RFsimulate() ).
  5. Convert back to a marked point pattern in spatstat (either ppp() or as.ppp() ).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM