【发布时间】:2014-07-09 02:21:09
【问题描述】:
我有一个死亡风险计算,需要确定自然对数和 exp 衰减。下面详细介绍该方法。我很想知道为什么计算 exp 等的方法不是静态的,如果存在计算不正确的风险,我是否将单个 Log(或 Exp)对象用于多个参数。那就是我可以使用单个Log实例来计算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
但是,这是否是所有用途的预期行为仍然存在疑问。
【问题讨论】:
-
我应该补充一点,我已经尝试过了,结果是一致的,但并不一定意味着该类将始终以这种方式运行。我也对不使用静态方法的原因感兴趣。
-
主要是标准设计。
GSON等其他库也更倾向于使用实例进行操作。 -
感谢您的 cmets。非常感谢。
标签: java math apache-commons-math