問題タブ [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 投票する
1 に答える
8517 参照

matlab - MATLABOptimizationToolboxを使用した最小二乗円フィッティング

この論文に続いて最小二乗円フィッティングを実装しようとしています(申し訳ありませんが、公開できません)。この論文は、特定の点(Xi)と円上の対応する点(Xi')の間のユークリッド距離(Xi'')として幾何学的誤差を計算することにより、円を近似できると述べています。Xc(円の中心の座標のベクトル)とR(半径)の3つのパラメーターがあります。

サークルフィッティング 方程式

私は次のMATLABコードを思いつきました(画像に示されている球ではなく、円をフィットさせようとしていることに注意してください)。

ただし、フィッティングはあまり良くありません。適切なパラメーターベクトルで開始すると、アルゴリズムは最初のステップで終了します(したがって、あるべき場所に極小値があります)が、開始点を(ノイズのない円で)摂動させると、フィッティングは非常に大きなエラーで停止します。私は自分の実装で何かを見落としていると確信しています。

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

matlab - サイズの異なる2つの曲線(行列)の残差を計算するには?

数値的に計算された理論曲線と実験曲線(大量の実験点と言ったほうがよい)があります。最小二乗法によるモデリングの精度を確認するには、これら 2 つの曲線間の残差を計算する必要があります。これらのマトリックス (曲線) は、サイズが異なります。サイズの異なる 2 つの行列の残差の計算を提供する MATLAB の関数はありますか?

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

r - Rの非線形最小二乗内のスプライン

たとえば、次の形式のRの非線形最小二乗モデルを考えてみます。

(私の実際の問題にはいくつかの変数があり、外部関数はロジスティックではありませんが、もう少し複雑です。これはより単純ですが、これを実行できれば、私のケースはほぼすぐに続くはずです)

「アルファ+ベータ*x」という用語を(たとえば)自然な3次スプラインに置き換えたいと思います。

ロジスティック関数内で非線形関数を使用してサンプルデータを作成するためのコードを次に示します。

その周りのロジスティックを必要とせずに、私がlmにいる場合、線形項をスプライン項に簡単に置き換えることができます。したがって、次のような線形モデル:

その後になります

適合値の生成は簡単であり、(たとえば)rmsパッケージを使用して予測値を取得することは十分に簡単に思えます。

確かに、元のデータをそのlmベースのスプラインフィットでフィッティングすることはそれほど悪くはありませんが、ロジスティック関数内でそれが必要な理由があります(つまり、私の問題では同等です)。

nlsの問題は、すべてのパラメーターの名前を指定する必要があることです(1つのスプラインフィットの場合は(b1、...、b5)と呼び、別の変数の場合はc1、...、c6と呼びます。 -私はそれらのいくつかを作ることができる必要があります)。

非線形関数内の線形項をスプラインに置き換えることができるように、nlsに対応する式を生成するための合理的に適切な方法はありますか?

それを行うことができると私が理解できる唯一の方法は、少し厄介で不格好であり、たくさんのコードを書かずにうまく一般化することはできません。

明確にするために編集)この小さな問題については、もちろん手作業で行うことができます-nsによって生成された行列内のすべての変数の内積の式を書きます、パラメータのベクトルを掛けます。しかし、その後、他のすべての変数のスプラインごとに、また、いずれかのスプラインのdfを変更するたびに、またnsの代わりにcsを使用する場合は、用語ごとにすべてを書き出す必要があります。そして、いくつかの予測(/補間)を実行しようとすると、処理する必要のあるまったく新しい多数の問題が発生します。分析後の分析のために、何度も何度も、そして潜在的にはかなり多くのノットといくつかの変数に対してそれを続ける必要があります-そして私は個々の用語を書き出すよりももっときちんとした、簡単な方法があるのだろうかと思いました、大量のコードを書く必要はありません。私はそれを行うためのかなり強気な方法を見ることができますが、それは正しくするためにかなりのコードを必要としますが、Rであるため、はるかにきちんとした方法(またはおそらく3つまたは4つのきちんとした方法)があると思います' s単に私を避けています。したがって、質問。

過去に誰かがこのようなことをかなりいい方法でやっているのを見たことがあると思いましたが、私の人生では今はそれを見つけることができません。私はそれを見つけるために何度も試しました。

[より具体的には、単純なモデルを見つけることができるかどうかを確認するために、各変数のいくつかの異なるスプラインのいずれかを試してみて、いくつかの可能性を試してみたいと思います。目的には十分です(ノイズは実際には非常に低いです。フィットのバイアスは、良好な滑らかな結果を達成するために問題ありませんが、ある程度までしかありません)。推論やデータマイニングに近づくものよりも、「優れた、解釈可能な、しかし適切なフィッティング関数を見つける」ことは、この問題の実際の問題ではありません。]

あるいは、これがgnmやASSIST、または他のパッケージの1つではるかに簡単な場合、それは有用な知識ですが、上記のトイプロブレムをどのように進めるかについてのいくつかの指針が役立ちます。

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

algorithm - 加重最小二乗 - 平面を 3D ポイント セットに適合

最小二乗法で平面を 3D 点セットに当てはめています。私はすでにそれを行うアルゴリズムを持っていますが、加重最小二乗法を使用するように変更したいと考えています。つまり、各ポイントに重みがあります (重みが大きいほど、平面をポイントに近づける必要があります)。

現在のアルゴリズム (重みなし) は次のようになります。

合計を計算します。

行列を作るより:

Ax = B を解くよりも、解の 3 つのコンポーネントは、当てはめられたプレーンの係数です...

それで、重みを使用するようにこれを変更する方法を教えてください。ありがとう!

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

python - Python での制約付き最小二乗推定

Scipy を使用して制約付き最小二乗推定を実行しようとしています(この機能は Matlab の関数で実装されてい(0,1)ます)。1LSQLIN

Python/Scipy を使用してこの計算を設定するためのヒントはありますか。を使用する必要があると思いますscipy.optimize.fmin_slsqp()が、どのパラメータを渡すべきか完全にはわかりません.[1]

助けてくれてありがとう、ニック

[1] のドキュメントの 1 つの例はfmin_slsqp、参照テキストなしで解析するのが少し難しいです。また、Scipy を使用するのは初めてです。

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

python - scipy最小二乗法での直交回帰フィッティング

scipy libのleastsqメソッドは、いくつかのデータに曲線を適合させます。そして、この方法は、このデータではY値がX引数に依存することを意味します。そして、Y軸の曲線とデータポイント間の最小距離を計算します(dy)

しかし、両方の軸(dyとdx)で最小距離を計算する必要がある場合はどうなりますか?

この計算を実装する方法はありますか?

1軸計算を使用する場合のコードのサンプルを次に示します。

最近scipy.odrライブラリを試しましたが、線形関数に対してのみ適切な結果が返されます。y = a * x ^ bのような他の関数の場合、間違った結果を返します。これが私がそれを使う方法です:

これは、望ましくない誤った結果を返し、一部の入力データでは実際に近くさえありません。たぶん、それを使用するいくつかの特別な方法があります、私は何を間違えますか?

0 投票する
0 に答える
194 参照

python - weave.inlineはscipy.optimize.leastsqと互換性がありませんか?

scipy.optimizeの「leastsq」関数を使用する関数最小化ルーチンを高速化しようとしています。つまり、私は次のことを行っています。

errfnは、残差を返す関数です。DfunはJacobian行列を返します。p0は初期パラメーターの推測です。純粋なnumpyでは、これは機能します。たとえば、myfn(またはDfun)を変更してweave.inlineを使用してCコードを組み込むと、weave.inlineコンパイラが機能しなくなります。関数を単独で呼び出すと、正しい値が返されます。コンパイラーが機能しなくなるのは、leastsq関数によって呼び出される場合のみです。ここで何が起こっているのか考えはありますか?以下は、weave.inlineの使用方法です。

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

c++ - カルマン、最小二乗、または

私が何を問いかけているのかを人々が理解できるようにするために、私はそれを完全に言い換えることにしました。これで解決することを願っています。

私は 1 秒の速度で GPS データ (緯度/経度) を収集しています。このデータは 100% 正確ではない可能性があり、時折 (1 つ以上) マークから大きく外れているデータポイントがあることを理解した上で、かなり正確なコースを決定するために外れ値ポイントを削除する最も適切な方法と、車の速度?この車両は、時速 0 ~ 60 マイルの範囲で、通常は直線で移動できますが、急な方向転換 (加重値?) が発生しやすい場合もあります。

混乱を招いたこと、さらにはすでに配布された提案を理解できなかったことをお詫び申し上げます。

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

python - 初期条件がパラメーターとして渡されると、ODE を python leastsq でフィッティングすると、キャスト エラーが発生します。

scipy の leastsq 関数を使用して ODE モデルに適合させようとしている一連のデータがあります。私の ODE にはパラメーターbetagammaがあるため、たとえば次のようになります。

アイデアは、ODE の私のシステムの数値積分がデータを最もよく近似するようにbetaを見つけることです。gamma初期条件のすべてのポイントを知っていれば、leastsq を使用してこれをうまく行うことができますy0

今、私は同じことをしようとしていますがy0、追加のパラメーターとして のエントリの 1 つを渡します。ここで、Python と私は通信を停止します... 関数を実行して、leastsq に渡すパラメーターの最初のエントリが変数 R の初期条件になるようにしました。次のメッセージが表示されます。

これが私のコードです。実際には、7 つのパラメーターを持つ別のオードを適合させ、一度に複数のデータセットに適合させたいため、この例に必要なものはもう少し複雑です。しかし、ここにもっと簡単なものを投稿したかったのです...どんな助けも大歓迎です! どうもありがとうございました!

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

math - 通常の最小二乗(OLS)の使用

私は方程式A * x = bを持っています

Aのサイズは行列サイズのnxm、xはmx 1、bはnx 1です 。Aには列よりも多くの行があります(n <m)。

私の未知数はAであり、n!= mであるため、Aには逆数がありません。私の知っているのは、2つのベクトルxbです。基本的に、 (A * x --b をゼロに近づけるAを見つけたいと思います。

最小二乗法は適切なようですが、私の教科書やウィキペディアのエントリに従わないようであるため、どのように進めるかはわかりません。通常、行列Aは既知です。OLSが適切でない場合、どうなりますか?特異値分解?繰り返しになりますが、ポインタをお願いします。私の線形代数はさびています。

これを実装できるようにしたいと思います(python / C)。読みやすいコードへのポインタ?