[R-sig-Geo] Estimating multiStrauss interaction radii

Rolf Turner r.turner at auckland.ac.nz
Fri Aug 17 05:39:10 CEST 2012


On 17/08/12 14:11, "José M. Blanco Moreno" wrote:

     <SNIP>
>> (c) Gamma parameters greater than 1 are OK for interactions between 
>> points of
>> different type.  For points of the same type they are not just 
>> undesirable, they
>> are verboten.  The model is undefined if any gamma_{ii} > 1.
> So if I understand it properly, I can discard any model fitting any 
> gamma_{ii} > 1. However, that seems to be happening to me/my data 
> quite often. If it is not asking too much, should I take it as an 
> indication of what? Recalcitrant data, improperly chosen model, any of 
> the previous?
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.
>
>
>>
>> (d) I have no idea how to handle the problem of getting two local maxima
>> which are widely separated (and of similar heights, presumably).
> Yes, I did not make the point clear enough. Since they are about the 
> same height, changing the grid a bit can indicate one or the other, 
> depending on "alignment". But I wasn't aware (or I did not remember) 
> that they have to accour at interpoint distances (likely that I 
> haven't read enough), so I will check again.

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>
> Just after sending the e-mail I experimented with optim, but not too 
> much. Anyway, the "preliminary results" were simply discouraging, but 
> yes, I would like to know how you did, because my force brute approach 
> using optim did not work, plainly, it sucks.

     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



More information about the R-sig-Geo mailing list