[R] MLE packages

Bert Gunter bgunter@4567 @end|ng |rom gm@||@com
Mon Oct 21 17:40:00 CEST 2019


Are you familiar with R resources you can search?

1.  CRAN task views:
https://cran.r-project.org/web/views/

2. For searching:  https://rseek.org/
Searching on "maximum likelihood" there appeared to bring up relevant
resources.

3. RStudio resources: https://education.rstudio.com/
Note: RStudio is a private company that is not part of the R Foundation,
but may have useful programming resources for you.

4. Tons of online tutorials:  Just search!

I have not looked at your code in any detail, but I'd be willing to bet
you're trying to reinvent a square wheel.

Cheers,
Bert

Bert Gunter

"The trouble with having an open mind is that people keep coming along and
sticking things into it."
-- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )


On Mon, Oct 21, 2019 at 8:21 AM Mohan Ganesalingam <mohan using what3words.com>
wrote:

> I'm fairly new to R. The language is amazing, but I'm having trouble
> navigating packages. I have a solution that handles the problems I'm
> working on, but I don't know if it could be solved more cleanly with mle,
> bbmle, maxLik, etc..
>
> Here's an example problem first. I have run many WAV files through voice
> recognition software; the software returns 50 hypotheses for each, together
> with scores S_{ni} indicating how 'good' the i^th hypothesis is. I want to
> map the S_{ni} to a probability distribution. So I'm using MLE to fit a
> function f that maps scores to logs of relative probabilities. This means
> maximising
>
> \sum_n[   f(S_{nc_n}) - \log \sum_i \exp f(S_{ni})   ]
>
> where c_n is the index of the correct hypothesis for the n^th sample.
>
> Here's the code:
>
> ave_log_likelihood = function(f, scores) {
>     def = scores %>% filter(Sc > 0)
>     log_likelihoods = with(def, f(Sc) - matrixStats::rowLogSumExps(f(S),
> na.rm = T))
>     return(mean(log_likelihoods))
> }
>
> nlopts = list(algorithm = "NLOPT_LN_BOBYQA", maxeval = 500, print_level =
> 0)
>
> best_linear_fit = function(scores) {
>   res <- nloptr(c(0.01),
>                 function(a) -ave_log_likelihood(function(x) (a * x),
> scores),
>                 opts = nlopts)
>   return (data.frame(log_likelihood = -res$objective, slope = res$solution,
> doubling = log(2)/res$solution))
> }
>
>
> Now, I need to write a lot of variants of this with different objectives
> and with different classes of function. But there's a lot of verbiage in
> best_linear_fit which would currently be copy/pasted. Also, as written it
> makes it messy to fit on training data and then evaluate on test data.
>
> I'd appreciate any advice on packages that might make it easier to write
> this more cleanly, ideally using the idioms used in `lm`, etc., such as
> formulae and `predict`. (Any pointers on writing cleaner R code would also
> be lovely!)
>
> Thanks in advance;
> Mohan
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help using 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