問題タブ [model-fitting]

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.

0 投票する
11 に答える
30729 参照

algorithm - 曲線上で最適なトレードオフ ポイントを見つける

パラメーター化されたモデルをそれに当てはめたいデータがあるとします。私の目標は、このモデル パラメーターの最適な値を見つけることです。

私は、AIC / BIC / MDLタイプの基準を使用してモデルの選択を行っています。これは、エラーの少ないモデルに報酬を与えるだけでなく、複雑さの高いモデルにペナルティを課します (このデータについて、いわば最も単純で最も説得力のある説明を求めています。かみそり)。

上記に続いて、これは 3 つの異なる基準 (2 つを最小化し、1 つを最大化する) に対して得られるものの例です。

aic-bic フィット

エルボーの形状は視覚的に簡単に確認でき、その領域のどこかでパラメータの値を選択します。問題は、私がこれを多数の実験で行っていることであり、介入なしでこの値を見つける方法が必要です。

私の最初の直感は、角から 45 度の角度で線を引き、それが曲線と交差するまで動かし続けることでした。

これを実装する方法、またはより良いアイデアについて何か考えはありますか?

上記のプロットの 1 つを再現するために必要なサンプルは次のとおりです。


編集

Jonasの解決策を受け入れました。基本的に、曲線上の各点について、次の式で与えられるp最大距離を持つ点を見つけます。d

点線距離

0 投票する
1 に答える
258 参照

r - nls関数で視覚化する最初の推測

いくつかのガウスベルで構成される関数をいくつかの実験データに適合させようとしています。使用される方法はRのnls関数です。しかし、方法が収束できるように、初期推定を十分に良くすることは困難です。

最適化ルーチンが呼び出される前に、最初の推測を視覚化することは可能ですか?

私が取り組んでいるコードを以下に示します(データファイルへのアクセスを提供できません)。

0 投票する
1 に答える
3277 参照

r - ggplot2 の geom_smooth() を使用して元の適合データ (nls + dnorm) を表示しようとしています

私はいくつかのデータを調査しているので、最初にやりたかったことは、それに正規 (ガウス) 分布を当てはめることでした。Rでこれを試すのはこれが初めてなので、一度に1ステップずつ進めています。まず、データを事前にビニングしました。

プロット1

カウントが必要なので、正規化係数 (N) を追加して密度を拡大する必要があります。

次に、表示用の適合データを作成すると、すべてがうまく機能します。

プロット2

geom_smooth() を使用してすべてを 1 つのステップで実行することについて話しているこのスレッドを見つけたとき、私は興奮しましたが、それを機能させることができません:

これが私が試したことです...そして私が得たものは次のとおりです。

エラーは、観測された変数countsに適合しようとしていることを示しているようですが、それは意味がありません。また、 counts にも「開始」値を指定すると、予想通り異常になります。

私が間違っていることは何か分かりますか?もちろん、これで終わりというわけではありませんが、手順が少ないほど常に優れており、皆さんは常に、これらの一般的なタスクに対する最も洗練されたソリューションを考え出しています。

前もって感謝します!

ジェフリー

0 投票する
2 に答える
163 参照

java - Java:最小の表面に画像を描画する方法は?

平均サイズが 70x150 の 256 枚の画像があるとします (変数の場合はサイズ)。そしてGraphic、画像を描画したいインスタンス(指定されたサイズのBufferedImageから作成)があります。しかし、私はそれらを可能な限り低い面に描きたいと思っています。だから、単にグリッドではなく、お互いに本当に困惑しています。しかし!: それらは互いに重ならないかもしれません。

これは人間の脳だけが処理できるものかもしれません。
聞いてみる価値はあると思います....

前もって感謝します、
Martijn

例えば:

0 投票する
1 に答える
1266 参照

matlab - MATLAB: 多関数フィッティング

私は関数を持っています.3つの指数の合計です:

まさに:

ここで、f1、f2、f3 は分数で、各 exp には 1 つのパラメーターがあり、a1、a2、a3 と呼びます。

したがって、この関数を実験データに当てはめると、6 つのパラメーター (f1、f2、f3、a1、a2、a3) が得られます。

ご了承ください

フィッティングは、いくつかのタイムラグ (t1、t2、t3 と呼ぶ) に対して行われます。したがって、タイムラグごとに、6 つのパラメーターのセットが 1 つあります。

パラメータ a1、a2、および a3 はタイムラグとともに直線的に増加します (a1(t1) < a1(t2) < a1(t3)... など)。分数は各タイムラグで同じです。

私が必要とするのは、a1(t)、a2(t)、a3(t)、および分数の勾配です。問題は、タイムラグごとに関数をフィッティングしているときに、a1 と a2 が順調に上昇している (完全な線形適合) が、a3 が下降しているという状況がよくあることです。また、分数にも問題があります。f1(t) + f2(t) + f3(t) を加算すると 1 に等しくならないため、各分数の平均を取ることができません。

「一度に」すべてを合わせる(簡単な)方法はありますか?どうやってするか?ありがとう!

0 投票する
1 に答える
17677 参照

python - モデル パラメーターをフィッティングするための fmin_l_bfgs_b の正しい使用法

いくつかの実験データ (y、x、t_exp、m_exp) があり、制約付き多変量 BFGS メソッドを使用して、このデータの「最適な」モデル パラメーター (A、B、C、D、E) を見つけたいと考えています。パラメータ E は 0 より大きい必要があり、その他は制約されていません。

いくつかの質問:

  1. モデルの定式化funcに独立変数を含める必要がありますか、それともの一部としてx実験データから提供する必要がありますか?x_exp*args
  2. 上記のコードを実行すると、エラーが発生しますfunc() takes at least 6 arguments (3 given)。これは、x と 2 つの *args であると想定しています...どのように定義すればよいfuncですか?

編集: @zephyr の回答のおかげで、実際の関数ではなく、残差の二乗和を最小化することが目標であることがわかりました。次の作業コードにたどり着きました:

境界が正しく機能しているかどうかはわかりません。E に (0, None) を指定すると、実行フラグ 2、異常終了が発生します。(1e-6, None) に設定すると問題なく動作しますが、E として 1e-6 を選択します。境界を正しく指定していますか?

0 投票する
2 に答える
9244 参照

matlab - Gaussian を特定のデータに当てはめる (モデル パラメーターの検索)

上位データから、ガウス関数式を抽出したい。ガウス関数の式は y=A*exp(-(x-τ)^2/σ^2) (A は振幅、τ は位相、σ は幅) です。上のデータから、A が 13.7092 (最大最小値) で、τ が 47 であることがわかります。ただし、σ はわかりません。私はすでにσを標準偏差として計算しています。しかし、値は適合しません。関数式を抽出する関数はmatlabにありますか? どうすればこの問題を解決できますか?

0 投票する
1 に答える
2940 参照

algorithm - Mathematica がNonlinearModelFit[]で使用するフィッティングアルゴリズムは?

独自のプログラムを作成する必要があるため、使用するアルゴリズムを知る必要があります。レーベンバーグ・マルカートは実際には同じことをしていません。Mathematica が特定の問題に使用するアルゴリズムを選択するアルゴリズムのリストのようなものはありますか?

ありがとうございました。

0 投票する
1 に答える
12530 参照

r - R 非線形最小二乗 (nls) モデル フィッティング

データの G 関数からの情報を次の数学モードに当てはめようとしています: y = A / ((1 + (B^2)*(x^2))^((C+1)/2 )) . このグラフの形状は次のとおりです。

http://www.wolframalpha.com/input/?i=y+%3D+1%2F+%28%281+%2B+%282%5E2%29*%28x%5E2%29%29%5E%28%282 %2B1%29%2F2%29%29

これが私がやっていることの基本的な例です:

「Gest」は、「spatstat」ライブラリ内にある関数です。これは、独立軸上の粒子間の距離と従属軸上の最近傍粒子を見つける確率を表示する G 関数、または最近傍関数です。したがって、y=0 で始まり、y=1 で飽和点に達します。

simdat.Gest をプロットすると、曲線が 's' の形をしていることがわかります。つまり、y = 0 で始まり、y = 1 で終わることを意味します。変数。したがって、情報は上記のモデルに適合する正しい方向にあります。

また、A = 1 を自動的に設定したことにも気付くかもしれません。これは、G(r) が常に 1 で飽和するためです。そのため、わざわざ式に入れなかったのです。

私の問題は、エラーが発生し続けることです。上記の例では、次のエラーが発生します。

私もこのエラーを受けています:

最初のエラーがどこから来ているのか、私には手がかりがありません。しかし、2 つ目は、B と C に適切な開始値を選択しなかったために発生したと思います。

最初のエラーがどこから来たのかを誰かが見つけてくれることを願っていました。また、2 番目のエラーを回避するために開始値を選択する最も効果的な方法は何ですか?

ありがとう!