問題タブ [apache-commons-math]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 面積/ポリゴンの二変量正規分布の確率を計算する
Java の特定の領域と特定のポリゴンの二変量正規分布の確率を計算しようとしています。
数学的説明は、特定の複雑な領域で二変量正規分布の確率密度関数 ( pdf ) を積分することです。
私の最初のアプローチは、ライブラリを利用して 2 つNormalDistribution
のオブジェクトを使用することでした。apache-commons-math
次元 1 のデータセット x と次元 2 のデータセット y を指定して、それぞれの平均と標準偏差を計算しましたNormalDistribution
。
のメソッド
public double probability(double x0, double x1)
をorg.apache.commons.math3.distribution.NormalDistribution
使用すると、各次元に個別の間隔を設定できます。つまり、長方形の領域を定義して、次の方法で確率を取得できます。
標準偏差が十分に小さく、定義された領域が十分に大きい場合、確率は予想される 1.0 (0.99999999999) の数値に近づきます。
特定の領域を計算する必要があると述べたように、長方形の領域しか定義できないため、最初のアプローチはこの方法では機能しません。
したがって、私の 2 番目のアプローチはMultivariateNormalDistribution
、 にも実装されている class を使用することでしたapache-commons-math
。
MultivariateNormalDistribution
ベクトル平均と共分散行列を使用することpublic double density(double[] vals)
で、説明が言っているように、特定の点 x の pdf を取得できます。
指定された点 x で評価されたこの分布の確率密度関数 (PDF) を返します。
このアプローチでは、複雑な領域をポイントの ArrayList に変換し、その後、次のように ArrayList を反復処理してすべての密度を合計します。
しかし、標準偏差を非常に低い値に設定すると、呼び出している位置に 1 を超えるピークが pdf に含まれるようになると、精度が不足するという問題が発生しましたmnd.density(pos)
。したがって、合計は値 > 1 になります。
これらのピークを回避するために、現在のポイントの倍精度で周囲のポイントである合計値の平均を合計しようとしています
これは明らかに機能します。
全体として、私のアプローチが根本的に正しいかどうかはよくわかりません。別のアプローチは、数値積分で確率を計算することですが、Javaでこれを達成する方法がわかりません。
これを達成する他の可能性はありますか?
編集: 精度が不足しているという事実に加えて、主な問題は次のとおりです。「密度を合計する」2番目のアプローチは、二変量正規分布の領域で確率を取得する有効な方法ですか? public double density(double[] vals)
1 次元の正規分布について考えると、ある特定の点の確率は常に 0です。Apache 数学ライブラリのメソッドはどのようにして有効な値を取得するのでしょうか?
java - commons.math で PolynomialFunction の最適値を見つける
commons.math で PolynomialFunction (UnivariateDifferentiableFunction でもある) の最適値を見つける簡単な方法はありますか? 多次元オプティマイザーには当惑するほどの配列がありますが、AFAICS で唯一明示的に一変量のオプティマイザーは Brent であり、微分可能性を利用していません。
java - apache.math3.stat.descriptive を使用したパーセンタイル計算の不一致
次の数値リストの 95 パーセンタイルを計算しています。
Apache ライブラリは、NIST 標準を使用してパーセンタイルを計算します。これは、Excel で使用されるのと同じ方法です。Excel によると、上記のリストの 95 パーセンタイルは 1125.85 になるはずです。
ただし、次のコードを使用すると、別の結果が得られます。
これは次のメッセージで失敗します。
1134.6 はリストの最大値であり、95 パーセンタイルではないため、この値がどこから来ているのかわかりません。
java - Apache単純回帰の使用
線形回帰を使用するアプリケーションがあります。common math
クラスがあるApacheライブラリをダウンロードしましたSimpleRegression
。
ドキュメントを読みましたが、よくわかりませんでした。
やりたいことは次のとおりです
。200msごとにcounter
、Yおよびvalue
X としてデータセットを入力します。
1 秒ごと (つまり 5 つのデータ エントリ) に回帰をチェックし、値 Z が線上にあるかどうかを確認します。
データ入力部分のやり方は知っていますが、行に値があるかどうかを確認する方法がわかりません。
誰でも私を助けることができますか?
java - JAVA のオクターブ dfdp.m
Java で Levenberg Marquardt フィッティングを実装したいのですが、apache commons math が適切であることがわかりました。勾配またはヤコビアンを計算するための導関数がない関数を当てはめたいので、数値導関数を計算するには GNU オクターブの dfdp.m のようなものが必要です。誰かがすでにこれを行っていますか?