LeastSquares

LeastSquares[m,b]

行列方程式 m.x==b について線形最小二乗問題を解く x を与える.

LeastSquares[a,b]

配列方程式 a.x==b についての線形最小二乗問題を解く x を求める.

詳細とオプション

  • LeastSquares[m,b]は,Norm[m.x-b]を最小にするベクトル x を与える.
  • Length[x]==MatrixRank[m]の場合にのみ,ベクトル x は,この最小化によって一意的に決定される.
  • 引数 b は行列でもよい.その場合,最小二乗による最小化は,Norm[m.x-b,"Frobenius"]を最小化する x である b 中の各列について別々に行われる.
  • LeastSquaresは数値行列にも記号行列にも使うことができ,SparseArrayオブジェクトにも使うことができる.
  • LeastSquares[a,b]は,n1××nk×m 配列 an1××nk×d1××dl 配列 b に対して m×d1××dl 配列 x を返すが,これはNorm[Flatten[a.x-b]]を最小化する.
  • オプションMethodmethod を使って使用するLeastSquaresのメソッドが指定できる. 以下は,method の可能な設定である.
  • Automaticメソッドを自動選択する
    "Direct"密または疎な行列に直接法を使う
    "IterativeRefinement"反復改良法を使って密な行列についてのよりよい解を得る
    "LSQR"機械精度数の密または疎な行列にLSQR反復法を使う
    "Krylov"機械精度数の疎な行列に反復法を使う

例題

すべて開くすべて閉じる

  (2)

簡単な最小二乗問題を解く:

TemplateBox[{{{m, ., {{, {x, ,, y}, }}}, -, b}}, Norm]を最小にするを求める:

LeastSquaresを使ってを最小にする:

一般的な最小化と比較する:

には解がないので,は最善の近似解とみなすことができるかもしれない:

スコープ  (12)

基本的な用法  (7)

機械精度行列の最小二乗を求める:

複素行列の最小二乗:

LeastSquaresを厳密な非正方行列に使用する:

任意精度行列の最小二乗:

LeastSquaresを記号行列に使う:

大きい数値行列の最小二乗は効率的に計算できる:

LeastSquares[m,b]b は行列でもよい:

結果の各列は b 中の対応する列を入力として使って求まった解に等しい:

特殊行列  (4)

疎な行列についての最小二乗問題を解く:

構造化行列についての最小二乗問題を解く:

異なるタイプの行列構造を使う:

LeastSquares[IdentityMatrix[n],b]はベクトル を与える:

HilbertMatrixの最小二乗:

配列  (1)

2×3×4 配列 と2×3×5×6配列 の最小二乗問題を解く:

結果は4×5×6配列である:

オプション  (1)

Tolerance  (1)

m は20×20のヒルベルト(Hilbert)行列であり,bm.x==b の解が分かっているようなベクトルである:

デフォルトの許容範囲では,数値の丸めは限られており誤差が分配される:

Tolerance->0とすると,数値の丸めで法外な誤差が導入される:

高めの許容範囲を指定すると剰余は大きくなるが丸め誤差が小さくなる:

アプリケーション  (9)

最小二乗の幾何学  (4)

LeastSquares[m,b]の解を求めることと理解できる.ただし, の列空間への の正射影である.次の について考える:

の列によってスパンされた空間についての直交基底を求める:

によってスパンされた空間への の正射影を計算する:

へのその射影 を可視化する:

を解く:

これはLeastSquaresが与える結果に等しい:

次の についてLeastSquares[m,b]LinearSolve[m,b]が返す答を比較説明する:

の列によってスパンされた空間の直交基底を求める:

行列の階数が列数より小さいのでゼロベクトルが返される:

によってスパンされた空間への の正射影を計算する:

を解く:

LeastSquaresが返す解を求める:

xxPerpは異なるが,m.x==m.xPerpなのでどちらも最小二乗問題を解く:

2つの解はNullSpace[m]の要素分だけ異なる:

線形独立列を持つ行列に行列射影演算子を使って,次の についてLeastSquares[m,b]を求める:

の列空間についての射影演算子は p=m.TemplateBox[{{(, {TemplateBox[{m}, Transpose, SyntaxForm -> SuperscriptBox], ., m}, )}}, Inverse].TemplateBox[{m}, Transpose]である:

そうすると,最小二乗問題の解は の唯一解になる:

LeastSquaresを使って確かめる:

次の について,LeastSquares[m,b]で求まった解とLinearSolve の正規方程式と一緒に使って求まった解を比較する:

LeastSquaresを使って解く:

LinearSolveと正規方程式 TemplateBox[{m}, Transpose].m=TemplateBox[{m}, Transpose].b を使って解く:

xxNormalは異なるが,m.x==m.xNormalなのでどちらも最小二乗問題を解く:

2つの解はNullSpace[m]の要素分だけ異なる:

曲線とパラメータのフィット  (5)

LeastSquaresを使ってデータに最もフィットする曲線が求められる.次のデータについて考える:

の座標をデータから抽出する:

TemplateBox[{{{m, ., {{, {a, ,, b}, }}}, -, y}}, Norm]の最小化が線 へのフィットになるように が列 と列 を持つとする:

線形最小二乗フィットについての係数 を得る:

Fitを使って係数を確かめる:

最良フィット曲線をデータとともにプロットする:

次のデータに最もフィットする放物線を求める:

の座標をデータから抽出する:

TemplateBox[{{{m, ., {{, {a, ,, b, ,, c}, }}}, -, y}}, Norm]の最小化が へのフィットになるように が列 を持つものとする:

最小二乗フィットの係数 を得る:

Fitを使って係数を確認する:

最もフィットする曲線をデータとともにプロットする:

健康な子供の最高血圧 (水銀柱ミリメートル)と体重は (ポンド)はほぼ方程式 の関係にある.次の実験的なデータ点を使って体重が100ポンドの健康な子供の最高血圧を推定する:

DesignMatrixを使って列 を持つ行列を構築する:

データから の値を抽出する:

の最小二乗解:

パラメータをモデルに代入する:

体重が100ポンドの子供の期待される最高血圧は約TemplateBox[{108, "mmHg", millimeters of mercury, "MillimetersOfMercury"}, QuantityTF]である:

最もフィットする曲線とデータをプロットする:

ケプラー(Kepler)の第1法則によると,彗星の軌道は を満足する.ただし, は定数で は離心率である.離心率は軌道タイプを決定する.なら楕円で なら放物線,なら双曲線である.次の観測データを使って彗星の軌道タイプを決定し,における太陽からの距離を予測する:

および を求めるために,まずDesignMatrixを使って列がである行列を作成する:

LeastSquaresを使って計画行列からの における誤差を最小にする を求める:

なので軌道は楕円で の各値について の一意の値が存在する:

で関数を評価すると予測距離が約TemplateBox[{1.36, "au", astronomical units, "AstronomicalUnit"}, QuantityTF]であることが分かる:

次のデータについて考える:

の座標をデータから抽出する:

区間[t-2,t+2]をサポートする t を中心とする三次基底関数を定義する:

0, 1, ..., 10を中心とする基底関数のための疎な計画行列を設定する:

最小二乗問題を解く:

最もフィットする区分三次方程式のとデータを可視化する:

特性と関係  (12)

m.x==b が解ける場合,LeastSquaresLinearSolveと等価である:

x=LeastSquares[m,b]nNullSpace[m]にあるなら,x+n もまた最小二乗解である:

LeastSquares[m,b]を解く.ただし, の列への正射影である:

この特定の行列には自明な零空間があるため,等式は保証された:

が実数値なら,x=LeastSquares[m,b]は正規方程式 TemplateBox[{m}, Transpose].m.x=TemplateBox[{m}, Transpose].b に従う:

複素数値の行列については,方程式は TemplateBox[{m}, ConjugateTranspose].m.x=TemplateBox[{m}, ConjugateTranspose].b である:

x==LeastSquares[m,b]なら,m.x-bNullSpace[ConjugateTranspose[m]]にある:

零空間は二次元である:

m.ls-b は,予想通り,2つのベクトルのスパン内にある:

LeastSquaresPseudoInverseはどちらも最小二乗問題を解くために使うことができる:

LeastSquaresQRDecompositionはどちらも最小二乗問題を解くために使うことができる:

m を空の零空間がある行列とする:

LeastSquares[m,b]はベクトル b についてはArgMin[Norm[m.x-b],x]に等しい:

これはまたArgMin[Norm[m.x-b,"Frobenius"],x]とも等価である:

m を空の零空間がある行列とする:

LeastSquaresは行列 b についてはArgMin[Norm[m.x-b,"Frobenius"],x]に等しい:

b が行列なら,LeastSquares[m,b]の各列は b の対応する列についての結果である:

m は5×2行列で,b は長さ5 のベクトルである:

最小二乗問題を解く:

これはのミニマイザである:

これは,点までの最小二乗距離を持つ線の係数も与える:

LeastSquaresは正規誤差を含む線形モデルのパラメータ推定を与える:

LinearModelFitはモデルをフィットし,フィットに関する追加的な情報を与える:

パラメータ推定:

追加的な結果を抽出する:

Wolfram Research (2007), LeastSquares, Wolfram言語関数, https://reference.wolfram.com/language/ref/LeastSquares.html (2024年に更新).

テキスト

Wolfram Research (2007), LeastSquares, Wolfram言語関数, https://reference.wolfram.com/language/ref/LeastSquares.html (2024年に更新).

CMS

Wolfram Language. 2007. "LeastSquares." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2024. https://reference.wolfram.com/language/ref/LeastSquares.html.

APA

Wolfram Language. (2007). LeastSquares. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/LeastSquares.html

BibTeX

@misc{reference.wolfram_2024_leastsquares, author="Wolfram Research", title="{LeastSquares}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/LeastSquares.html}", note=[Accessed: 22-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_leastsquares, organization={Wolfram Research}, title={LeastSquares}, year={2024}, url={https://reference.wolfram.com/language/ref/LeastSquares.html}, note=[Accessed: 22-November-2024 ]}