コンピュータ機械工学

第9回 近似法

9.1 概要

多数のデータの集合の傾向を、ノイズなどの影響を考慮して方程式で表すことを近似法という。
補間法と異なることに注意せよ。
数学的には、最小二乗法に基づいている。

9.2 最小二乗法

最小二乗法は、(x1,y1), ・・・, (xn, yn) というn個のデータ点が与えられたとき、これらを近似する方程式として
というm次多項式 (m<n) を考え、この方程式と測定データとの距離の二乗和
が最小となるように係数 a0 ・・・ am を決めるものである。
距離の二乗和 E が最小となるとき、E を aj によって偏微分した値はすべての aj に対して 0 となる。すなわち、
a0について偏微分すると
同様に

9.3 プログラム・コーディング

以上より、近似多項式の係数a0 ・・・ am を求めるには、以下の (m+1)元の連立方程式を解けばよい。
この連立方程式をガウス消去法やガウス・ジョルダン法などを用いて解く。次の係数行列を作る。
この係数行列は斜め方向に同じものが並んでいるのですべての要素を計算しなくとも良いことがわかる。

注意

9.4 例題

9.5 課題 (提出〆切:金曜日22時)

  1. 最小二乗法は、独立変数のべき乗を説明変数とする重回帰分析の一種であるとみなすことができる。そこで、重回帰分析で用いられる決定係数 R2 によって、近似式の精度を確認する。
    計測データ measurement_data.csv を最小二乗法により近似し、決定係数を算出するプログラムを作成せよ。 決定係数 R2 の定義式は以下の通りであり、決定係数の値が1.0に近いほど近似式の精度がよいことを意味する。
    ここで、N はデータ点数、yi は計測値、y'i は推定値である。また は yi の平均値である。

    課題の進め方

    • 提出ファイルは"9_1.cpp"とすること。
    • ファイルには、1列目に入力 x のデータ、2列目に出力 y のデータが記録されている。ファイル名はプログラム内で指定すること。また、データ点数は事前には分かっていないという前提で動作するプログラムを作成すること。先週の課題を参考にするとよい。
    • 次数が 1~10 の場合について近似式を求め、その数式を用いて入力 x に対する推定値 y' を計算し、それらを元に 決定係数 R2 を算出せよ。画面には各次数に対する決定係数の計算結果を出力すること。
    • 実行例は以下の通りである。値は適当であるため注意すること。
    • Z:\compmech\ex9>9_1.exe
      
      ----- R^2 of the calculation results -----
      m = 1    0.189500
      m = 2    0.315845
      m = 3    0.545952
      m = 4    0.747170
      m = 5    0.995435
      m = 6    0.998336
      m = 7    0.998432
      m = 8    0.998434
      m = 9    0.998436
      m =10    0.998438
      
  2. 課題1で求めた決定係数は、近似曲線の次数が増えるほど1.0に近づいていく性質がある。そのため、重回帰分析で用いられる自由度調整済み決定係数 R2f により、次数の影響を考慮する。 課題1で作成したプログラムを改良し、自由度調整済み決定係数の値が最大となる近似式の次数を特定するプログラムを作成せよ。 自由度調整済み決定係数は次式で定義される。

    課題の進め方

    • 提出ファイルは"9_2.cpp"とすること。
    • 課題1と同じ計測データファイルを用いること。
    • 各次数に対する自由度調整済み決定係数の計算結果を画面に出力すること。
    • 実行例は以下の通りである。値は適当であるため注意すること。
    • Z:\compmech\ex9>9_2.exe
      
      ----- adjusted R^2 of the calculation results -----
      m = 1   0.9020768
      m = 2   0.9781473
      m = 3   0.9792679
      m = 4   0.9793977
      m = 5   0.9793594
      m = 6   0.9793180
      m = 7   0.9793394
      m = 8   0.9793013
      m = 9   0.9792594
      m =10   0.9792168
      
      ----- degree for maximum adjusted R^2 -----
      m = 4
      

9.6 課題サンプルプログラム