Python で尤度比検定を行っているときに、数値的な問題が発生しました。統計が何を意味するかについてはあまり詳しく説明しませんが、私の問題はこれを計算することに帰着します:
LR = LR_H0 / LR_h1
ここでLR
は関心のある数で、LR_H0
とLR_H1
はゼロに非常に近い数値です。これにより、いくつかの数値的な問題が発生します。LR_H1
が小さすぎる場合、Python はこれをゼロ除算として認識します。
ZeroDivisionError: float division by zero
また、これは主な問題ではありませんが、LR_H1
が除算できるほど小さい場合、分数LR_H0 / LR_h1
が大きくなりすぎる可能性があります (Python には浮動小数点数の上限値もあると想定しています)。
この問題を回避する最善の方法についてのヒントはありますか? 私は次のようなことを考えています:
def small_enough( num ):
if num == 0.0:
return *other small number*
else:
return num
しかし、これはLR
値を近似するため理想的ではなく、ある程度の精度を保証したいと考えています。