Quantcast

Finding local maxima on a loess surface

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Finding local maxima on a loess surface

Diego Rojas
If a run a LOESS model and then produce a smoothed surface: Is there any
way to determine the coordinates of the local maxima on the surface?

        [[alternative HTML version deleted]]

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: Finding local maxima on a loess surface

David Winsemius

On May 3, 2012, at 6:09 PM, Diego Rojas wrote:

> If a run a LOESS model and then produce a smoothed surface: Is there  
> any
> way to determine the coordinates of the local maxima on the surface?

?predict    # it has a loess method.
>
> [[alternative HTML version deleted]]

--

David Winsemius, MD
Heritage Laboratories
West Hartford, CT

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: Finding local maxima on a loess surface

Diego Rojas
Thanks, I know about it but i wat to find several local maxima, so in other
words I need a way to identify the places in the surface where both slopes
are equal to 0 and the second derivative is negative.


On Fri, May 4, 2012 at 9:28 AM, David Winsemius <[hidden email]>wrote:

>
> On May 3, 2012, at 6:09 PM, Diego Rojas wrote:
>
>  If a run a LOESS model and then produce a smoothed surface: Is there any
>> way to determine the coordinates of the local maxima on the surface?
>>
>
> ?predict    # it has a loess method.
>
>>
>>        [[alternative HTML version deleted]]
>>
>
> --
>
> David Winsemius, MD
> Heritage Laboratories
> West Hartford, CT
>
>

        [[alternative HTML version deleted]]

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: Finding local maxima on a loess surface

David Winsemius

On May 4, 2012, at 3:00 PM, Diego Rojas wrote:

> Thanks, I know about it but i wat to find several local maxima, so  
> in other words I need a way to identify the places in the surface  
> where both slopes are equal to 0 and the second derivative is  
> negative.

There is no way that I know that will produce a mathematical function  
that would support symbolic manipulations of that sort for the results  
obtainable from a loess-object. I was expecting that you would be  
approaching this numerically and doing evaluations on a grid. Testing  
for equality to 0 is not a good practice if following that route. Sign  
reversal would be a more sensible criterion. ( And you _would_ be  
using predict.loess(). )

Still no data example or code offered, so not pursuing further efforts  
at illustration.

>
> On Fri, May 4, 2012 at 9:28 AM, David Winsemius <[hidden email]
> > wrote:
>
> On May 3, 2012, at 6:09 PM, Diego Rojas wrote:
>
> If a run a LOESS model and then produce a smoothed surface: Is there  
> any
> way to determine the coordinates of the local maxima on the surface?
>
> ?predict    # it has a loess method.
>
>        [[alternative HTML version deleted]]
>

David Winsemius, MD
West Hartford, CT

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Fwd: Finding local maxima on a loess surface

Diego Rojas
---------- Forwarded message ----------
From: Diego Rojas <[hidden email]>
Date: Wed, May 9, 2012 at 3:05 PM
Subject: Re: [R] Finding local maxima on a loess surface
To: David Winsemius <[hidden email]>


Thanks again, would you please try to ilustrate further your point with
this example code. How would you find the coordinates for the maxima on the
surface. Consider that in the surface I'm dealing with there are at least
35 maxima.

require(MASS)
topo.lo <- loess(z ~ x * y, topo, degree = 1, span = 0.25,
                 normalize = FALSE)
topo.mar <- list(x = seq(0, 6.5, 0.1), y = seq(0, 6.5, 0.1))
new.dat <- expand.grid(topo.mar)
topo.pred <- predict(topo.lo, new.dat)
## draw the contour map based on loess predictions

library(rgl)

persp3d(topo.mar$x, topo.mar$y, topo.pred, shade=0.5, col="blue")

Thanks fot your help

On Sat, May 5, 2012 at 9:34 AM, David Winsemius <[hidden email]>wrote:

>
> On May 4, 2012, at 3:00 PM, Diego Rojas wrote:
>
> Thanks, I know about it but i wat to find several local maxima, so in
>> other words I need a way to identify the places in the surface where both
>> slopes are equal to 0 and the second derivative is negative.
>>
>
> There is no way that I know that will produce a mathematical function that
> would support symbolic manipulations of that sort for the results
> obtainable from a loess-object. I was expecting that you would be
> approaching this numerically and doing evaluations on a grid. Testing for
> equality to 0 is not a good practice if following that route. Sign reversal
> would be a more sensible criterion. ( And you _would_ be using
> predict.loess(). )
>
> Still no data example or code offered, so not pursuing further efforts at
> illustration.
>
>
>
>> On Fri, May 4, 2012 at 9:28 AM, David Winsemius <[hidden email]>
>> wrote:
>>
>> On May 3, 2012, at 6:09 PM, Diego Rojas wrote:
>>
>> If a run a LOESS model and then produce a smoothed surface: Is there any
>> way to determine the coordinates of the local maxima on the surface?
>>
>> ?predict    # it has a loess method.
>>
>>       [[alternative HTML version deleted]]
>>
>>
> David Winsemius, MD
> West Hartford, CT
>
>

        [[alternative HTML version deleted]]

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: Fwd: Finding local maxima on a loess surface

David Winsemius

On May 10, 2012, at 12:10 AM, Diego Rojas wrote:

> ---------- Forwarded message ----------
> From: Diego Rojas <[hidden email]>
> Date: Wed, May 9, 2012 at 3:05 PM
> Subject: Re: [R] Finding local maxima on a loess surface
> To: David Winsemius <[hidden email]>
>
>
> Thanks again, would you please try to ilustrate further your point  
> with
> this example code. How would you find the coordinates for the maxima  
> on the
> surface. Consider that in the surface I'm dealing with there are at  
> least
> 35 maxima.
>
> require(MASS)
> topo.lo <- loess(z ~ x * y, topo, degree = 1, span = 0.25,
>                 normalize = FALSE)
> topo.mar <- list(x = seq(0, 6.5, 0.1), y = seq(0, 6.5, 0.1))
> new.dat <- expand.grid(topo.mar)
> topo.pred <- predict(topo.lo, new.dat)
> ## draw the contour map based on loess predictions
>
> library(rgl)
>
> persp3d(topo.mar$x, topo.mar$y, topo.pred, shade=0.5, col="blue")

hasmax <- function(mtx, x, y)  if(  (mtx[x,y] > mtx[x,y-1]) &
  (mtx[x,y] > mtx[x,y+1]) &
  (mtx[x,y] > mtx[x-1,y]) &
  (mtx[x,y] > mtx[x+1,y]) ) {return(TRUE ) } else {return(FALSE)}

for(x in 3:(dim(topo.pred)[1] -4)) {
  for(y in 3:(dim(topo.pred)[2]-4) )  {
  if( hasmax(topo.pred, x , y) ){print(c(x,y))}  }}
#
[1] 40  7

Note: that topo.pred has a border of two and three row/columns of NA's  
that made this very annoying to debug. A proper function would  
probably need to pre-qualify the index ranges.


I tried a sign change approach but generalizing to 2d created  
conceptual difficulties I could not resolve, so I just checked in both  
directions for the local point being greater than its neighbors.  You  
obviously could do something other than printing coordinates at a  
maximum

--
David.

>
> Thanks fot your help
>
> On Sat, May 5, 2012 at 9:34 AM, David Winsemius <[hidden email]
> >wrote:
>
>>
>> On May 4, 2012, at 3:00 PM, Diego Rojas wrote:
>>
>> Thanks, I know about it but i wat to find several local maxima, so in
>>> other words I need a way to identify the places in the surface  
>>> where both
>>> slopes are equal to 0 and the second derivative is negative.
>>>
>>
>> There is no way that I know that will produce a mathematical  
>> function that
>> would support symbolic manipulations of that sort for the results
>> obtainable from a loess-object. I was expecting that you would be
>> approaching this numerically and doing evaluations on a grid.  
>> Testing for
>> equality to 0 is not a good practice if following that route. Sign  
>> reversal
>> would be a more sensible criterion. ( And you _would_ be using
>> predict.loess(). )
>>
>> Still no data example or code offered, so not pursuing further  
>> efforts at
>> illustration.
>>
>>
>>
>>> On Fri, May 4, 2012 at 9:28 AM, David Winsemius <[hidden email]
>>> >
>>> wrote:
>>>
>>> On May 3, 2012, at 6:09 PM, Diego Rojas wrote:
>>>
>>> If a run a LOESS model and then produce a smoothed surface: Is  
>>> there any
>>> way to determine the coordinates of the local maxima on the surface?
>>>
>>> ?predict    # it has a loess method.
>


David Winsemius, MD
West Hartford, CT

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Loading...