Hi Rolf, I think the MLE should be 1.71, no? And yes, I am aware of the maximum=TRUE argument. I still feel something is wrong here. Thanks! On Wed, Nov 18, 2015 at 6:23 PM, Rolf Turner <r.turner at auckland.ac.nz> wrote:> On 19/11/15 11:31, C W wrote: > >> Dear R list, >> >> I am trying to find the MLE of the likelihood function. I will plot the >> log-likelihood to check my answer. >> >> Here's my R code: >> >> xvec <- c(2,5,3,7,-3,-2,0) >> >> fn <- function(theta){ >> >> sum(0.5 * (xvec - rep(theta, 7)) ^ 2 / 1 + 0.5 * log(1)) >> >> } >> >> gn <- Vectorize(fn) >> >> curve(gn, -5, 20) >> >> optimize(gn, c(-5, 20)) >> >> $minimum >> >> [1] 1.714286 >> >> $objective >> >> [1] 39.71429 >> >> >> The MLE using optimize() is 1.71, but what curve() gives me is the >> absolute >> minimum. >> >> I think 1.71 is the right answer, but why does the graph showing it's the >> minimum? What is going on here? >> > > Your graph shows that there is indeed a *minimum* at 1.71. And optimise() > is correctly finding that minimum. > > If you want optimise() to find the maximum, set maximum=TRUE. In which > case it will return "20" (or something very close to 20). > > Your function fn() appears not to be the log likelihood that you had in > mind. Perhaps you the negative of fn()??? > > cheers, > > Rolf Turner > > -- > Technical Editor ANZJS > Department of Statistics > University of Auckland > Phone: +64-9-373-7599 ext. 88276 >[[alternative HTML version deleted]]
peter dalgaard
2015-Nov-19 15:29 UTC
[R] [FORGED] How to find the likelihood, MLE and plot it?
On 19 Nov 2015, at 16:17 , C W <tmrsg11 at gmail.com> wrote:> Hi Rolf, > > I think the MLE should be 1.71, no? And yes, I am aware of the > maximum=TRUE argument. I still feel something is wrong here. >Just read more carefully what Rolf said: Your fn is MINUS the log-likelihood. So the graph is upside-down. -pd> Thanks! > > On Wed, Nov 18, 2015 at 6:23 PM, Rolf Turner <r.turner at auckland.ac.nz> > wrote: > >> On 19/11/15 11:31, C W wrote: >> >>> Dear R list, >>> >>> I am trying to find the MLE of the likelihood function. I will plot the >>> log-likelihood to check my answer. >>> >>> Here's my R code: >>> >>> xvec <- c(2,5,3,7,-3,-2,0) >>> >>> fn <- function(theta){ >>> >>> sum(0.5 * (xvec - rep(theta, 7)) ^ 2 / 1 + 0.5 * log(1)) >>> >>> } >>> >>> gn <- Vectorize(fn) >>> >>> curve(gn, -5, 20) >>> >>> optimize(gn, c(-5, 20)) >>> >>> $minimum >>> >>> [1] 1.714286 >>> >>> $objective >>> >>> [1] 39.71429 >>> >>> >>> The MLE using optimize() is 1.71, but what curve() gives me is the >>> absolute >>> minimum. >>> >>> I think 1.71 is the right answer, but why does the graph showing it's the >>> minimum? What is going on here? >>> >> >> Your graph shows that there is indeed a *minimum* at 1.71. And optimise() >> is correctly finding that minimum. >> >> If you want optimise() to find the maximum, set maximum=TRUE. In which >> case it will return "20" (or something very close to 20). >> >> Your function fn() appears not to be the log likelihood that you had in >> mind. Perhaps you the negative of fn()??? >> >> cheers, >> >> Rolf Turner >> >> -- >> Technical Editor ANZJS >> Department of Statistics >> University of Auckland >> Phone: +64-9-373-7599 ext. 88276 >> > > [[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.-- Peter Dalgaard, Professor, Center for Statistics, Copenhagen Business School Solbjerg Plads 3, 2000 Frederiksberg, Denmark Phone: (+45)38153501 Office: A 4.23 Email: pd.mes at cbs.dk Priv: PDalgd at gmail.com
ah. Let me fix that and get back to you. On a side note, why can't I put fn inside curve(), why do I have to use Vectorize()? Here's the code and the message:> curve(fn, -5, 20)Error in curve(fn, -5, 20) : 'expr' did not evaluate to an object of length 'n' On Thu, Nov 19, 2015 at 10:29 AM, peter dalgaard <pdalgd at gmail.com> wrote:> > On 19 Nov 2015, at 16:17 , C W <tmrsg11 at gmail.com> wrote: > > > Hi Rolf, > > > > I think the MLE should be 1.71, no? And yes, I am aware of the > > maximum=TRUE argument. I still feel something is wrong here. > > > > Just read more carefully what Rolf said: Your fn is MINUS the > log-likelihood. So the graph is upside-down. > > -pd > > > > Thanks! > > > > On Wed, Nov 18, 2015 at 6:23 PM, Rolf Turner <r.turner at auckland.ac.nz> > > wrote: > > > >> On 19/11/15 11:31, C W wrote: > >> > >>> Dear R list, > >>> > >>> I am trying to find the MLE of the likelihood function. I will plot > the > >>> log-likelihood to check my answer. > >>> > >>> Here's my R code: > >>> > >>> xvec <- c(2,5,3,7,-3,-2,0) > >>> > >>> fn <- function(theta){ > >>> > >>> sum(0.5 * (xvec - rep(theta, 7)) ^ 2 / 1 + 0.5 * log(1)) > >>> > >>> } > >>> > >>> gn <- Vectorize(fn) > >>> > >>> curve(gn, -5, 20) > >>> > >>> optimize(gn, c(-5, 20)) > >>> > >>> $minimum > >>> > >>> [1] 1.714286 > >>> > >>> $objective > >>> > >>> [1] 39.71429 > >>> > >>> > >>> The MLE using optimize() is 1.71, but what curve() gives me is the > >>> absolute > >>> minimum. > >>> > >>> I think 1.71 is the right answer, but why does the graph showing it's > the > >>> minimum? What is going on here? > >>> > >> > >> Your graph shows that there is indeed a *minimum* at 1.71. And > optimise() > >> is correctly finding that minimum. > >> > >> If you want optimise() to find the maximum, set maximum=TRUE. In which > >> case it will return "20" (or something very close to 20). > >> > >> Your function fn() appears not to be the log likelihood that you had in > >> mind. Perhaps you the negative of fn()??? > >> > >> cheers, > >> > >> Rolf Turner > >> > >> -- > >> Technical Editor ANZJS > >> Department of Statistics > >> University of Auckland > >> Phone: +64-9-373-7599 ext. 88276 > >> > > > > [[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. > > -- > Peter Dalgaard, Professor, > Center for Statistics, Copenhagen Business School > Solbjerg Plads 3, 2000 Frederiksberg, Denmark > Phone: (+45)38153501 > Office: A 4.23 > Email: pd.mes at cbs.dk Priv: PDalgd at gmail.com > > > > > > > > > >[[alternative HTML version deleted]]