Für ein Projekt habe ich eine Spezifikation mit Formeln, die ich implementieren muss. In diesen Formeln existiert eine kumulative Standardnormalverteilungsfunktion, die einen Gleitkommawert verwendet und eine Wahrscheinlichkeit ausgibt. Die Funktion wird durch ein Φ symbolisiert. Existiert eine Java-Bibliothek, die diese Funktion berechnet?Welche Java-Bibliothek berechnet die kumulative Standardnormalverteilungsfunktion?
Antwort
Apache Commons - Math hat was du suchst.
Genauer gesagt, überprüfen Sie die NormalDistribution
Klasse.
SuanShu, a Java numerical analysis library, berechnet die Normalverteilung und viele andere statistische Verteilungen.
Wenn Sie den genauen Code wollen, dieser scheint die gleiche Funktion in Openoffice Calc verwendet werden (ich habe einige Änderungen vorgenommen für es in Java zu arbeiten):
// returns the cumulative normal distribution function (CNDF)
// for a standard normal: N(0,1)
double CNDF(double x)
{
int neg = (x < 0d) ? 1 : 0;
if (neg == 1)
x *= -1d;
double k = (1d/(1d + 0.2316419 * x));
double y = ((((1.330274429 * k - 1.821255978) * k + 1.781477937) *
k - 0.356563782) * k + 0.319381530) * k;
y = 1.0 - 0.398942280401 * Math.exp(-0.5 * x * x) * y;
return (1d - neg) * y + neg * (1d - y);
}
es hier gefunden: http://www.codeproject.com/Messages/2622967/Re-NORMSDIST-function.aspx
die Frage will das PDF der Normalverteilung! –
Ich glaube nicht. Die Frage sagt "kumulative Standardnormalverteilungsfunktion" sowohl im Titel als auch im Text ... es sei denn, Φ bedeutet, dass es die Wahrscheinlichkeitsdichtefunktion sein soll ... – Erk
Sie könnten die Potenzreihe Formel verwenden, die nur etwa 10 Zeilen Code in Anspruch nimmt ... siehe zum Beispiel http://introcs.cs.princeton.edu/java/22library/Gaussian.java.html (die Funktion Phi
)
das auch, als die Hengst-Bibliothek zu arbeiten scheint. Danke vielmals. – Mnementh