問題タブ [least-squares]

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 投票する
4 に答える
3081 参照

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値(信号強度)だけです...

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

python - 円弧の 3 次元点を円に合わせる (Python での回帰)

私はPythonに比較的慣れていません。私の問題は次のとおりです

2D 円弧を形成する任意の平面上にノイズの多いデータ ポイント (x、y、z) のセットがあります。これらの点を通る最適な円が返されます: 中心 (x、y、z)、半径、残差。

Python で scipy を使用してこの問題を解決するにはどうすればよいですか。これは、反復法を使用してコード全体を作成することで解決できました。しかし、Python で leastsq を使用して円を最適にフィットさせる方法はありますか? 次に、中心と半径を見つけますか?

ありがとうオワイス

0 投票する
3 に答える
14488 参照

c# - Levenberg–MarquardtアルゴリズムのC#実装

非線形最小二乗近似のためのLevenberg–MarquardtアルゴリズムのC#実装を探しています。

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

r - Implementing additional constraints in R's nnls

I am using the R interface to the Lawson-Hanson NNLS implementation of an algorithm for non-negative linear least squares that solves ||A x - b||^2 with the constraint that all elements of vector x ≥ 0. This works fine but I would like to add further constrains. Of interest to me are:

  1. Also minimize "energy" of x: ||A x - b||^2 + m*||x||^2

  2. Minimize "energy in the x derivative" ||A x - b||^2 + m ||H x||^2, where H is the sum of identity and a matrix with -1 on the first off-diagonal

  3. Most generally, minimize ||A x - b||^2 + m ||H x - f||^2.

Is there are a way to coax nnls to do this by some clever way of restating the problems 1.-3. Above? The reason I have hope for such a thing is that there is a little-throw away comment in a paper by Whitall et al (sorry for the paywall) that claims that "fortunately, NNLS can be adopted from the original form above to accommodate something in problem 3".

0 投票する
4 に答える
12024 参照

r - R の線形回帰の非線形プロットをプロットする

スムーズなプロットになるはずですが、何か問題があります。

ここに画像の説明を入力

ヘルパーの質問

  1. 線形回帰で使用されるアルゴリズムは何ですか?
  2. Ones 行列でプロットする最小二乗法を説明する
0 投票する
2 に答える
6327 参照

c# - C#代数線形ライブラリ

C#線形代数ライブラリを探しています。

最小二乗最小化を使用して同次線形システムを解いたくありません。

私はいくつかのライブラリを使おうと試みてきましたが、簡単な解決策を見つけることができました。

何かお勧めはありますか?

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

python - scipy.optimize.leastsq はどの最適化アルゴリズムを使用しますか?

scipy.optimize.leastsq に具体的に実装されている最適化アルゴリズムを知っている人はいますか?

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

r - k-Rの戻り値を意味します

Rでkmeans()関数を使用していますが、返されたオブジェクトのtotss属性とtot.withinss属性の違いは何でしょ。ドキュメントからは同じものを返しているようですが、私のデータセットに適用すると、totssの値は66213.63であり、tot.withinssの値は6893.50です。mroeの詳細に精通している場合はお知らせください。ありがとうございました!

マリウス。

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

algorithm - 指定された線関数からローリング ウィンドウの平方和距離を計算するアルゴリズム

直線関数 y = a*x + b(aとは既知の定数) が与えられると、直線とサンプルのウィンドウ(は最も古いサンプル、は最新のサンプル)bの間の平方和の距離を簡単に計算できます。(1, Y1), (2, Y2), ..., (n, Yn)Y1Yn

ローリング ウィンドウ (長さn) のこの値を計算するための高速なアルゴリズムが必要です。新しいサンプルが到着するたびにウィンドウ内のすべてのサンプルを再スキャンすることはできません。
明らかに、新しいサンプルがウィンドウに入り、古いサンプルがウィンドウから出るたびに、何らかの状態を保存して更新する必要があります。
サンプルがウィンドウを離れると、残りのサンプルの指数も変化することに注意してください。すべての Yx が Y(x-1) になります。したがって、サンプルがウィンドウを離れると、ウィンドウ内の他のすべてのサンプルが新しい合計に異なる値を与えます:(Yx - (a*(x-1) + b))^2の代わりに(Yx - (a*x + b))^2.

これを計算するための既知のアルゴリズムはありますか? そうでない場合は、1つ考えられますか?(一次線形近似のため、多少の誤差があっても問題ありません)。

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

python - 複数のデータ セットに対して最小二乗法をすばやく実行するにはどうすればよいですか?

多くのデータポイントにガウスフィットを適用しようとしています。たとえば、256 x 262144 のデータ配列があります。256 ポイントをガウス分布に適合させる必要があり、そのうち 262144 個が必要です。

ガウス分布のピークがデータ範囲外にある場合があるため、正確な平均結果を得るには、曲線近似が最適な方法です。ピークが範囲内にある場合でも、他のデータが範囲内にないため、カーブ フィッティングによりシグマが改善されます。

http://www.scipy.org/Cookbook/FittingDataのコードを使用して、1 つのデータ ポイントに対してこれを機能させています。

このアルゴリズムを繰り返してみましたが、これを解決するには 43 分程度かかるようです。これを並行して、またはより効率的に行うための、すでに書かれた高速な方法はありますか?

データは必ずしも 256x262144 であるとは限らないことに注意してください。

これを機能させるために使用するコードは

注: @JoeKington によって以下に投稿されたソリューションは素晴らしく、非常に高速に解決します。ただし、ガウスの重要な領域が適切な領域内にない限り、機能しないようです。ただし、これを使用する主な目的であるため、平均がまだ正確であるかどうかをテストする必要があります。 ガウス分布推定の分析