-
Notifications
You must be signed in to change notification settings - Fork 46
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Warning in emlinkMARmov in case of a poor match #20
Comments
Hi, Thanks a lot for your feedback! We really appreciate it. As you rightly point out, in your example, the problem is that you do not have a single suitable match for the one observation in one of your datasets. The latter leads to numerical underflow. We are constantly working on more robust ways to adjust for numerical underflow. In the meantime, we will add one warning message to describe the problem you encountered. By the way, Finally, to give you a better recommendation on how to proceed, we would love to know a little bit more about the type of merge you are doing. It does not have to be specific but a brief description will suffice. We are really glad that you find Ted |
Thanks for the input @tedenamorado. In my use case, |
Again, thanks a lot for your feedback. Believe me, every day we are trying to think of better ways to detect and handle false positives =) We have pushed an updated version of Please, if you find any further issues when using fastLink do not hesitate to let us know. We deeply care about what people using fastLink have to say. Happy holidays! |
I've been looking quite extensively into
fastLink
algorithm and notably the edge cases. In doing so, I think I've encountered a bug inemlinkMARmov
in the case of a poor match. If you unzip the attached file, you may runIf you try the above snippet out, you will obtain in most cases a warning that
p.old
is of different length thanp.new
. It doesn't happen always due to probable randomization. The reason is that after a few iterations,p.m = 0
and consequentlynum.prod = 0
. Due to zero division,p.gamma.k.m
becomesNaN
and sorting onNaN
leads to an empty vector - hence, the difference in length ofp.old
andp.new
. Sincep.old
andp.new
are of different lengths, it doesn't really make sense to subtract one from the other as you are recycling.I was thinking that
p.m = 0
essentially means there is no match, hence it doesn't really matter if we discontinue EM-algorithm and get out of the loop, i.e.if (p.m == 0) break
. I was wondering if you have some other ideas around it.By the way,
fastLink
is very nice work. Thanks a lot for it.fastlink.zip
The text was updated successfully, but these errors were encountered: