0

自然対数と指数減衰の決定を必要とする死亡リスクの計算があります。以下にその方法を詳述する。exp などを計算するメソッドが静的ではない理由と、誤った計算のリスクがある場合に複数の引数に単一の Log (または Exp) オブジェクトを使用するかどうかを知りたいです。つまり、Log の 1 つのインスタンスを使用して、Log (2.3) と Log (567) を計算できますか?

public Double getROD(Integer score) {

        Double beta0 = new Double(-7.7631);
        Double beta1 = new Double(0.0737);
        Double beta2 = new Double(0.9971);

        Log log = new Log();
        Exp exp = new Exp();

        Double logit = beta0 + (beta1 * score) + (beta2 * log.value(new Double(score + 1)));
        Double mortality = exp.value(logit) / (1 + exp.value(logit));

        return mortality;
    }

私は次のことを試しました:

Log log = new Log();

Double arg1 = log.value(new Double(12.3));
Double arg2 = log.value(new Double(29.12));

System.out.println(arg1.toString() + " : " + arg2.toString());

その結果、

2.509599262378372 : 3.3714252233284854

ただし、これがすべての用途で意図された動作であるかどうかについては、まだ疑問があります。

4

2 に答える 2

3

、などのクラスは状態を保存しませんExpLogそれらのメソッドが静的ではない理由は、インターフェースvalueを満たすためです。UnivariateFunctionそうです、オブジェクトを安全に再利用できます。

インターフェイスの優れた点の 1 つは、UnivariateFunctionそのようなオブジェクトを受け取る関数を記述できることです。ユーザーは、適切な関数オブジェクトを渡すことで関数をパラメーター化できます。この概念は、高次関数(私のようにFP陣営の場合) または戦略パターン( OOP陣営の場合) と呼ばれます。

于 2014-07-09T02:27:36.357 に答える