問題タブ [curve-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.
python - シミュレーションおよび実験データポイントをPythonで適合させる
モンテカルロシミュレーションを実行し、信号強度と時間の曲線を生成するコードを作成しました。このような曲線の形状はさまざまなパラメーターに依存しますが、そのうちの2つは、私がシミュレートしている実験の「実際のバージョン」によって決定したいと考えています。
彼女の実験データを私のシミュレートされた曲線と比較する準備ができていますが、まだフィットを実行できていないため、今は行き詰まっています(これまでのところ、実験データをテストのためにシミュレートされたノイズの多いデータに置き換えました)。コード2で終了するを使用してみscipy.optimize.leastsqました(ドキュメントによると、これはフィッティングが成功したことを意味します)が、ほとんどの場合、最初の推測として入力した値を返します(まったく同じではありませんが、近いです)。それらは真の値に近いか遠いものでした。異なる値を報告する場合でも、結果の曲線は実際の曲線とは大幅に異なります。
別の観察は、infodict['nfev']常に含まれているということです
シミュレートされたノイズの多いデータを使用している間、両方のパラメーターの真の値が同じ桁であり(使用中のステップサイズが他の方法ではどちらか一方にしか影響しないと考えたため)、桁が大きく異なることを試してみました。 、およびステップサイズ(パラメータepsfcn)を変更しましたが、役に立ちませんでした。
誰かが私が間違っているかもしれないこと、または私が代わりに使用できるフィッティング関数を知っleastsqていますか?もしそうなら:事前にどうもありがとう!
編集
Russが提案したように、シミュレーションの実行方法について詳しく説明します。小さな分子が大きな分子に結合する様子を見ていきます。これは、相互の親和性に依存する確率で発生します(親和性は実験データから抽出される値の1つです)。結合が発生したら、複合体が再び崩壊するまでにかかる時間もシミュレートします(解離時定数は、関心のある2番目のパラメーターです)。他にも多くのパラメータがありますが、それらは予想される信号強度が計算されたときにのみ関連するため、実際のシミュレーションには関連しません。
まず、与えられた数の小分子から始めます。それぞれの状態は、いくつかの時間ステップでシミュレートされます。各タイムステップで、親和性の値を使用して、この分子が結合していない場合に、大きな分子に結合するかどうかを判断します。すでにバインドされている場合は、解離時定数とすでにバインドされている時間を使用して、このステップで解離するかどうかを判断します。
どちらの場合も、パラメーター(親和性、解離時定数)を使用して確率が計算され、乱数(0〜1)と比較されます。この比較では、小分子の状態(bound /アンバウンド)変更。
編集2
結果の曲線の形状を決定する明確に定義された関数はなく、形状は明らかに再現可能ですが、個々のデータポイントにはランダム性の要素があります。したがってoptimize.fminの代わりにをleastsq、収束せず、最大反復回数が実行された後に終了します。
編集3
アンドレアによって提案されたように、私はサンプルプロットをアップロードしました。サンプルデータを提供することが大いに役立つとは思いません。x値(時間)ごとに1つのy値(信号強度)だけです...
r - Rのプロットからの最適曲線
この方法で、stackoverflow のユーザーの助けを借りて、データの 2 つのサンプルから派生した ph というプロットに確率密度関数があります。
ph のプロットの最適な曲線を当てはめたいのですが、作業方法が見つかりません。これどうやってするの?私は ph から vaule を抽出し、それらに取り組む必要がありますか? または動作する同じ機能があります
直接?
r - loess()ではなくnls()を選択する場合
(x、y)データがある場合は、簡単に直線を描くことができます。
しかし、曲線のデータには曲線の線が必要です。loess()を使用できるようです:
この質問は、私が入力して調査したときに進化しました。nls()私は、曲がりくねったデータ(データについて何も知らない)に適合する単純な関数を求め、その使用方法または実行方法を理解したいと考えてoptim()いました。それは私が見つけた同様の質問で誰もが示唆しているように見えたものでした。しかし今、loess()私は幸せに出くわしました。だから、今私の質問は、なぜ誰かが(または)の代わりにnlsまたはを使用することを選択するのでしょうか?ツールボックスの例えを使用すると、ドライバーであり、パワードライバーです(つまり、同じことを行うので、ほとんどの場合後者を選択しますが、労力は少なくなります)?またはマイナスドライバーであり、optimloesssmooth.splinenlsloessnlsloessクロスヘッドドライバー(つまり、黄土はいくつかの問題に適していますが、他の問題では単純に機能しません)?
参考までに、私が使用していたプレイデータはloess次のとおりです。満足のいく結果が得られます。
と:
悲しいことに、これではうまくいきません:
nls()、またはその他の関数やライブラリは、ヒントを与えられることなく(つまり、正弦波であると言われることなく)、この例と前のexpの例の両方に対処できますか?
更新:stackoverflowの同じテーマに関するいくつかの便利なページ:
「箱から出して」smooth.splineは、私の1番目と3番目の例では良い結果をもたらしますが、2番目の例ではひどい(ドットを結合するだけです)。ただし、f = smooth.spline(x、y、spar = 0.5)は3つすべてで適切です。
更新#2:gam()(mgcvパッケージから)はこれまでのところ素晴らしいです:それが優れている場合はloess()と同様の結果が得られ、それが優れている場合はsmooth.spline()と同様の結果が得られます。そして、すべてヒントや追加のパラメータなしで。ドキュメントは頭上にあり、頭上を飛んでいる飛行機に目を細めているように感じました。しかし、少し試行錯誤が見つかりました:
excel - Excelのデータを多変数多項式にカーブフィットする方法は?
単純なデータセットがあり、10個の値が増加します。
それらを次の形式の多項式に適合させたい:Z = A1 + A2 * X + A3 * Y + A4 * X ^ 2 + A5 * X * Y + A6 * Y ^ 2
ここで、Zの出力は上記のデータのセット、A1〜A6は私が探している係数、Xは入力の範囲(もちろん10)、そして今のところYは一定の値です。
'trendline'を使用して作成された標準の2次多項式ではなく、この多項式にカーブフィットするにはどうすればよいですか?
python - pythonscipy.optimize.curve_fitで使用される引数が多すぎます
クラスインスタンスメソッド内でカーブフィッティングを行おうとしていますが、curve_fit関数がクラスインスタンスメソッドに与える引数が多すぎます。
コードは
次に、正常に機能するメソッドのいくつかの行、そして私の関数は次のとおりです。
およびcurve_fit関数呼び出し
エラーが発生します
クラスの外でget_flowを定義し、次のように呼び出すことで、これを機能させることができます。
しかし、それは私が望むように用途が広いためにクラス内のメソッドである必要があるので、それは良くありません。これをクラスインスタンスメソッドとして機能させるにはどうすればよいですか?
また、selfをget_flowに渡して、curve_fitで使用されるパラメーターに適合しないパラメーターを追加できるようにしたいと思います。これは可能ですか?
bezier - N点を通過する曲線のベジェ制御点を見つける
4点を通過する曲線の3次ベジエ制御点を見つけるための次の優れたソリューションを検討します。
C#で開始、終了、および2つの交差点を指定したBezierSegmentの制御点を見つける方法-別名CubicBezier4点補間
N> 2、おそらくN≤20の場合、ベジェ曲線をN点を通過させるために、これに直接的な拡張があるのではないかと思います。
c# - 与えられた点に最も近い3次ベジェ曲線を取得するにはどうすればよいですか?
与えられたnポイント:
p0、p1、p2、...、pn;
点c1、c2を取得して、次のように定義される3次ベジェ曲線を取得するにはどうすればよいですか。
p0、c1、c2、pn
与えられたポイントに最も近い?
最小二乗法を試しました。これは、 http://www.mathworks.com/matlabcentral/fileexchange/15542-cubic-bezier-least-square-fittingのPDFドキュメントを読んだ後に作成しました。しかし、私は良いt(i)関数を見つけることができません。
与えられた点に最も近い3次ベジェ曲線を取得するための最良の方法は何ですか?
たとえば、ここに30ポイントがあります。
これらのポイントは、次の4つのポイントによって制御される3次ベジェ曲線の周りに分散されます。
P0(0、256)、P1(512、0)、P2(0、0)、P3(256、256)。
曲線が(0、256)から(256、256)であるとすると、元の点の近くに2つの制御点を置く方法を教えてください。
c# - C#でのガウスフィット
私が取り組んでいるプロジェクトでは、ポイントのセットからガウスフィットを取得する必要があります-いくつかの処理の平均と分散、およびポイントのセットが本当にあるかどうかを判断するためのエラー度(または精度レベル)が必要です正規分布を持っています。
私はこの質問を見つけました
ただし、3ポイントに制限されていますが、任意の数のポイントで機能するフィットが必要です。
私が必要としているのは、LabVIEWのガウスピークフィットに似ています
mathdotnetとaforge.net(同じプロジェクトで両方を使用)を見ましたが、何も見つかりませんでした。
誰かがC#または(簡単に変換可能な)C / C ++またはJavaソリューションを知っていますか?
あるいは、反復アルゴリズムを使用する必要があると言われました。自分で実装することもできます(数学がそれほど複雑でない場合)。私が何を使うことができるかについて何か考えはありますか?私は(ウィキペディアやGoogleで見つけた他の記事で)たくさんの記事を読みましたが、解決策の明確な兆候は見つかりませんでした。
python - Python でヒストグラムをフィッティングする
ヒストグラムがあります
形状がほぼガウスであることがわかりますが、このヒストグラムをガウス関数に合わせて、取得した平均値とシグマの値を出力したいと思います。手伝って頂けますか?
matlab - 制約付きの線形最小二乗フィット - アイデアはありますか?
線形最小二乗法を使用して、高次多項式を (それほどではない) ノイズの多いデータに当てはめるという問題があります。現在、私は 15 ~ 25 程度の多項式次数を使用していますが、これは驚くほどうまく機能します。依存関係はほぼ線形ですが、「非常に近い」モデルの精度が重要です。私は Matlab の polyfit() 関数を使用しており、(明らかに) x データを正規化しています。これは通常は問題なく機能しますが、最近のデータセットで問題が発生しました。当てはめられた多項式は、x データ区間内に極値を持ちます。私が取り組んでいるアプリケーションの場合、これは非ノーです。多項式モデルには、x 区間にわたって定常点があってはなりません。
したがって、最小二乗問題に制約を追加する必要があります。当てはめられた多項式の導関数は、既知の x 範囲に対して厳密に正でなければなりません (または厳密には負です。これはデータによって異なりますが、単純な線形近似により、どれがどれであるかがすぐにわかります。です。) 利用可能な最適化ツールボックス関数をざっと見てきましたが、どうすればよいか分からないことは認めます。誰か提案はありますか?
[このデータにはおそらく多項式よりも優れたモデルがあると思いますが、短期的にはモデルの形式を変更することは現実的ではありません]
[締めくくりのメモ: このひどい多項式モデルを置き換えるゴーサインがついに得られました! Jonas Lundgren による優れたSPLINEFITコードを使用して、ノンパラメトリック アプローチであるスプライン スムージングを採用します。これには、エンド ユーザー アプリケーションで既にスプライン モデルを使用しているという利点があるため、スプライン モデルを評価するために使用できる C# コードが既にあります]