2

Python で尤度比検定を行っているときに、数値的な問題が発生しました。統計が何を意味するかについてはあまり詳しく説明しませんが、私の問題はこれを計算することに帰着します:

LR = LR_H0 / LR_h1 

ここでLRは関心のある数で、LR_H0LR_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値を近似するため理想的ではなく、ある程度の精度を保証したいと考えています。

4

1 に答える 1