ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

曲線近似アプリにおける近似の比較

対話型の曲線近似のワークフロー

次のトピックでは、6 次までの多項方程式と単項指数方程式を使用して国勢調査データを近似します。その手順では、以下を実行する方法を示します。

  • データを読み込み、異なるライブラリ モデルを使用してさまざまな近似を探索。

  • 以下を使用して最適な近似を探索:

    • グラフィカルな近似結果の比較

    • 近似係数および適合度の統計量を含む数値的な近似結果の比較

  • 最適な近似結果を MATLAB® ワークスペースにエクスポートし、コマンド ラインでモデルを解析。

  • セッションを保存し、すべての近似およびプロットの MATLAB コードを生成。

データの読み込みと近似の作成

データ変数は、曲線近似アプリを使用したデータ近似に先立ち MATLAB ワークスペースに読み込まれていなければなりません。この例では、データは MATLAB ファイル census.mat に保存されています。

  1. データを読み込みます。

    load census
    

    ワークスペースには次の 2 つの新しい変数が含まれています。

    • cdate は、1790 年から 1990 年までの 10 年ごとの年度を示す列ベクトルです。

    • pop は、cdate の年度に対応する米国の人口数が記された列ベクトルです。

  2. 曲線近似アプリを開きます。

    cftool

  3. 変数名 cdatepop[X データ][Y データ] のリストから選択します。

    曲線近似アプリによって、X 入力 (予測子データ) と Y 出力 (応答データ) に対する既定の近似が作成されプロットされます。既定の近似は線形多項式近似タイプです。この近似設定が、[次数][1][多項式] を表示することを観察します。

  4. [次数] リストから [2] を選択して、近似を 2 次多項式に変更します。

    曲線近似アプリにより新しい近似がプロットされます。曲線近似アプリでは既定で [自動近似] が選択されているため、近似設定を変更すると、新しい近似が計算されます。大きなデータセットなど再近似に時間がかかる場合は、[自動近似] チェック ボックスをオフにしてこの機能を無効にすることができます。

    曲線近似アプリによる、2 次多項式を使用した国勢調査データの近似結果が [結果] ペインに表示され、ライブラリ モデル、近似係数および適合度の統計量をここで確認できます。

  5. [近似名]poly2 に変更します。

  6. [表示][残差プロット] を選択して残差を表示します。

    残差は、より適切に近似できる可能性を示しています。そのため、国勢調査データセットのさまざまな近似の探索を続けます。

  7. 新しい近似を追加して、その他のライブラリの方程式を試します。

    1. [近似テーブル] で近似を右クリックし、["poly2" の複製] を選択します (または、[近似] メニューを使用します)。

      ヒント

      特定のタイプ (多項式など) の近似では、近似をコピーした方が必要な手順が少なくなるため、新しい近似ではなく ["fitname" を複製] を使用します。複製した近似には、同じデータ選択と近似設定が含まれます。

    2. 多項式の [次数]3 に変更し、近似の名前を poly3 に変更します。

    3. 高い次数の多項式で近似すると、[結果] ペインに次の警告が表示されます。

      Equation is badly conditioned. Remove repeated data points
      or try centering and scaling.

      データを正規化するには、[データのセンタリングとスケーリング] チェック ボックスをオンにします。

    4. 手順 a および b を繰り返し、6 次までの多項式近似を追加し、さらに指数近似を追加します。

    5. 新しい近似ごとに、[結果] ペインの情報と、曲線近似アプリの残差のプロットを確認します。

      適切な近似の残差は、明確なパターンがなくランダムになります。同じ符号の残差が連続する傾向があるなど、なんらかのパターンがある場合は、より適切なモデルが存在する可能性を示しています。

スケーリングについて

この近似手順では非常に大きな値を含む行列の基底として cdate の値を使用するため、スケーリングについての警告が発生します。cdate の値の広がりが原因でスケーリングの問題が発生します。この問題に対処するために、cdate データを正規化することができます。正規化により予測子データがスケーリングされ、その後の数値計算の精度が向上します。cdate を正規化する方法の 1 つは、ゼロ平均にセンタリングし、単位標準偏差にスケーリングすることです。これに相当するコードは次のとおりです。

(cdate - mean(cdate))./std(cdate)

メモ:

正規化の後、予測子データが変化するため、近似係数の値も元のデータに比べて変化します。ただし、データの関数形式と結果として得られる適合度の統計量は変化しません。また、曲線近似アプリのプロットでは元のスケールでデータが表示されます。

最適な近似の決定

最適な近似を決定するには、グラフィカルな近似結果と数値的な近似結果の両方を検証する必要があります。

グラフィカルな近似結果の検証

  1. 近似と残差のグラフを検証することにより最適な近似を決定します。それぞれの近似のプロットを順に表示するには、[近似テーブル] の近似をダブルクリックします。グラフィカルな近似結果は以下を示しています。

    • 多項方程式の近似と残差はどれも似ているため、最適なものを選択することが難しくなっています。

    • 単項指数方程式の近似と残差は、全体的に近似が適切でないことを示しています。したがって、これは不適切な選択であり、最適な近似の候補から指数近似を削除できます。

  2. 2050 年までの近似の振る舞いを検証します。国勢調査データの近似の目標は、最適な近似を外挿して将来の人口値を予測することです。

    1. [近似テーブル] の 6 次多項式近似をダブルクリックし、この近似のプロットを表示します。

    2. [ツール][座標軸の範囲] を選択し、プロットの座標軸の範囲を変更します。

    3. [X (cdate)][最大値]2050 に変更し、[メインの Y (pop)][最大値]400 に増やしてから Enter キーを押します。

    4. 近似のプロットを検証します。データ範囲外での 6 次多項式近似の振る舞いから、これは外挿に適した選択ではないため、この近似は棄却できます。

数値的な近似結果の評価

グラフィカルな近似の検証でそれ以上近似を排除できない場合、数値的な近似結果を検証する必要があります。曲線近似アプリには、次の 2 種類の数値的な近似結果が表示されます。

  • 適合度の統計量

  • 近似係数の信頼限界

適合度の統計量は、曲線がデータをどの程度適切に近似できるかの判断に役立ちます。係数の信頼限界によって係数の精度が決まります。

数値的な近似結果を検証します。

  1. 近似ごとに、適合度の統計量が [結果] ペインに表示されます。

  2. [近似テーブル] ですべての近似を同時に比較します。列見出しをクリックすると、統計量の結果で並べ替えることができます。

  3. 誤差の二乗和 (SSE) と自由度調整済み決定係数の統計量を検証すると、最適な近似の決定に役立ちます。SSE の統計量は近似の最小二乗誤差であり、値がゼロに近いほど近似が適切であることを示します。一般に、自由度調整済み決定係数の統計量は、係数をモデルに追加するときに近似品質の最も優れた指標になります。

    exp1 の最大の SSE は、この近似が適切でないことを示しています。これについては、近似と残差の検証により既に判断済みです。SSE 値が最小なのは poly6 です。ただし、データ範囲外でのこの近似の振る舞いから、これは外挿に適した選択ではありません。新しい軸の範囲を使用したプロットの検証により、この近似は棄却済みです。

    その次に SSE 値が適切なのは 5 次多項式近似 poly5 であり、これが最適な近似である可能性があります。ただし、残りの多項式近似の SSE と自由度調整済み決定係数の値はすべて互いに非常に近い値です。どれを選択したら良いでしょうか。

  4. 最適な近似の問題を解決するには、[結果] ペインで残りの近似の信頼限界を検証します。[近似テーブル] の近似をダブルクリックすると、その近似の Figure が開き (既に開いている場合はフォーカスが移動)、[結果] ペインが表示されます。"近似の Figure" には、単一の近似の近似設定、結果ペインおよびプロットが表示されます。

    5 次多項式と poly2 近似の Figure を並べて表示します。結果を並べての検証は近似の評価に役立ちます。

    1. 2 つの近似の Figure を同時に表示するには、曲線近似アプリの右上にあるレイアウト コントロールを使用するか、[ウィンドウ][左/右に並べる] または [上/下に並べる] を選択します。

    2. 表示する近似を変更するには、近似の Figure をクリックして選択してから [近似テーブル] の近似をダブルクリックして表示します。

    3. 近似 poly5poly2 の両方について [結果] ペインで係数と範囲 (p1p2 など) を比較します。係数の 95% 信頼限界が計算されます。係数の信頼限界によって係数の精度が決まります。[結果] ペインで方程式 (f(x)=p1*x+p2*x...) を確認し、各係数のモデル項を調べます。p2Poly2 の項 p2*xPoly5 の項 p2*x^4 を示していることに注意してください。正規化した係数と正規化していない係数を直接比較しないでください。

      ヒント

      次に示すように広いスペースでプロットと結果を表示して比較するには、[表示] メニューを使用して [近似設定] または [近似テーブル] を非表示にします。[結果] ペインを非表示にしてプロットのみを表示することもできます。

      5 次多項式の係数 p1p2 および p3 については、範囲がゼロと交差します。そのため、これらの係数がゼロではないという確信はもてません。高次数のモデル項の係数がゼロになる場合、それらの項は近似に寄与しておらず、このモデルが国勢調査データに過適合していることを示しています。

      一方、2 次近似では p1p2 および p3 の信頼限界が小さくゼロと交差しないため、poly2 は、近似係数がかなり正確に求められたことを示しています。

      こうして、グラフィカルな近似結果と数値的な近似結果の両方を検証すると、国勢調査データを外挿するための最適な近似として poly2 を選択することになります。

メモ:

定数項、1 次および 2 次の項に関連する近似係数は正規化されたどの多項方程式でもほぼ同一です。ただし、多項式の次数が大きくなると、高次の項に関連する係数範囲がゼロと交差し、過適合の可能性があることがわかります。

ワークスペースでの最適な近似の解析

[ワークスペースに保存] を使用すると、選択した近似および関連する近似結果を MATLAB ワークスペースにエクスポートできます。近似は MATLAB オブジェクトとして保存され、関連する近似結果は構造体として保存されます。

  1. [近似テーブル] で近似 poly2 を右クリックし、["poly2" をワークスペースに保存] を選択 (または、[近似] メニューを使用) します。

  2. [OK] をクリックし、既定の名前で保存します。

    fittedmodel は Curve Fitting Toolbox™ の cfit オブジェクトとして保存されます。

    >> whos fittedmodel
      Name             Size            Bytes  Class
    
      fittedmodel      1x1               822  cfit   
    

fittedmodel cfit オブジェクトを調べ、モデル、近似係数、近似係数の信頼限界を表示します。

fittedmodel

fittedmodel =
     Linear model Poly2:
       fittedmodel(x) = p1*x^2 + p2*x + p3
     Coefficients (with 95% confidence bounds):
       p1 =    0.006541  (0.006124, 0.006958)
       p2 =      -23.51  (-25.09, -21.93)
       p3 =  2.113e+004  (1.964e+004, 2.262e+004)

goodness 構造体を調べ、適合度の統計量を表示します。

goodness

goodness = 
           sse: 159.0293
       rsquare: 0.9987
           dfe: 18
    adjrsquare: 0.9986
          rmse: 2.9724

output 構造体を調べ、残差などの近似に関連する追加情報を表示します。

output

output = 
       numobs: 21
     numparam: 3
    residuals: [21x1 double]
     Jacobian: [21x3 double]
     exitflag: 1
    algorithm: 'QR factorization and solve'
  iterations: 1

さまざまな後処理関数を使用して、指定したデータ範囲で近似を評価 (内挿または外挿)、微分または積分することができます。

たとえば、fittedmodel を値のベクトルについて評価して 2050 年まで外挿するには以下を入力します。

y = fittedmodel(2000:10:2050)
y =

  274.6221
  301.8240
  330.3341
  360.1524
  391.2790
  423.7137
国勢調査データの近似と外挿した近似値をプロットします。
plot(fittedmodel, cdate, pop)
hold on
plot(fittedmodel, 2000:10:2050, y)
hold off
対話型およびコマンド ラインでの近似解析の例や手順の詳細、すべての後処理関数のリストについては、近似の後処理を参照してください。

コマンド ラインを使用したこの対話型の国勢調査データの解析を再現する例については、Polynomial Curve Fittingを参照してください。

作業の保存

このツールボックスには、作業を保存するための複数のオプションが用意されています。1 つ以上の近似および関連する近似結果を変数として MATLAB ワークスペースに保存できます。さらに、この保存した情報をドキュメンテーションにするために、またはデータの外挿と解析を拡張するために使用できます。作業を MATLAB ワークスペース変数に保存するだけでなく、次のことができます。

  • 現在の曲線近似セッションを保存するには、[ファイル][セッションの保存] を選択します。セッション ファイルには、セッション内のすべての近似と変数が含まれていて、レイアウトが記憶されています。詳細は、セッションの保存と再読み込みを参照してください。

  • MATLAB コードを生成し、セッション内のすべての近似とプロットを再作成するには、[ファイル][コード生成] を選択します。曲線近似アプリはセッションからコードを生成し、MATLAB エディターにファイルを表示します。

    近似とプロットを再作成するには、コマンド ラインから元のデータを入力引数に指定してそのファイルを呼び出します。また、このファイルを新しいデータと共に呼び出し、複数のデータセットの近似プロセスを自動化できます。詳細は、曲線近似アプリからのコードの生成を参照してください。

関連するトピック