問題タブ [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.
perl - 曲線をヒストグラム分布に適合させるにはどうすればよいですか?
先日、ある人から整数パーティションについて電子メールで質問されましたが (私は整数パーティションを生成するために Perl モジュール Integer::Partition をリリースしていたため)、答えることができませんでした。
背景: ここに 7 のすべての整数パーティションがあります (各行の合計は 7 です)。
ここで、各パーティションの長さを見て、各長さの数を数えると、次のようになります。
... 1 つのパーティションの長さは 1 (7) で、もう 1 つのパーティションの長さは 7 (1 1 1 1 1 1 1) です。長さ 3 の 4 つのパーティションがあります: (5 1 1)、(4 2 1)、(3 3 1)、(3 2 2)。
N の数が大きい場合、分割長の分布をグラフにすると、原点に向かって歪んだ非対称曲線が現れます。興味がある場合は、N=40 の次のパーティション長カウントをグラフ化してください。
1 20 133 478 1115 1945 2738 3319 3589 3590 3370 3036 2637 2241 1861 1530 1236 995 790 627 490 385 297 231 176 135 101 77 56 42 30 22 15 11 7 5 2 1 1 1 1 1 1 1 1
これらの分布カウントの生成に興味がある場合は、私が使用したコードを次に示します。
(注: 私のコンピューターでは、N=90 の生成に約 10 分かかります)。
私の質問は、観測された分布曲線を一致させるために使用できる式は何ですか? それはガウス(ガウス分布は非対称になることができますか?)またはポアソン分布ですか、それとも何か他のものですか?
Nについてどうやって解くのですか?高校の数学を思い出せば、導関数が 0 と交差するときを解くことでピークを特定できます。私はウェブを検索しましたが、戻ってくるのは難解な数学論文だけです。私はいくつかのコードが必要です:)
3d - カーブ フィッティング 3D データ セット
2D データのカーブ フィッティングの問題はよく知られていますが (LOWESS など)、3D データ ポイントのセットが与えられた場合、このデータに 3D カーブ (スムージング/回帰スプラインなど) をどのように当てはめることができますか?
詳細: 既知の関係を持たないベクトル X、Y、Z によって提供されるデータに適合する曲線を見つけようとしています。基本的に、3D ポイント クラウドがあり、3D トレンドラインを見つける必要があります。
詳細: 曖昧で申し訳ありません。私はいくつかのアプローチを試しました (まだ線形フィットを変更しようとはしていません) が、ランダム NN が最もうまくいくようです。つまり、ポイント クラウドからポイントをランダムに選択し、(任意の球内で) その近傍の重心を見つけ、反復します。重心をつないで滑らかなスプラインを形成することは困難ですが、得られた重心は問題ありません。
問題を明確にするために、データは時系列ではなく、点群を最もよく表す滑らかなスプラインを探しています。つまり、この 3D スプラインを任意の 2 つの変数によって形成される平面に投影すると、投影されたスプライン ( 2D に) は、投影された点群を (2D に) 滑らかにフィットさせます。
IMG: 画像を追加しました。赤い点は、前述の方法から得られた重心を表します。
3D ポイント クラウドとローカル重心 http://img510.imageshack.us/img510/2495/40670529.jpg
curve-fitting - 3点が与えられた放物線の頂点を計算する方法
放物線を形成する 3 つの X/Y ポイントがあります。この 3 点を通る放物線の頂点を計算するだけです。私はこれらの計算をたくさんしなければならないので、できれば簡単な方法です!
「Ask A Scientist」ウェブサイトには、次の回答が記載されています。
放物線の一般的な形式は次の式で与えられます: A * x^2 + B * x + C = y ここで、A、B、および C は任意の実数定数です。(x,y) 順序付けられたペアである点の 3 つのペアがあります。各点の x 値と y 値を放物線の方程式に代入します。3 つの未知数、3 つの定数で 3 つの線形方程式が得られます。次に、A、B、および C の値について、この 3 つの方程式系を簡単に解くことができ、3 つの点と交差する放物線の方程式が得られます。頂点は、一次導関数が 0 の場所です。小さな代数は、頂点に対して ( -B/2A , C - B^2/4A ) を与えます。
C# または C++ でこの計算を行う実際のコードを確認できれば幸いです。誰か?
python - PythonとNumpyを使用して決定係数を計算するにはどうすればよいですか?
PythonとNumpyを使用して、任意の次数の最適な多項式を計算しています。x値、y値、および適合させたい多項式の次数(線形、2次など)のリストを渡します。
これは大いに機能しますが、r(相関係数)とr-squared(決定係数)も計算したいと思います。結果をExcelの最適な近似曲線機能、およびそれが計算する決定係数値と比較しています。これを使用して、線形最適化(次数は1)の決定係数を正しく計算していることがわかります。ただし、私の関数は、次数が1より大きい多項式では機能しません。
Excelはこれを行うことができます。Numpyを使用して高次多項式の決定係数を計算するにはどうすればよいですか?
これが私の関数です:
c - レーベンバーグ・マルカート アルゴリズムはどのように詳細に機能するのですか?
自分で実装できるように、Levenberg-Marquardt 曲線近似アルゴリズムがどのように機能するかを学びたいと考えているプログラマーです。読者が数学者ではなくプログラマーである場合に、それがどのように機能するかを詳細に説明できる優れたチュートリアルはどこにありますか。
私の目標は、このアルゴリズムを opencl に実装して、ハードウェア アクセラレーションを実行できるようにすることです。
r - R の適合度関数
曲線をデータに当てはめ、その曲線がどの程度適合しているかをテストするために、R でどの関数を使用しますか? どのような結果が良いと考えられますか?
r - まばらなサンプリングデータから地形図を作成するには?
(x, y, 高度)データのかなりまばらなサンプルしかない地形の地形図を作成する必要があります。もちろん、完全に正確なマップを作成することはできませんが、ある意味で「滑らかな」マップが必要です。「滑らかさ」(おそらく表面曲率の二乗の平均の逆数) を定量化する必要があり、2 つの量の合計である目的関数を最小化したい:
- 表面の粗さ
- サンプル地点での表面の高度とその地点で実際に測定された高度との間の平均二乗距離
私が実際に欲しいのは地形図なので、一定の高度の等高線を作成する方法を本当に探しています。表面について話すことなくそれを行うための巧妙な幾何学的方法があるかもしれません。もちろん、輪郭線も滑らかにしたい。
あらゆる提案を歓迎します。これがよく知られた数値問題であることを願っています。私は C に慣れており、FORTRAN の実用的な知識を持っています。Matlab と R については、まったく無知です。
サンプルの配置場所については、ほぼ均等な間隔で計画していますが、地形がより興味深い場所でより多くのサンプルを取得します。たとえば、平野よりも山岳地帯をより密にサンプリングします。しかし、サンプリングに関していくつかの選択肢があることは間違いありません。唯一の問題は
探しているフィーチャを見つけるために、どのくらいの地形をマッピングする必要があるかはわかりません。
サンプルの採取には、10 分程度の適度な費用がかかります。そのため、100x100 グリッドのサンプリングには時間がかかる場合があります。
r - データに一致する曲線を見つける
x、yデータを取得し、それに曲線を適合させる非線形曲線適合ルーチン(おそらく、RまたはPythonで見つかる可能性が最も高いですが、他の言語にも対応しています)を探しています。
フィットさせたい式のタイプを文字列として指定できるはずです。
例:
私がこれから得られるのは、少なくとも定数(A、B、Cなど)の値であり、うまくいけば、試合の適合性に関する統計です。
これを行うための商用プログラムがありますが、私は最近、言語ライブラリで目的の表現に適合するのと同じくらい一般的なものを見つけることができると期待していました。SciPyの最適化機能でこれができるのではないかと思いますが、方程式を定義できるかどうかはわかりません。同様に、私はRで欲しいものを正確に見つけることができないようです。
私が探しているものはそこにありますか、それとも自分で転がす必要がありますか?それがそこにあるなら私はそれをするのが嫌いで、私はそれを見つけるのに苦労しています。
編集:LAB Fitから取得するよりも、プロセスをもう少し制御するためにこれを実行したいと思います。LABFitUIは恐ろしいものです。また、範囲を複数の部分に分割し、さまざまな曲線で範囲のさまざまな部分を表すことができるようにしたいと思います。結局、結果は線形補間でLUTを(速度的に)打ち負かすことができなければなりません。さもないと私は興味がありません。
現在の一連の問題では、trig関数またはexp()があり、それらを1秒あたり352,800回リアルタイムで実行する必要があります(CPUのごく一部しか使用しません)。そこで、曲線をプロットし、そのデータを使用してカーブフィッターを駆動し、より安価な近似値を取得します。昔はLUTがほとんどの場合解決策でしたが、最近ではメモリルックアップをスキップして近似を実行する方が速い場合があります。