Aanchal Sharma
2016-Sep-14 20:46 UTC
[R] NaN Log-lik value in EM algorithm (fitting Gamma mixture model)
Hi, I am trying to fit Gamma mixture model to my data (residual values obtained after fitting Generalized linear Model) using gammamixEM. It is part of the script which does it for multiple datasets in loop. The code is running fine for some datasets but it terminates for some giving following error: " iteration = 1 log-lik diff = NaN log-lik = NaN Error in while (diff > epsilon && iter < maxit) { : missing value where TRUE/FALSE needed" Seems like EM is not able to calculate log-lik value (NaN) at the first iteration itself. any idea why that can happen? It works fine for the other genes in the loop. Tried looking for difference in the inputs, but could not come up with anything striking. Regards Anchal -- Anchal Sharma, PhD Postdoctoral Fellow 195, Little Albany street, Cancer Institute of New Jersey Rutgers University NJ-08901 [[alternative HTML version deleted]]
Duncan Murdoch
2016-Sep-15 00:04 UTC
[R] NaN Log-lik value in EM algorithm (fitting Gamma mixture model)
On 14/09/2016 4:46 PM, Aanchal Sharma wrote:> Hi, > > I am trying to fit Gamma mixture model to my data (residual values obtained > after fitting Generalized linear Model) using gammamixEM. It is part of the > script which does it for multiple datasets in loop. The code is running > fine for some datasets but it terminates for some giving following error: > > " iteration = 1 log-lik diff = NaN log-lik = NaN > Error in while (diff > epsilon && iter < maxit) { : > missing value where TRUE/FALSE needed" > > Seems like EM is not able to calculate log-lik value (NaN) at the first > iteration itself. any idea why that can happen? > It works fine for the other genes in the loop. Tried looking for difference > in the inputs, but could not come up with anything striking. >THere are lots of ways to get NaN in numerical calculations. A common one if you are using log() to calculate log likelihoods is that rounding error gives you a negative likelihood, and then log(lik) comes out to NaN. You just need to look really closely at each step of your calculations. Avoid using log(); use the functions that build it in (e.g. instead of log(dnorm(x)), use dnorm(x, log = TRUE)). Duncan Murdoch
Aanchal Sharma
2016-Sep-15 22:04 UTC
[R] NaN Log-lik value in EM algorithm (fitting Gamma mixture model)
I am using a function gammamixEM where it does it by default. I do not have the option to change it. Conceptually, what can make the algorithm not able to calculate likelihood value at all (and hence log-lik=Nan)? Is there sth wrong with the data? Under what conditions does it happen? On Wed, Sep 14, 2016 at 8:04 PM, Duncan Murdoch <murdoch.duncan at gmail.com> wrote:> On 14/09/2016 4:46 PM, Aanchal Sharma wrote: > >> Hi, >> >> I am trying to fit Gamma mixture model to my data (residual values >> obtained >> after fitting Generalized linear Model) using gammamixEM. It is part of >> the >> script which does it for multiple datasets in loop. The code is running >> fine for some datasets but it terminates for some giving following error: >> >> " iteration = 1 log-lik diff = NaN log-lik = NaN >> Error in while (diff > epsilon && iter < maxit) { : >> missing value where TRUE/FALSE needed" >> >> Seems like EM is not able to calculate log-lik value (NaN) at the first >> iteration itself. any idea why that can happen? >> It works fine for the other genes in the loop. Tried looking for >> difference >> in the inputs, but could not come up with anything striking. >> >> > THere are lots of ways to get NaN in numerical calculations. A common > one if you are using log() to calculate log likelihoods is that rounding > error gives you a negative likelihood, and then log(lik) comes out to NaN. > > You just need to look really closely at each step of your calculations. > Avoid using log(); use the functions that build it in (e.g. instead of > log(dnorm(x)), use dnorm(x, log = TRUE)). > > Duncan Murdoch > >-- Anchal Sharma, PhD Postdoctoral Fellow 195, Little Albany street, Cancer Institute of New Jersey Rutgers University NJ-08901 [[alternative HTML version deleted]]