[R] Fwd: Find maxima of a function

niharika singhal
2017-08-26T13:39:45Z

Hi,

Thanks for your mail, and time

It is not working for some arguments, when mean value is like >6.


case

mc0 <- c(0.08844446,0.1744455,0.1379778,0.1209769,0.1573065,0.
1134463,0.2074027)

rv <-UnivarMixingDistribution(Norm(486.4255, 53.24133),

                              Norm(664.0713, 3.674773),

                              Norm(669.0484, 4.101381),

                              Norm(677.1753, 4.869985),

                              Norm(683.2635, 7.288175),

                              Norm(727.6229, 37.64198),

                              Norm(819.2011, 57.06655),

                              mixCoeff=mc0/sum(mc0))

plot(rv, to.draw.arg="d")


I am getting 731.1345 from the code you have provide


It is part of a code, so it was difficult to write a reproducible code

I have tried to use optimr but it gives me the local maxima, now I am
struck with the problem of how to get the global maxima


On Sat, Aug 26, 2017 at 3:12 PM, Ismail SEZEN [via R] <
ml+s789695n4744993h60 at n4.nabble.com> wrote:

>
> > On 26 Aug 2017, at 14:18, Ulrik Stervbo <[hidden email]
> <http:///user/SendEmail.jtp?type=node&node=4744993&i=0>>
wrote:
> >
> > Please keep the list in cc.
> >
> > Sorry, it didn't work as expected. Maybe someone else have an
> appropriate
> > solution.
> >
> > Best,
> > Ulrik
> >
> > On Sa., 26. Aug. 2017, 12:57 niharika singhal <[hidden email]
> <http:///user/SendEmail.jtp?type=node&node=4744993&i=1>>
> > wrote:
> >
> >> Hi
> >>
> >> Thanks for you mail,
> >> I really appreciate your time on my problem
> >>
> >> I have posted this problem on
> >>
> >>
> >> https://stats.stackexchange.com/questions/299590/to-find-max
> ima-for-gaussian-mixture-model
> >>
> >>
> >> The plot I am getting using UnivarMixingDistribution from distr
package
> in
> >> R
> >>
> >> code is
> >>
> >> mc0= c(0.1241933, 0.6329082 <06329%20082>, 0.2428986
<02428%20986>)
> >> rv
> >>
<-UnivarMixingDistribution(Norm(506.8644,61.02859),Norm(672.8448,9.149168),Norm(
>
> >> 829.902,74.84682), mixCoeff=mc0/sum(mc0))
> >> plot(rv, to.draw.arg="d")
> >>
> >> I want output around 672 in first case and in 2nd case around 2.1
> >> according to the plot.
> >> your code will not work in both the scenario
> >>
> >> Regards
> >> Niharika Singhal
> >>
> >>
> >> On Sat, Aug 26, 2017 at 12:47 PM, Ulrik Stervbo <[hidden email]
> <http:///user/SendEmail.jtp?type=node&node=4744993&i=2>>
> >> wrote:
> >>
> >>> 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 <
> >>> [hidden email]
<http:///user/SendEmail.jtp?type=node&node=4744993&i=3>>
> 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]]
> >>>>
> >>>> ______________________________________________
> >>>> [hidden email]
> <http:///user/SendEmail.jtp?type=node&node=4744993&i=4>
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.
> >>>>
> >>>
> >>
>
> See the solution below if it helps. Also please, create a minimal
> reproduciple example as I did. So, we can investigate easily on your real
> problem.
>
> set.seed(1)
> m <- c(506.8644, 672.8448, 829.902)
> sig <- c(61.02859, 9.149168, 74.84682)
> x1 <- density(rnorm(500, mean = m, sd = sig))
> plot(x1)
>
> fun <- splinefun(x = x1$x, y = x1$y, method = "n")
> optimize(fun, interval = range(x1$x), maximum = TRUE)
>
>
> m <- c(2.15, 2.0, 2.9)
> sig <- c(0.1,0.1,0.1)
> x2 <- density(rnorm(500, mean = m, sd = sig))
> plot(x2)
>
> fun <- splinefun(x = x2$x, y = x2$y, method = "n")
> optimize(fun, interval = range(x2$x), maximum = TRUE)
>
> ______________________________________________
> [hidden email]
<http:///user/SendEmail.jtp?type=node&node=4744993&i=5>
> 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/posti
> ng-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
>
> ------------------------------
> If you reply to this email, your message will be added to the discussion
> below:
> http://r.789695.n4.nabble.com/Find-maxima-of-a-function-OR-o
> ptimization-of-a-Function-tp4744989p4744993.html
> To unsubscribe from Find maxima of a function OR optimization of a
> Function, click here
>
<http://r.789695.n4.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=4744989&code=bmloYXJpa2FzaW5naGFsMTk5MEBnbWFpbC5jb218NDc0NDk4OXwtNDI2MzAyOTM1>
> .
> NAML
>
<http://r.789695.n4.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>