修理 指の数学: 最小二乗法。

指の数学: 最小二乗法。

  • プログラミング
    • チュートリアル

    導入

    私は数学者でありプログラマーです。 私が自分のキャリアの中で大きく飛躍したのは、次のことを言えるようになったときです。 "私には、さっぱりわからない!"今、私は科学の著名人に、彼が私に講義をしてくれている、その著名人が私に何を言っているのか理解できない、と言うのを恥ずかしがりません。 そしてそれはとても難しいことです。 確かに、自分の無知を認めるのは難しく、恥ずかしいことです。 自分が何かの基本を知らないことを認めたがる人がいるでしょうか? 私の職業上、出席しなければなりません 大量のプレゼンテーションや講義では、ほとんどの場合、何も理解できないので寝たいと思うことがあります。 しかし、私には理解できません。なぜなら、現在の科学の現状の大きな問題は数学にあるからです。 すべてのリスナーが数学のあらゆる分野に精通していることを前提としています (これは不合理です)。 デリバティブが何であるかを知らないことを認めるのは恥ずかしいことです (デリバティブが何であるかについては後で説明します)。

    しかし、私は掛け算が何であるかを知らないと言えるようになりました。 はい、リー代数上の部分代数が何であるかわかりません。 はい、なぜ人生に必要なのか分かりません 二次方程式。 ところで、ご存知であれば、お話ししたいことがあります。 数学はトリックの連続です。 数学者は大衆を混乱させ、脅迫しようとします。 混乱がないところには、評判も権威もありません。 はい、できるだけ抽象的な言語で話すことは名誉なことですが、それはまったくナンセンスです。

    デリバティブとは何か知っていますか? おそらく、差分比率の限界について教えていただけると思います。 サンクトペテルブルク州立大学で数学と力学を専攻した1年目に、ヴィクトル・ペトロヴィッチ・カヴィンは私にこう言った。 決定したある点における関数のテイラー級数の最初の項の係数としての導関数 (これは、導関数を使用せずにテイラー級数を決定するための別の体操でした)。 私はこの定義を長い間笑いながら、最終的にはそれが何なのかを理解しました。 導関数は、微分している関数が関数 y=x、y=x^2、y=x^3 にどれだけ似ているかを示す単純な尺度にすぎません。

    私は今、次のような学生たちに講義をさせていただくことを光栄に思っています。 恐れている数学。 もしあなたが数学を恐れているなら、私たちも同じ道を歩んでいます。 文章を読もうとしたときに、それが複雑すぎるように思えたら、すぐにそれがうまく書かれていないことを認識してください。 私は、正確さを失わずに「すぐに」議論できない数学の分野は一つもないと断言します。

    近い将来の課題: 線形二次レギュレータとは何かを理解するように生徒に割り当てました。 恥ずかしがらずに、3 分間かけてリンクをたどってください。 何も理解できないとしても、私たちは同じ道を進んでいます。 私(プロの数学者プログラマー)も何も理解できませんでした。 そして、これは「指一本で」理解できると断言します。 現時点ではそれが何なのかはわかりませんが、必ず解明できると確信しています。

    そこで、生徒たちが恐怖に駆られて私のところに駆け寄ってきて、線形二次レギュレーターは恐ろしいもので、一生かけても習得できないと言った後、私が生徒たちに行う最初の講義は次のとおりです。 メソッド 最小二乗 。 決められますか 一次方程式? この文章を読んでいるあなたは、おそらくそうではありません。

    したがって、2 つの点 (x0, y0)、(x1, y1)、たとえば (1,1) と (3,2) が与えられた場合、タスクはこれら 2 つの点を通る直線の方程式を見つけることです。

    この行には次のような等式が含まれている必要があります。

    ここで、アルファとベータは不明ですが、この線の 2 つの点がわかっています。

    この方程式は行列形式で書くことができます。

    ここで、叙情的な脱線をしなければなりません。マトリックスとは何でしょうか? 行列は 2 次元配列にすぎません。 これはデータを保存する方法であり、それ以上の意味を持たせる必要はありません。 特定の行列をどのように解釈するかは、まさに私たち次第です。 定期的にそれを線形マッピングとして、定期的に二次形式として、そして時には単にベクトルのセットとして解釈します。 これはすべて文脈の中で明らかになります。

    具体的な行列を記号表現に置き換えてみましょう。

    そうすれば (アルファ、ベータ) は簡単に見つかります。

    以前のデータについてより具体的に言うと、次のようになります。

    これにより、点 (1,1) と (3,2) を通過する次の直線の方程式が得られます。

    さて、ここですべてが明らかです。 を通る直線の方程式を求めてみましょう 三つ点: (x0,y0)、(x1,y1)、および (x2,y2):

    ああ、でも、2 つの未知数に対して 3 つの方程式があります。 標準的な数学者は、解決策はないと言うでしょう。 プログラマーは何と言うでしょうか? そして彼はまず、以前の方程式系を次の形式に書き直します。

    私たちの場合には ベクトル i、j、bは 3 次元であるため、(一般的な場合) このシステムには解決策がありません。 すべてのベクトル (alpha\*i + beta\*j) は、ベクトル (i, j) が広がる平面内にあります。 b がこの平面に属さない場合、解はありません (方程式内で等価性は達成できません)。 何をするか? 妥協点を探しましょう。 で表しましょう e(アルファ、ベータ)正確にどこまで平等を達成できていないのか:

    そして、このエラーを最小限に抑えようとします。

    なぜ正方形なのでしょうか?

    基準の最小値だけでなく、基準の 2 乗の最小値も探しています。 なぜ? 最小点自体は一致しており、正方形は滑らかな関数 (引数 (アルファ、ベータ) の二次関数) を与えますが、単純に長さは最小点で微分不可能な円錐形の関数を与えます。 ブル。 正方形の方が便利です。

    明らかに、ベクトルが eベクトルが広がる平面に直交する そして j.

    言い換えれば、すべての点からこの直線までの距離の二乗の合計が最小となるような直線を探しています。

    更新: ここで問題が発生しました。直線までの距離は、正投影ではなく垂直に測定する必要があります。 解説者は正しい。

    まったく別の言葉で言えば (慎重に、形式的には不十分ですが、明確にしておきます): すべての点のペアの間で可能なすべての線を取得し、すべての間の平均線を探します。

    もう 1 つの説明は簡単です。すべてのデータ ポイント (ここでは 3 つあります) と探している直線の間にバネを取り付けます。すると、平衡状態の直線がまさに探しているものになります。

    最小二次形式

    したがって、このベクトルを考えると、 b行列の列ベクトルがまたがる平面 (この場合は (x0,x1,x2) と (1,1,1))、ベクトルを探しています。 e最小長さの平方です。 明らかに、最小値はベクトルについてのみ達成可能です。 e、行列の列ベクトルが広がる平面に直交 :

    言い換えれば、次のようなベクトル x=(alpha, beta) を探しています。

    このベクトル x=(alpha, beta) は最小値であることを思い出してください。 二次関数||e(アルファ、ベータ)||^2:

    ここで、行列は二次形式としても解釈できることを覚えておくと便利です。たとえば、単位行列 ((1,0),(0,1)) は関数 x^2 + y^ として解釈できます。 2:

    二次形式

    この体操はすべて線形回帰という名前で知られています。

    ディリクレ境界条件を伴うラプラス方程式

    ここで最も単純な実際のタスクです。特定の三角形の表面があり、それを滑らかにする必要があります。 たとえば、私の顔のモデルをロードしてみましょう。

    元のコミットは利用可能です。 外部依存性を最小限に抑えるために、すでに Habré 上にあるソフトウェア レンダラーのコードを使用しました。 解決策について 線形システム私は OpenNL を使用しています。これは優れたソルバーですが、インストールが非常に困難です。2 つのファイル (.h+.c) をプロジェクトのあるフォルダーにコピーする必要があります。 すべての平滑化は次のコードで行われます。

    (int d=0; d<3; d++) { nlNewContext(); nlSolverParameteri(NL_NB_VARIABLES, verts.size()); nlSolverParameteri(NL_LEAST_SQUARES, NL_TRUE); nlBegin(NL_SYSTEM); nlBegin(NL_MATRIX); for (int i=0; i<(int)verts.size(); i++) { nlBegin(NL_ROW); nlCoefficient(i, 1); nlRightHandSide(verts[i][d]); nlEnd(NL_ROW); } for (unsigned int i=0; i&face = 顔[i]; for (int j=0; j<3; j++) { nlBegin(NL_ROW); nlCoefficient(face[ j ], 1); nlCoefficient(face[(j+1)%3], -1); nlEnd(NL_ROW); } } nlEnd(NL_MATRIX); nlEnd(NL_SYSTEM); nlSolve(); for (int i=0; i<(int)verts.size(); i++) { verts[i][d] = nlGetVariable(i); } }

    X、Y、Z 座標は分離可能であるため、個別にスムージングします。 つまり、モデルの頂点の数と同じ数の変数をそれぞれ持つ 3 つの線形方程式系を解きます。 行列 A の最初の n 行には 1 が行ごとに 1 つだけ含まれ、ベクトル b の最初の n 行には元のモデル座標が含まれます。 つまり、頂点の新しい位置と古い頂点の位置の間にスプリングを結びます。新しい位置が古い位置から離れすぎないようにする必要があります。

    行列 A (faces.size()*3 = メッシュ内のすべての三角形のエッジの数) の後続のすべての行には、1 が 1 回出現し、-1 が 1 回出現し、ベクトル b には反対のゼロ成分があります。 これは、三角形メッシュの各エッジにスプリングを配置することを意味します。すべてのエッジは、開始点と終了点として同じ頂点を取得しようとします。

    もう一度言いますが、すべての頂点は変数であり、元の位置から遠くに移動することはできませんが、同時に互いに似たものになろうとします。

    結果は次のとおりです。

    すべて問題ありません。モデルは非常に滑らかになっていますが、元のエッジからは離れています。 コードを少し変更してみましょう。

    For (int i=0; i<(int)verts.size(); i++) { float scale = border[i] ? 1000: 1; nlBegin(NL_ROW); nlCoefficient(i, scale); nlRightHandSide(scale*verts[i][d]); nlEnd(NL_ROW); }

    行列 A では、エッジにある頂点について、カテゴリ v_i = verts[i][d] からの行を追加するのではなく、1000*v_i = 1000*verts[i][d] を追加します。 それによって何が変わるのでしょうか? そして、これにより誤差の二次形式が変わります。 エッジで上部から 1 回ずれると、以前のように 1 単位ではなく、1000*1000 単位のコストがかかります。 つまり、極端な頂点に強いバネを掛けたので、解決策は他の頂点をより強く伸ばすことを優先します。 結果は次のとおりです。

    頂点間のバネの強さを 2 倍にしてみましょう。
    nlCoefficient(face[ j ], 2); nlCoefficient(face[(j+1)%3], -2);

    表面が滑らかになったのは当然です。

    そして今ではさらに100倍強くなりました:

    これは何ですか? ワイヤーリングを石鹸水に浸したと想像してください。 その結果、得られる石鹸膜は、境界線、つまりワイヤーリングに触れて、曲率をできるだけ小さくしようとします。 これはまさに、境界線を修正し、内側の滑らかな表面を求めることで得られたものです。 おめでとうございます。ディリクレ境界条件を使用してラプラス方程式を解きました。 かっこいいね? しかし実際には、1 つの連立一次方程式を解くだけで十分です。

    ポアソン方程式

    また素敵な名前を覚えておきましょう。

    次のような画像があるとします。

    誰にとっても良いように見えますが、私はその椅子が好きではありません。

    写真を半分に切ります。



    そして私は自分の手で椅子を選びます。

    次に、マスク内の白い部分をすべて画像の左側に移動し、同時に画像全体で、隣接する 2 つのピクセル間の差が、右側の 2 つの隣接するピクセル間の差と等しくなるようにします。写真:

    For (int i=0; i

    結果は次のとおりです。

    コードと画像が利用可能

    • チュートリアル

    導入

    私は数学者でありプログラマーです。 私が自分のキャリアの中で大きく飛躍したのは、次のことを言えるようになったときです。 "私には、さっぱりわからない!"今、私は科学の著名人に、彼が私に講義をしてくれている、その著名人が私に何を言っているのか理解できない、と言うのを恥ずかしがりません。 そしてそれはとても難しいことです。 確かに、自分の無知を認めるのは難しく、恥ずかしいことです。 自分が何かの基本を知らないことを認めたがる人がいるでしょうか? 私は職業柄、数多くのプレゼンテーションや講義に参加しなければなりませんが、ほとんどの場合、何も理解できずに寝ていたくなることは認めます。 しかし、私には理解できません。なぜなら、現在の科学の現状の大きな問題は数学にあるからです。 すべてのリスナーが数学のあらゆる分野に精通していることを前提としています (これは不合理です)。 デリバティブが何であるかを知らないことを認めるのは恥ずかしいことです (デリバティブが何であるかについては後で説明します)。

    しかし、私は掛け算が何であるかを知らないと言えるようになりました。 はい、リー代数上の部分代数が何であるかわかりません。 はい、なぜ二次方程式が人生に必要なのかわかりません。 ところで、ご存知であれば、お話ししたいことがあります。 数学はトリックの連続です。 数学者は大衆を混乱させ、脅迫しようとします。 混乱がないところには、評判も権威もありません。 はい、できるだけ抽象的な言語で話すことは名誉なことですが、それはまったくナンセンスです。

    デリバティブとは何か知っていますか? おそらく、差分比率の限界について教えていただけると思います。 サンクトペテルブルク州立大学で数学と力学を専攻した1年目に、ヴィクトル・ペトロヴィッチ・カヴィンは私にこう言った。 決定したある点における関数のテイラー級数の最初の項の係数としての導関数 (これは、導関数を使用せずにテイラー級数を決定するための別の体操でした)。 私はこの定義を長い間笑いながら、最終的にはそれが何なのかを理解しました。 導関数は、微分している関数が関数 y=x、y=x^2、y=x^3 にどれだけ似ているかを示す単純な尺度にすぎません。

    私は今、次のような学生たちに講義をさせていただくことを光栄に思っています。 恐れている数学。 もしあなたが数学を恐れているなら、私たちも同じ道を歩んでいます。 文章を読もうとしたときに、それが複雑すぎるように思えたら、すぐにそれがうまく書かれていないことを認識してください。 私は、正確さを失わずに「すぐに」議論できない数学の分野は一つもないと断言します。

    近い将来の課題: 線形二次レギュレータとは何かを理解するように生徒に割り当てました。 恥ずかしがらずに、3 分間かけてリンクをたどってください。 何も理解できないとしても、私たちは同じ道を進んでいます。 私(プロの数学者プログラマー)も何も理解できませんでした。 そして、これは「指一本で」理解できると断言します。 現時点ではそれが何なのかはわかりませんが、必ず解明できると確信しています。

    そこで、生徒たちが恐怖に駆られて私のところに駆け寄ってきて、線形二次レギュレーターは恐ろしいもので、一生かけても習得できないと言った後、私が生徒たちに行う最初の講義は次のとおりです。 最小二乗法。 一次方程式を解くことができますか? この文章を読んでいるあなたは、おそらくそうではないでしょう。

    したがって、2 つの点 (x0, y0)、(x1, y1)、たとえば (1,1) と (3,2) が与えられた場合、タスクはこれら 2 つの点を通る直線の方程式を見つけることです。

    この行には次のような等式が含まれている必要があります。

    ここで、アルファとベータは不明ですが、この線の 2 つの点がわかっています。

    この方程式は行列形式で書くことができます。

    ここで、叙情的な脱線をしなければなりません。マトリックスとは何でしょうか? 行列は 2 次元配列にすぎません。 これはデータを保存する方法であり、それ以上の意味を持たせる必要はありません。 特定の行列をどのように解釈するかは、まさに私たち次第です。 定期的にそれを線形マッピングとして、定期的に二次形式として、そして時には単にベクトルのセットとして解釈します。 これはすべて文脈の中で明らかになります。

    具体的な行列を記号表現に置き換えてみましょう。

    そうすれば (アルファ、ベータ) は簡単に見つかります。

    以前のデータについてより具体的に言うと、次のようになります。

    これにより、点 (1,1) と (3,2) を通過する次の直線の方程式が得られます。

    さて、ここですべてが明らかです。 を通る直線の方程式を求めてみましょう 三つ点: (x0,y0)、(x1,y1)、および (x2,y2):

    ああ、でも、2 つの未知数に対して 3 つの方程式があります。 標準的な数学者は、解決策はないと言うでしょう。 プログラマーは何と言うでしょうか? そして彼はまず、以前の方程式系を次の形式に書き直します。

    私たちの場合、ベクトル i、j、b は 3 次元であるため、(一般的な場合) このシステムには解決策がありません。 任意のベクトル (alpha\*i + beta\*j) は、ベクトル (i, j) が広がる平面内にあります。 b がこの平面に属さない場合、解はありません (方程式内で等価性は達成できません)。 何をするか? 妥協点を探しましょう。 で表しましょう e(アルファ、ベータ)正確にどこまで平等を達成できていないのか:

    そして、このエラーを最小限に抑えようとします。

    なぜ正方形なのでしょうか?

    基準の最小値だけでなく、基準の 2 乗の最小値も探しています。 なぜ? 最小点自体は一致しており、正方形は滑らかな関数 (引数 (アルファ、ベータ) の二次関数) を与えますが、単純に長さは最小点で微分不可能な円錐形の関数を与えます。 ブル。 正方形の方が便利です。

    明らかに、ベクトルが eベクトルが広がる平面に直交する そして j.

    言い換えれば、すべての点からこの直線までの距離の二乗の合計が最小となるような直線を探しています。

    更新: ここで問題が発生しました。直線までの距離は、正投影ではなく垂直に測定する必要があります。 この評論家は正しい。

    まったく別の言葉で言えば (慎重に、形式的には不十分ですが、明確にしておきます): すべての点のペアの間で可能なすべての線を取得し、すべての間の平均線を探します。

    もう 1 つの説明は簡単です。すべてのデータ ポイント (ここでは 3 つあります) と探している直線の間にバネを取り付けます。すると、平衡状態の直線がまさに探しているものになります。

    最小二次形式

    したがって、このベクトルを考えると、 b行列の列ベクトルがまたがる平面 (この場合は (x0,x1,x2) と (1,1,1))、ベクトルを探しています。 e最小長さの平方です。 明らかに、最小値はベクトルについてのみ達成可能です。 e、行列の列ベクトルが広がる平面に直交 :

    言い換えれば、次のようなベクトル x=(alpha, beta) を探しています。

    このベクトル x=(alpha, beta) は二次関数 ||e(alpha, beta)||^2 の最小値であることを思い出してください。

    ここで、行列は二次形式としても解釈できることを覚えておくと便利です。たとえば、単位行列 ((1,0),(0,1)) は関数 x^2 + y^ として解釈できます。 2:

    二次形式

    この体操はすべて線形回帰という名前で知られています。

    ディリクレ境界条件を伴うラプラス方程式

    ここで最も単純な実際のタスクです。特定の三角形の表面があり、それを滑らかにする必要があります。 たとえば、私の顔のモデルをロードしてみましょう。

    元のコミットは利用可能です。 外部依存性を最小限に抑えるために、すでに Habré 上にあるソフトウェア レンダラーのコードを使用しました。 線形システムを解くために、私は OpenNL を使用します。これは優れたソルバーですが、インストールが非常に困難です。2 つのファイル (.h+.c) をプロジェクトのあるフォルダーにコピーする必要があります。 すべての平滑化は次のコードで行われます。

    (int d=0; d<3; d++) { nlNewContext(); nlSolverParameteri(NL_NB_VARIABLES, verts.size()); nlSolverParameteri(NL_LEAST_SQUARES, NL_TRUE); nlBegin(NL_SYSTEM); nlBegin(NL_MATRIX); for (int i=0; i<(int)verts.size(); i++) { nlBegin(NL_ROW); nlCoefficient(i, 1); nlRightHandSide(verts[i][d]); nlEnd(NL_ROW); } for (unsigned int i=0; i&face = 顔[i]; for (int j=0; j<3; j++) { nlBegin(NL_ROW); nlCoefficient(face[ j ], 1); nlCoefficient(face[(j+1)%3], -1); nlEnd(NL_ROW); } } nlEnd(NL_MATRIX); nlEnd(NL_SYSTEM); nlSolve(); for (int i=0; i<(int)verts.size(); i++) { verts[i][d] = nlGetVariable(i); } }

    X、Y、Z 座標は分離可能であるため、個別にスムージングします。 つまり、モデルの頂点の数と同じ数の変数をそれぞれ持つ 3 つの線形方程式系を解きます。 行列 A の最初の n 行には 1 が行ごとに 1 つだけ含まれ、ベクトル b の最初の n 行には元のモデル座標が含まれます。 つまり、頂点の新しい位置と古い頂点の位置の間にスプリングを結びます。新しい位置が古い位置から離れすぎないようにする必要があります。

    行列 A (faces.size()*3 = メッシュ内のすべての三角形のエッジの数) の後続のすべての行には、1 が 1 回出現し、-1 が 1 回出現し、ベクトル b には反対のゼロ成分があります。 これは、三角形メッシュの各エッジにスプリングを配置することを意味します。すべてのエッジは、開始点と終了点として同じ頂点を取得しようとします。

    もう一度言いますが、すべての頂点は変数であり、元の位置から遠くに移動することはできませんが、同時に互いに似たものになろうとします。

    結果は次のとおりです。

    すべて問題ありません。モデルは非常に滑らかになっていますが、元のエッジからは離れています。 コードを少し変更してみましょう。

    For (int i=0; i<(int)verts.size(); i++) { float scale = border[i] ? 1000: 1; nlBegin(NL_ROW); nlCoefficient(i, scale); nlRightHandSide(scale*verts[i][d]); nlEnd(NL_ROW); }

    行列 A では、エッジにある頂点について、カテゴリ v_i = verts[i][d] からの行を追加するのではなく、1000*v_i = 1000*verts[i][d] を追加します。 それによって何が変わるのでしょうか? そして、これにより誤差の二次形式が変わります。 エッジで上部から 1 回ずれると、以前のように 1 単位ではなく、1000*1000 単位のコストがかかります。 つまり、極端な頂点に強いバネを掛けたので、解決策は他の頂点をより強く伸ばすことを優先します。 結果は次のとおりです。

    頂点間のバネの強さを 2 倍にしてみましょう。
    nlCoefficient(face[ j ], 2); nlCoefficient(face[(j+1)%3], -2);

    表面が滑らかになったのは当然です。

    そして今ではさらに100倍強くなりました:

    これは何ですか? ワイヤーリングを石鹸水に浸したと想像してください。 その結果、得られる石鹸膜は、境界線、つまりワイヤーリングに触れて、曲率をできるだけ小さくしようとします。 これはまさに、境界線を修正し、内側の滑らかな表面を求めることで得られたものです。 おめでとうございます。ディリクレ境界条件を使用してラプラス方程式を解きました。 かっこいいね? しかし実際には、1 つの連立一次方程式を解くだけで十分です。

    ポアソン方程式

    また素敵な名前を覚えておきましょう。

    次のような画像があるとします。

    誰にとっても良いように見えますが、私はその椅子が好きではありません。

    写真を半分に切ります。



    そして私は自分の手で椅子を選びます。

    次に、マスク内の白い部分をすべて画像の左側に移動し、同時に画像全体で、隣接する 2 つのピクセル間の差が、右側の 2 つの隣接するピクセル間の差と等しくなるようにします。写真:

    For (int i=0; i

    結果は次のとおりです。

    コードと画像が利用可能

    3. この方法を使用した関数の近似

    最小二乗

    最小二乗法は、実験結果を処理するときに使用されます。 近似 (近似値) 実験データ 分析式。 特定の種類のフォーミュラは、原則として物理的な理由から選択されます。 そのような式は次のようになります。

    その他。

    最小二乗法の本質は次のとおりです。 測定結果を表に示します。

    テーブル 4

    ×n

    yn

    (3.1)

    ここで、f - 既知の機能、 a 0 、a 1 、…、a m - 値を見つける必要がある未知の定数パラメータ。 最小二乗法では、条件が満たされる場合、関数 (3.1) の実験依存性への近似が最適であると見なされます。

    (3.2)

    あれは 金額 ある 実験依存性からの所望の分析関数の二乗偏差は最小限でなければなりません .

    関数に注意してください Q 呼ばれた 残留物。


    齟齬があったので、

    その場合は最小値があります。 いくつかの変数の関数を最小にするために必要な条件は、パラメーターに関するこの関数のすべての偏導関数がゼロに等しいことです。 したがって、近似関数(3.1)のパラメータの最適な値、つまり、次の値が得られる値を見つけます。 Q = Q (a 0 , a 1 , …, a m ) は最小限であり、連立方程式を解くことに帰着します。

    (3.3)

    最小二乗法には、次のような幾何学的な解釈が与えられます。指定されたタイプの無限のライン群の中から、実験点の縦座標と対応する点の縦座標の差の二乗の合計が求められる 1 つのラインが見つかります。この直線の方程式により が最小になります。

    一次関数のパラメータを求める

    実験データを一次関数で表すとします。

    次の値を選択する必要があります aとb 、その関数

    (3.4)

    最小限になります。 関数 (3.4) の最小値に必要な条件は、次の連立方程式に帰着します。

    変換後、2 つの未知数を含む 2 つの線形方程式系が得られます。

    (3.5)

    これを解決すると、パラメータの必要な値が見つかります aとb。

    二次関数のパラメータを求める

    近似関数が二次依存の場合

    次にそのパラメータ a、b、c 関数の最小条件から求められます。

    (3.6)

    関数 (3.6) の最小値の条件は、次の連立方程式に帰着します。


    変換後、3 つの未知数を含む 3 つの線形方程式系が得られます。

    (3.7)

    パラメーターの必要な値を見つけるソリューション a、b、c。

    。 実験の結果が次の値表になるとします。 x と y:

    テーブル 5

    はい、私

    0,705

    0,495

    0,426

    0,357

    0,368

    0,406

    0,549

    0,768

    実験データを一次関数および二次関数で近似する必要があります。

    解決。 近似関数のパラメータを見つけることは、連立一次方程式 (3.5) および (3.7) を解くことに帰着します。 この問題を解決するには、スプレッドシート プロセッサを使用します。エクセル。

    1. まずシート1とシート2を接続します。実験値を入力します。 x私と はい、私列に入れる A と B、2 行目から開始します (列見出しは 1 行目に配置します)。 次に、これらの列の合計を計算し、10 行目に配置します。

    C列~G列 計算と合計をそれぞれ配置します

    2. シートを分離しましょう。シート 1 の線形依存性とシート 2 の二次依存性についても同様の方法でさらに計算を実行します。

    3. 結果のテーブルの下で、係数の行列と自由項の列ベクトルを形成します。 次のアルゴリズムを使用して連立一次方程式を解いてみましょう。

    逆行列と乗算行列を計算するには、次を使用します。 マスター 機能と機能 モブラそして ムンニフェ.

    4. セル H2 のブロック内: H 9 得られた係数に基づいて計算します 近似値多項式はい、私 計算する.、ブロック I 2: I 9 – 偏差 ダイアイ = はい、私 経験値. - はい、私 計算する.,列 J – 残差:

    結果として得られるテーブルと、次を使用して構築されたテーブル チャートウィザードグラフを図 6、7、8 に示します。


    米。 6. 一次関数の係数を計算するための表、

    近似する実験データ。


    米。 7. 二次関数の係数を計算するためのテーブル、

    近似する実験データ。


    米。 8. 近似結果のグラフ表示

    一次関数と二次関数による実験データ。

    答え。 実験データは線形依存性によって近似されました y = 0,07881 バツ + 0,442262 残留物あり Q = 0,165167 と二次依存性 y = 3,115476 バツ 2 – 5,2175 バツ + 2,529631 残留物あり Q = 0,002103 .

    タスク。 テーブルで与えられる関数、一次関数、二次関数を近似します。

    表6

    №0

    バツ

    0,1

    0,2

    0,3

    0,4

    0,5

    0,6

    0,7

    0,8

    y

    3,030

    3,142

    3,358

    3,463

    3,772

    3,251

    3,170

    3,665

    1

    3,314

    3,278

    3,262

    3,292

    3,332

    3,397

    3,487

    3,563

    2

    1,045

    1,162

    1,264

    1,172

    1,070

    0,898

    0,656

    0,344

    3

    6,715

    6,735

    6,750

    6,741

    6,645

    6,639

    6,647

    6,612

    4

    2,325

    2,515

    2,638

    2,700

    2,696

    2,626

    2,491

    2,291

    5

    1.752

    1,762

    1,777

    1,797

    1,821

    1,850

    1,884

    1,944

    6

    1,924

    1,710

    1,525

    1,370

    1,264

    1,190

    1,148

    1,127

    7

    1,025

    1,144

    1,336

    1,419

    1,479

    1,530

    1,568

    1,248

    8

    5,785

    5,685

    5,605

    5,545

    5,505

    5,480

    5,495

    5,510

    9

    4,052

    4,092

    4,152

    4,234

    4,338

    4,468

    4,599

    最小二乗法回帰式のパラメータを推定するために使用されます。
    行数 (ソースデータ)

    特性間の確率的関係を研究する方法の 1 つは回帰分析です。
    回帰分析は、別の変数 (因子属性) の値がわかっている場合に、これを利用して確率変数 (結果属性) の平均値を求める回帰方程式の導出です。 これには次の手順が含まれます。

    1. 接続の形式 (分析回帰式の種類) の選択。
    2. 方程式パラメータの推定。
    3. 分析回帰式の品質の評価。
    ほとんどの場合、特徴の統計的関係を記述するために線形形式が使用されます。 線形関係への焦点は、パラメータの明確な経済的解釈、変数の変動の制限、およびほとんどの場合、計算を実行するために非線形形式の関係が (対数または変数の置換によって) 線形形式に変換されるという事実によって説明されます。 。
    線形ペア関係の場合、回帰方程式は y i =a+b・x i +u i の形式になります。 この式のパラメータ a と b は、統計的な観測データ x と y から推定されます。 このような評価の結果は次の方程式になります。 ここで、 はパラメータ a および b の推定値、 は回帰式から得られる結果の属性 (変数) の値 (計算値) です。

    パラメータを推定するために最もよく使用されます 最小二乗法 (LSM)。
    最小二乗法は、回帰式のパラメータの最適な (一貫性があり、効率的で、不偏の) 推定値を提供します。 ただし、ランダム項 (u) と独立変数 (x) に関して特定の仮定が満たされる場合に限ります (OLS の仮定を参照)。

    最小二乗法を使用して線形対方程式のパラメータを推定する問題は次のとおりです。計算値から得られる特性の実際の値 - y i - の二乗偏差の合計が最小となるパラメータの推定値 、 を取得します。
    正式には OLS 基準次のように書くことができます: .

    最小二乗法の分類

    1. 最小二乗法。
    2. 最尤法 (通常の古典的線形回帰モデルの場合、回帰残差の正規性が仮定されます)。
    3. 一般化最小二乗 OLS 法は、誤差の自己相関の場合と不均一分散の場合に使用されます。
    4. 重み付き最小二乗法 (不均一分散残差を持つ OLS の特殊なケース)。

    要点を説明しましょう グラフィックによる古典的な最小二乗法。 これを行うために、観測データ (x i, y i, i=1;n) に基づいて直交座標系で散布図を作成します (このような散布図は相関場と呼ばれます)。 相関フィールドの点に最も近い直線を選択してみましょう。 最小二乗法によれば、相関フィールドの点とこの直線の間の垂直距離の二乗和が最小になるように直線が選択されます。

    この問題の数学的表記: .
    y i と x i =1...n の値は既知です。これらは観測データです。 S 関数では、これらは定数を表します。 この関数の変数は、パラメーターの必要な推定値です ( 、 、 )。 2 つの変数の関数の最小値を見つけるには、各パラメーターについてこの関数の偏導関数を計算し、それらをゼロに等しくする必要があります。 .
    その結果、2 つの正規一次方程式からなる系が得られます。
    この系を解くと、必要なパラメータ推定値がわかります。

    回帰式のパラメータの計算が正しいかどうかは、金額を比較することで確認できます(計算の四捨五入により多少の誤差が生じる場合があります)。
    パラメーターの推定値を計算するには、表 1 を作成します。
    回帰係数 b の符号は、関係の方向を示します (b >0 の場合、関係は直接的であり、b の場合)。<0, то связь обратная). Величина b показывает на сколько единиц изменится в среднем признак-результат -y при изменении признака-фактора - х на 1 единицу своего измерения.
    正式には、パラメータ a の値は、x が 0 に等しい y の平均値です。 属性因子がゼロ値を持たず、ゼロ値を持つことができない場合、パラメータ a の上記の解釈は意味を持ちません。

    特性間の関係の近さを評価する 線形ペア相関係数 - r x,y を使用して実行されます。 次の式を使用して計算できます。 。 さらに、線形ペアの相関係数は回帰係数 b を通じて決定できます。 .
    線形ペア相関係数の許容値の範囲は –1 ~ +1 です。 相関係数の符号は、関係の方向を示します。 r x, y >0 の場合、接続は直接です。 r x、y の場合<0, то связь обратная.
    この係数の大きさが 1 に近い場合、特性間の関係はかなり線形に近いものとして解釈できます。 そのモジュールが 1 ê r x , y ê =1 に等しい場合、特性間の関係は関数線形です。 特徴 x と y が線形独立している場合、r x,y は 0 に近づきます。
    r x,y を計算するには、表 1 を使用することもできます。

    表1

    N 件の観察x iはい、私x i ∙y i
    1 ×1y1x 1 y 1
    2 ×2y2x 2 y 2
    ...
    n×nyn×××××
    列の合計∑x∑y∑xy
    平均値
    結果として得られる回帰式の品質を評価するには、理論的な決定係数 - R 2 yx を計算します。

    ,
    ここで、d 2 は回帰式で説明される y の分散です。
    e 2 - y の残差 (回帰式では説明できない) 分散。
    s 2 y - y の合計 (合計) 分散。
    決定係数は、全体の変動 (分散) y における、回帰 (したがって係数 x) によって説明される、結果として得られる属性 y の変動 (分散) の割合を特徴付けます。 決定係数 R 2 yx は 0 から 1 までの値を取ります。 したがって、値 1-R 2 yx は、モデルおよび仕様誤差で考慮されていない他の要因の影響によって引き起こされる分散 y の割合を特徴付けます。
    スチームルームで 線形回帰R 2 yx=r 2 yx。

    これは、科学や実践活動のさまざまな分野で最も広く応用されています。 これには、物理​​学、化学、生物学、経済学、社会学、心理学などが考えられます。 運命の意志で、私はしばしば経済に対処しなければならないので、今日はあなたのために、と呼ばれる素晴らしい国への旅行を手配します。 計量経済学=) ...欲しくないわけがない?! そこはとても良いことです。あとは決心をするだけです。 ...しかし、おそらくあなたが間違いなく望んでいることは、問題の解決方法を学ぶことです。 最小二乗法。 そして、特に勤勉な読者は、正確に解決できるだけでなく、非常に早く解決できるようになります ;-) まず最初に 問題の一般的な説明+ 付随する例:

    ある分野において、定量的な表現を持つ指標を研究するとします。 同時に、指標が指標に依存すると考える十分な理由があります。 この仮定は、科学的な仮説である場合もあれば、基本的な常識に基づいている場合もあります。 ただし、科学のことは脇に置いて、もっと食欲をそそる分野、つまり食料品店を探索してみましょう。 で表しましょう:

    – 食料品店の小売り面積、平方メートル、
    – 食料品店の年間売上高、100万ルーブル。

    店舗面積が大きければ大きいほど、ほとんどの場合、売上高も大きくなるのは明らかです。

    観察/実験/計算/タンバリンダンスを実行した後、自由に使える数値データがあると仮定します。

    食料品店の場合、すべてが明らかだと思います。 - これは 1 番目の店舗の面積、 - その年間売上高、 - 2 番目の店舗の面積、 - 年間売上高など。 ちなみに、機密資料にアクセスする必要はまったくありません。取引高のかなり正確な評価は、次の方法で取得できます。 数学的統計。 ただし、気を散らさないようにしましょう。商業スパイコースはすでに支払い済みです =)

    表形式のデータは、ポイントの形式で記述し、使い慣れた形式で表現することもできます。 デカルト座標系 .

    重要な質問に答えてみましょう。 定性調査には何点必要ですか?

    大きければ大きいほどいい。 最小許容セットは 5 ~ 6 点で構成されます。 また、データ量が少ない場合には、「異常な」結果をサンプルに含めることができません。 したがって、たとえば、小規模なエリート店は「その同僚」よりも桁違いに多くの収入を得ている可能性があり、それによって、見つける必要がある一般的なパターンが歪められてしまうのです。

    非常に簡単に言うと、関数を選択する必要があります。 スケジュールポイントのできるだけ近くを通過する 。 この関数は呼び出されます 近似する (近似値 - 近似値)または 理論関数 。 一般的に言えば、ここでは明らかな「候補」がすぐに現れます。それは、グラフがすべての点を通過する高次多項式です。 しかし、このオプションは複雑であり、単純に間違っていることがよくあります。 (グラフは常に「ループ」し、主要な傾向をほとんど反映していないため).

    したがって、求められる関数は非常に単純であると同時に、依存関係を適切に反映している必要があります。 ご想像のとおり、このような関数を見つけるためのメソッドの 1 つは、 最小二乗法。 まず、その本質を一般的に見てみましょう。 いくつかの関数を実験データに近似させます。


    この近似の精度を評価するにはどうすればよいでしょうか? 実験値と関数値の差(偏差)も計算してみましょう。 (私たちは絵を勉強します)。 最初に思い浮かぶのは、その合計がどれくらい大きいかを見積もることですが、問題はその差がマイナスになる可能性があることです。 (例えば、 ) そして、そのような合計の結果としての偏差は互いに打ち消し合います。 したがって、近似の精度の推定値として、次の合計が求められます。 モジュール偏差:

    または折りたたまれた状態: (知らない人のために説明します: – これは合計アイコンです、そして – 1 から までの値を取る補助「カウンター」変数です).

    実験点を異なる関数で近似すると、異なる値が得られます。明らかに、この合計が小さいほど、その関数はより正確です。

    そのようなメソッドが存在し、それは呼ばれます 最小弾性法。 しかし、実際にはそれははるかに普及しています 最小二乗法、可能性のある負の値はモジュールによってではなく、偏差を二乗することによって除去されます。

    、その後、偏差の二乗和が次のような関数を選択することを目的としています。 できるだけ小さいものでした。 実際、これがメソッドの名前の由来です。

    ここで、別の重要な点に戻ります。上で述べたように、選択された関数は非常に単純である必要がありますが、そのような関数も多数あります。 線形 , 双曲線, 指数関数的, 対数, 二次関数 等 そしてもちろん、ここではすぐに「活動領域を縮小」したいと思います。 研究にはどのクラスの関数を選択すればよいですか? 原始的だが効果的なテクニック:

    – 最も簡単な方法は点を描くことです 図面上でその位置を分析します。 直線で走る傾向がある場合は、次の点を探す必要があります。 直線の方程式 最適な値と 。 言い換えれば、タスクは、偏差の二乗和が最小になるような SUCH 係数を見つけることです。

    たとえば、点が次のような位置にある場合、 誇張の場合、線形関数の近似が不十分であることは明らかです。 この場合、双曲線方程式の最も「有利な」係数を探します。 – 平方和が最小になるもの .

    どちらの場合も、次のことについて話していることに注意してください。 2 つの変数の関数、その引数は 検索された依存関係パラメーター:

    そして基本的に、標準的な問題を解決する必要があります。 2 変数の最小関数.

    例を思い出してください。「店舗」ポイントは直線上に配置される傾向があり、次のことを信じる十分な理由があるとします。 線形依存性小売スペースからの売上高。 偏差の二乗和が次のようになるような係数「a」と「be」を見つけてみましょう。 一番小さかったです。 すべてはいつも通りです - まずは 1階偏導関数。 によると 直線性の法則合計アイコンのすぐ下で区別できます。

    この情報をエッセイや定期レポートに使用したい場合は、このような詳細な計算がいくつかの場所に記載されている情報源リストのリンクを参照してください。

    標準システムを作成しましょう。

    各式を「2」で減らし、さらに合計を「分解」します。

    注記 : 合計アイコンを超えて「a」と「be」が取り出せる理由を独自に分析します。 ちなみに、正式にはこれは合計で行うことができます

    システムを「応用」形式で書き直してみましょう。

    その後、問題を解決するためのアルゴリズムが現れ始めます。

    点の座標はわかっていますか? 私たちは知っています。 金額 見つけられるでしょうか? 簡単に。 最も単純なものを作りましょう 2 つの未知数における 2 つの線形方程式系(「a」と「be」)。 たとえば、次のようなシステムを解決します。 クレーマー法、その結果として静止点が得られます。 チェック中 極値の十分条件、この時点で関数が 正確に届く 最小。 このチェックには追加の計算が含まれるため、舞台裏に残しておきます。 (必要に応じて、不足しているフレームを表示できます)。 最終的な結論は次のとおりです。

    関数 一番いい方法 (少なくとも他の線形関数と比較して)実験ポイントを近づける 。 大まかに言えば、そのグラフはこれらの点のできるだけ近くを通過します。 伝統的に 計量経済学結果の近似関数も呼ば​​れます 一対の線形回帰式 .

    検討中の問題は実用上非常に重要です。 この例の状況では、式は次のようになります。 取引高を予測できます (「イグレック」)店舗は何らかの値の販売面積を持っています (「x」の何らかの意味)。 はい、結果として得られる予測は単なる予測ですが、多くの場合、非常に正確であることが判明します。

    難しいことは何もないので、「実数」の問題を 1 つだけ分析します。すべての計算は 7 年生から 8 年生の学校のカリキュラムのレベルです。 95% のケースでは、一次関数だけを見つけるように求められますが、記事の最後で、最適な双曲線、指数関数、およびその他の関数の方程式を見つけることはそれほど難しくないことを示します。

    実際、残っているのは、約束された特典を配布することだけです。そうすれば、そのような例題を正確に解決できるだけでなく、迅速に解決できるようになります。 私たちはこの規格を注意深く研究しています。

    タスク

    2 つの指標間の関係を研究した結果、次の数値のペアが得られました。

    最小二乗法を使用して、経験的な値に最もよく近似する一次関数を見つけます。 (経験者)データ。 実験点を構築するための図面と、デカルト直交座標系の近似関数のグラフを作成します。 。 経験値と理論値の間の偏差の二乗和を求めます。 機能が改善されるかどうかを確認する (最小二乗法の観点から)実験ポイントを近づけます。

    「x」の意味は自然なものであり、これには特有の意味のある意味があることに注意してください。これについては後ほど説明します。 もちろん、小数にすることもできます。 また、特定のタスクの内容によっては、「X」と「ゲーム」の両方の値が完全または部分的にマイナスになる場合があります。 さて、私たちには「顔の見えない」任務が与えられ、それを始めます 解決:

    システムの解として最適な関数の係数を見つけます。

    よりコンパクトに記録するために、「カウンター」変数は省略できます。これは、合計が 1 から まで実行されることがすでに明らかであるためです。

    必要な金額を表形式で計算すると便利です。


    計算は微電卓でも実行できますが、Excel を使用した方が速く、エラーも発生しないため、はるかに優れています。 短いビデオを見る:

    したがって、次のようになります。 システム:

    ここで、2 番目の式に 3 を掛けて、 最初の式から項ごとに 2 番目の式を減算します。。 しかし、これは幸運です。実際には、システムは贈り物ではないことが多く、そのような場合にはそれが節約になります。 クレーマー法:
    これは、システムに独自のソリューションがあることを意味します。

    確認しよう。 そうしたくないのはわかりますが、絶対に見逃せないミスをなぜスキップするのでしょうか? 見つかった解をシステムの各方程式の左辺に代入してみましょう。

    対応する方程式の右辺が得られます。これは、システムが正しく解決されたことを意味します。

    したがって、必要な近似関数は次のようになります。 – から すべての線形関数実験データを最もよく近似するのは彼女です。

    とは異なり 真っ直ぐ 店舗の売上高の面積への依存性。検出された依存性は次のとおりです。 逆行する (原則「多ければ多いほど少ない」)、そしてこの事実は否定的な意見によってすぐに明らかになります。 スロープ。 関数 特定のインジケーターが 1 単位増加すると、依存するインジケーターの値が減少することを示します 平均 0.65単位ずつ。 よく言われるように、ソバの価格が高くなると、ソバは売れなくなります。

    近似関数のグラフをプロットするには、その 2 つの値を見つけます。

    そして描画を実行します。


    構築された直線を次のように呼びます。 トレンドライン (つまり、直線的な傾向線。つまり、一般的な場合、傾向は必ずしも直線であるとは限りません)。 「トレンドに乗る」という表現は誰もがよく知っている言葉であり、この言葉について補足する必要はないと思います。

    偏差の二乗和を計算してみましょう 経験値と理論値の間。 幾何学的には、これは「ラズベリー」セグメントの長さの二乗の合計です。 (そのうちの2つは小さすぎて見えません).

    計算を表にまとめてみましょう。


    繰り返しになりますが、念のために手動で行うこともできます。最初の点については例を示します。

    しかし、すでに知られている方法でそれを行う方がはるかに効果的です。

    もう一度繰り返します。 得られた結果にはどのような意味があるのでしょうか?から すべての線形関数 y関数 インジケーターは最小です。つまり、そのファミリーの中で最良の近似値です。 ちなみに、この問題の最後の疑問は偶然ではありません。提案された指数関数が次の場合はどうなるでしょうか。 実験点を近づけた方が良いでしょうか?

    対応する偏差の二乗和を見つけてみましょう。区別するために、それらを文字「イプシロン」で示します。 テクニックは全く同じです:


    もう一度、念のため、最初の点の計算をします。

    Excelでは標準関数を使用します 経験値 (構文は Excel ヘルプにあります).

    結論: 、これは、指数関数が実験点を直線よりも悪く近似していることを意味します。 .

    ただし、ここで「さらに悪い」ということに注意してください。 まだという意味ではない、 なにが問題ですか。 今、私はこの指数関数のグラフを構築しました - そしてそれはまた点の近くを通過します - 分析的な研究がなければ、どの関数がより正確であるかを言うのは難しいほどです。

    これで解決策は終わり、議論の自然値の問題に戻ります。 さまざまな研究 (通常は経済学または社会学) では、月、年、またはその他の等しい時間間隔を表すために自然な「X」が使用されます。 たとえば、次の問題を考えてみましょう。



    サイトの新着情報

    >

    最も人気のある