Ver Fonte

Add NumUtil.divSmoothV1

StrayWarrior há 3 meses atrás
pai
commit
a5693bbed5

+ 5 - 0
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/math/Const.java

@@ -0,0 +1,5 @@
+package com.tzld.piaoquan.ad.engine.commons.math;
+
+public class Const {
+    public static final double WILSON_ZSCORE = 1.96;
+}

+ 11 - 0
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/util/NumUtil.java

@@ -13,6 +13,17 @@ public class NumUtil {
         return d1 / d2;
     }
 
+    public static double divSmoothV1(double a, double b, double zscore) {
+        // Wilson Smoothing
+        if (a == 0 || b == 0) {
+            return 0d;
+        }
+        double zscore2 = zscore * zscore;
+        double p = a / b;
+        double numerator = p + zscore2 / (2 * b) - zscore * Math.sqrt((p * (1 - p) + zscore2 / (4 * b)) / b);
+        double denominator = 1 + zscore2 / b;
+        return numerator / denominator;
+    }
 
     public static double log(double a) {
         if (a <= 0) {