web-dev-qa-db-ja.com

単純な統計-Java平均、標準偏差などを計算するためのパッケージ

簡単なJava統計パッケージを教えてください。

必ずしも高度なものは必要ありません。 Java.lang.Mathパッケージに平均値を計算する関数がないように見えることに非常に驚きました...

これに何を使用していますか?


[〜#〜] edit [〜#〜]

に関して:

平均と標準偏差を計算する単純なクラスを書くのはどれくらい難しいですか?

まあ、難しくありません。私はこれらを手でコーディングした後にこの質問をしました。しかし、それは私のJava私がそれらを必要とするときにこれらの最も単純な関数を手元に置いていないことのフラストレーションに追加されました。

65
Peter Perháč
80
John Paulett

Java SE 8から、多くのクラスがプラットフォームに追加されました。

22
Peter Perháč

質問のこの部分に答えるだけです:

Java.lang.MathパッケージにMeanを計算する関数がないように見えることに、私は非常に驚きました...

これを見つけても驚いたとは思わない。 Javaクラスライブラリが実装しない「有用なアルゴリズム」がたくさんあります。すべてを実装するわけではありません。この点で、他のプログラミング言語と違いはありません。

実際、SunがJ2SEにあまりにも多く実装しようとした場合、それは悪いことです。

  1. デザイナー/開発者/テクニカルドキュメンターの時間がかかります...明確な「投資収益率」はありません。

  2. Javaフットプリント;「rt.jar」のサイズなど。)

  3. 数学の分野では、多くの場合、さまざまな要件に対応するために、さまざまな方法で(さまざまなAPIを使用して)アルゴリズムを実装する必要があります。

  4. 複雑な場合は、SunがAPIを「標準化」しようとせずに、他の興味のある/熟練したグループに任せる方がよい場合があります。例えばApacheの人々。

18
Stephen C
import Java.util.*;
public class stdevClass {
    public static void main(String[] args){
        int [] list = {1,-2,4,-4,9,-6,16,-8,25,-10};
        double stdev_Result = stdev(list);
        System.out.println(stdev(list));
    }

    public static double stdev(int[] list){
        double sum = 0.0;
        double mean = 0.0;
        double num=0.0;
        double numi = 0.0;
        double deno = 0.0;

        for (int i : list) {
            sum+=i;
        }
        mean = sum/list.length;

        for (int i : list) {
            numi = Math.pow((double) i - mean), 2);
            num+=numi;
        }

        return Math.sqrt(num/list.length);
    }
}
6
hodan_egal

Javaには直接的なメソッドやクラスはないと思います。私たち自身のためにそれを構築しなければなりません。要件に合わせて、このコードが役立ちます。 Javaでの標準偏差の計算

1
user889392