I am very glad you started this package, thank you @edit318 et al! I stumbled upon some findings when tinkering.
Code error: using the first entry of duplicated(), i.e. duplicated(...)[1] will only capture duplicated points when one of the n-plicates is across xyt[1,]. Using any() solves this.
Methodological: Although it is space-time coincidence which breaks STIKhat()(cf Gabriel & Diggle 2009), it would be useful to warn of the weaker version of space-time points being spatially coincident. This is of relevance for users computing the spatial intensity in other packages for mhat in the lambda = ... argument of your function. Furthermore as your STIKhat.Rd example uses Berman & Diggle's method to find the bandwidth (splancs::kernel2d), it is likely a novice (like myself) will follow suit (as I did) and get an incorrect bandwidth h back from that third-party function to use in yours---I had problems with spatially-coincident data with kernel2d() which causes the MSE(h) profile to lose its convex shape, leading to a minimal h that matches the smallest h-step (making the h step smaller just makes the minimal h reduce too, so h tends to zero).
Thanks for your suggestion about the code, I have implement this change in the GitHub repository. We will reply you methodological question as soon as possible.
I am very glad you started this package, thank you @edit318 et al! I stumbled upon some findings when tinkering.
Code error: using the first entry of
duplicated()
, i.e.duplicated(...)[1]
will only capture duplicated points when one of the n-plicates is across xyt[1,]. Usingany()
solves this.Methodological: Although it is space-time coincidence which breaks
STIKhat()
(cf Gabriel & Diggle 2009), it would be useful to warn of the weaker version of space-time points being spatially coincident. This is of relevance for users computing the spatial intensity in other packages formhat
in thelambda = ...
argument of your function. Furthermore as yourSTIKhat.Rd
example uses Berman & Diggle's method to find the bandwidth (splancs::kernel2d
), it is likely a novice (like myself) will follow suit (as I did) and get an incorrect bandwidthh
back from that third-party function to use in yours---I had problems with spatially-coincident data withkernel2d()
which causes the MSE(h) profile to lose its convex shape, leading to a minimal h that matches the smallest h-step (making the h step smaller just makes the minimal h reduce too, so h tends to zero).