it's been a looooooooong time but I vaguely remember Rvmminb computing gradients ( and possibly hessians ) subject to constraints. John can say more about this but, if one is going to go through the anguish of creating a fitdstr2, then you may want to have it call Rvmminb instead of whatever is currently being called.
On Sun, Apr 26, 2020 at 8:55 PM Abby Spurdle <spurdl...@gmail.com> wrote: > I thought about this some more and realized my last suggestion is > unlikely to work. > Another possibility would be to create a new function to compute the > Hessian with a smaller step size, but I suspect there will be more > problems. > > Possibly a much simpler approach would be to: > > Modify the source for fitdistr. > (Copy the source and create a new function, say fitdistr2). > > Modify it not compute the Hessian in the optim call. > Then after the optim call, test the parameter estimates. > If they're very close to the boundaries (here zero), then they're > flagged as near-boundary cases and the fitdistr2 function returns the > parameter estimates without the Hessian and related info. > (Possibly generating a warning). > > If they're sufficiently distant, the Hessian and related info can be > computed in separate steps and returned. > (Equivalent to what it does currently). > > I note that there's at least one R package (numDeriv), and maybe more, > for computing the Hessian, numerically. > > > On Mon, Apr 27, 2020 at 9:31 AM Abby Spurdle <spurdl...@gmail.com> wrote: > > > > > Dear Ms. Spurdle > > > > I usually refer to myself as "He". > > (But then, that's not the whole story...) > > > > I'm not an expert on maximum likelihood approaches. > > So, I apologize if the following suggestion is a poor one. > > > > Does your likelihood function have a limit, as alpha approaches zero > (say zero)? > > If so, the limit of the log-likelihood would be -Inf, would it not. > > > > You could create a function representing the likelihood or > > log-likelihood by wrapping your density function. > > The function could allow alpha/beta values equal to or below zero, and > > return the limit. > > This is mathematically incorrect, but may be sufficient for > > permissible estimates of the second-order partial derivatives. > > Depending on the shape of the likelihood function these > > pseudo-likelihoods maybe able to be improved...? > > > > You could then do a small modification on the source code for > > MASS::fitdistr, such that the user specifies the likelihood function > > or log-likelihood function, rather than the density... > > > > The fitdistr function is relatively complex, however, you would only > > need to modify a couple of lines, the lines that create the fn > > function... > > ______________________________________________ > R-help@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]] ______________________________________________ R-help@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.