Java のプロジェクトで正規分布の CDF を使用していますが、平均から非常に離れた非常に小さな間隔の CDF を計算すると、非常に小さな数値に遭遇することがよくあります。(例: 平均 1000、std 0.1 の正規分布の cdf(-10000.02, -10000.01))。64 ビット double が処理できる最小の数値は e-308 程度であるため、これにより double のアンダーフローが発生します。グーグルで検索しましたが、これを処理できるパッケージが見つかりませんでした。
import org.apache.commons.math3.distribution.NormalDistribution;
public class NormalDistributionTest{
public static double CDF(double start, double end, double mean, double stdDev){
//NormalDistribution is from org.apache.commons.math3
NormalDistribution nd = new NormalDistribution(mean, stdDev);
double p = nd.probability(start, end);
return p;
}
static public void main(){
System.out.println(NormalDistributionTest.CDF(-12.04, -12.03,6.62, 0.41));
}
}
何か案は?ありがとう!
鵬都