[R] Find maxima of a function

Ulrik Stervbo ulrik.stervbo at gmail.com
Sat Aug 26 12:47:18 CEST 2017


Hi,

I once found this somewhere on stackoverflow:

values <- rnorm(20, mean = c(2.15,2.0,2.9), sd = c(0.1,0.1,0.1))

v_dens <- density(values)
v_dens_y <- v_dens$y

r <- rle(v_dens_y)
# These functions ignore the extremes if they are the first or last point
maxima_index <- which(rep(x = diff(sign(diff(c(-Inf, r$values, -Inf)))) ==
-2,  times = r$lengths))
minima_index <- which(rep(x = diff(sign(diff(c(-Inf, r$values, -Inf)))) ==
2,  times = r$lengths))

plot(v_dens_y)

HTH
Ulrik


On Sat, 26 Aug 2017 at 11:49 niharika singhal <niharikasinghal1990 at gmail.com>
wrote:

> I have a Gaussian mixture model with some parameters
>
> mean=(506.8644,672.8448,829.902)
>
> sigma=(61.02859,9.149168,74.84682)
>
> c=(0.1241933, 0.6329082 <06329%20082>, 0.2428986 <02428%20986>)
>
> And the plot look something like below.[image: enter image description
> here]
> <https://i.stack.imgur.com/4uUQ9.png>
>
> Also, if I change my parameters to
>
> mean=(2.15,2.0,2.9)
>
> sigma=(0.1,0.1,0.1)
>
> c=(1/3,1/3,1/3)
>
> Then plot would change to[image: enter image description here]
> <https://i.stack.imgur.com/kESYX.png>
>
> Is there any way to find the maxima. I have tried Newton's method but it
> gave me the wrong output.
>
> Like in general some common solution, which would work on all the cases, is
> needed.Can someone suggest me how can I achieve this
>
> Thanks in advance
>
> Niharika Singhal
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list