Skip to content
Prev 15896 / 29559 Next

Estimating multiStrauss interaction radii

On 17/08/12 14:11, "Jos? M. Blanco Moreno" wrote:
<SNIP>
If you get a gamma_{ii} estimate bigger than 1, then this is basically 
saying that
gamma_{ii} is *equal* to 1, i.e. there is no interaction amongst points 
of type i.

If there is indeed no interaction then the estimate of gamma_{ii} will 
be bigger
than 1 as often as not --- or even oftener!  E.g.:

set.seed(42)
X <- rpoispp(200)
marks(X) <- factor(sample(c("a","b"),npoints(X),TRUE))
M <- matrix(0.05,2,2)
FIT <- ppm(X,inter=MultiStrauss(radii=M))

You get gamma_{11} = 1.2386.  Which doesn't really make sense.  (You get
gamma_{22} = 0.8116, which is OK.

In such cases you should "project" the fitted model onto the valid 
parameter space:

     FIT_proj <- ppm(X,inter=MultiStrauss(radii=M),project=TRUE)

The log pseudolikelihood for FIT_proj is a wee bit smaller than the 
(essentially meaningless)
log pseudolikelihood for FIT.  (This will always happen.)

I guess that in your profiling you should set project=TRUE in your calls 
to ppm().

But I'm actually now a bit puzzled by the results that I get from using 
project=TRUE
in the forgoing artificial example.  I need to do some more checking 
into this.  I'll
get back to you on this issue ASAP.
The crucial quantity here is "s_{ij}(X)" = the number of r-close pairs 
in the pattern X
whose members are of type i and type j respectively.  As you change r, 
the values of
s_{ij}(X) will tend to change --- as r increases there will be more 
r-close pairs.  But
the number of r-close pairs can increase only when r "crosses" a 
boundary equal to
an interpoint distance.  And if none of the s_{ij}(X) change, the model 
fit doesn't
change.

     <SNIP>
I didn't try using the optim() approach on MultiStrauss models; I 
*think* I tried
     it on Geyer models, optimising over the interaction radius and the 
saturation
     constant.  .... just went away and searched for what I did, and I 
see in my notes
     the comment "Doesn't work worth a tinker's dam!"

     Now thinking on it a bit more, I have *vague* recollections that I 
tried using
     method="L-BFGS-B" and had a *bit* more success, but it wasn't 
really very
     good.  I can't find any trace of my efforts in this regard so I 
think I must have
     given it up as a bad job and scrubbed any code that I wrote.

     So basically you're right.  This idea sucks, and I don't think it's 
worth pursuing
     it any further.

         cheers,

             Rolf