このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
MATLAB®の基本的な近似UIは,対話的に以下を行うことができます。
スプライン内挿,形状維持内挿,または多項式(最高10次)を使用したデータモデリング
1つ以上の近似をデータと共にプロット
近似の残差をプロット
モデルの係数を計算
残差のノルム(モデルのデータへの近似の程度分析に使用可能な統計)を計算
モデルを使用した内挿またはデータ範囲外での外挿
ダイアログボックス外で使用するため,係数と計算結果の値をMATLABワークスペースに保存
新しいデータによる近似再計算およびプロット再作成用にMATLABコードを生成
メモ
基本的な近似UIは2次元プロットにのみ利用可能です。より高度な近似および回帰分析の詳細については,曲线拟合工具箱™ドキュメンテーションと统计和机器学习工具箱™ドキュメンテーションを参照してください。
基本的な近似UIでは,近似前にデータを昇順で並べ替えます。データセットが大きく,値が昇順に並べ替えられていない場合,近似前の,基本的な近似UIによるデータの前処理に時間がかかります。
先にデータを並べ替えることで基本的な近似UIを高速化できます。データベクトルx
とy
から,並べ替えられたベクトルx_sorted
とy_sorted
を作成するには,MATLAB関数排序
を使用します。
[x_sorted, i] = sort(x);y_sorted = y(我);
基本的な近似UIを利用するには,まずxとyデータ(のみ)を生成するMATLABプロットコマンドを用いて图ウィンドウにデータをプロットしなければなりません。
基本的な近似UIを開くには,图ウィンドウの上部から[ツール]、[基本的な近似)を選択します。
この例では基本的な近似UIを使用して多項式回帰の近似,可視化,解析,保存およびコード生成を行う方法を説明します。
ファイルcensus.mat
は1790年から1990年までの10年間隔の米国での人口のデータを含みます。
データを読み込みプロットするためには,MATLABプロンプトで次のコマンドを入力します。
负载人口普查情节(cdate、流行,“罗”)
负载
コマンドは,MATLABワークスペースに次の変数を追加します。
cdate
1990年:1790年からまでの10年ごとの年度を示す列ベクトルです。これは,予測変数です。
流行
:cdate
の中の各年度に対応する米国の人口が記された列ベクトルです。これは,応答変数です。
データベクトルは,年度によって昇順に並べ替えられます。プロットは,人口を年度の関数として表します。
これで,経時的な人口増加をモデル化する式に,データを近似する準備ができました。
图ウィンドウで,[ツール]、[基本的な近似)を選択することにより,[基本的な近似]ダイアログボックスを開きます。
(基本的な近似]ダイアログボックスの(近似タイプ]エリアで,[3 次多項式]チェックボックスを選択してデータを3次多項式で近似します。
MATLABは,選択に従ってデータを近似し,次のように3次回帰線をグラフに追加します。
近似の計算中に,MATLABで問題が発生し,次の警告が表示されます。
この警告は,モデルに対して計算された係数が応答(測定された人口)におけるランダムなエラーに影響されることを示します。これは,さらに良い近似を得るための提案でもあります。
引き続き3次近似を使用します。人口調査データに新しい観測を追加することはできないので,値を”zスコア”に変換してから近似を再計算することで,近似を向上させます。ダイアログボックスの右上の[x軸データのセンタリングとスケーリング]チェックボックスをオンにして,基本的な近似ツールに変換を実行させます。
データのセンタリングとスケーリングの動作方法については,基本的な近似ツールが近似を計算する方法についてを参照してください。
[誤差推定 (残差)]で,(残差ノルム]のチェックボックスを選択します。[プロットスタイル]で(棒グラフ]を選択します。
これらのオプションを選択すると,残差のサブプロットが棒グラフとして作成されます。
人口が減少していることを示す1790年以前には,3次式の予測は良くありません。1790年以降は,モデルがデータを良く近似するように見えますが,残差のパターンは,モデルが正規誤差の仮定を満たさないことを示します。これは,最小二乗近似の基本です。凡例で識別された[1]的数据ラインは,観測されたx (cdate
)およびy (流行
)データ値です。[3 次多項式]回帰線はデータ値のセンタリングとスケーリング後の近似を表します。ツールで変換されたzスコアを使用して近似が計算される場合も,この数字は元のデータ単位を示すことに注意してください。
比較のため,(近似タイプ]エリアで他の多項式を選択して人口調査データに他の式の近似を試みてください。
(基本的な近似]ダイアログボックスで[結果を展開]ボタンをクリックすると,係数の推定値と残差ノルムが表示されます。
(数値結果]パネルの[ワークスペースにエクスポート]ボタンをクリックすることにより,近似のデータをMATLABワークスペースへ保存します。(近似をワークスペースに保存]ダイアログボックスが開きます。
すべてのチェックボックスをオンにし,(好的)をクリックして,近似パラメーターをMATLAB構造体の适合
として保存します。
适合
匹配= struct with fields: type: '多项式3度' coeff: [0.9210 25.1834 73.8598 61.7444]
これで,基本的な近似UIの外部で,MATLABプログラミングにおいて近似の結果を使用できます。
決定係数、つまりRの二乗(右2と表記)を計算することによって,多項式回帰により観測されたデータがどれくらい正確に予測されるかを表示できます。0 ~ 1までのR2統計は,独立変数が従属変数の値の予測にどれくらい役に立つかを測定します。
R2値が0に近い場合,近似がモデルy =常数
と同程度であることを示します。
R2値が1に近い場合,独立変数が従属変数のほとんどの変化量を説明することを示します。
R2は,観測された従属値とその値に対して近似で予測される値との符号付きの差異である,"残差"から計算されます。
残差= y观察到的- y安装 | (1) |
この例の3次近似のR2の数値,0.9988は,基本的な近似]ダイアログボックスの(近似の結果)にあります。
3次近似のR2の数値を線形最小二乗近似と比較するには,(近似タイプ]で[線形]を選択し,R2の数値,0.921を取得します。この結果は,人口データの線形最小二乗近似で分散の92.1%が説明されることを示します。このデータの3次近似によってこの分散の99.9%が説明されるので,後者の方が優れた予測子のように思われます。しかし3次近似は3つの変数(x, x2,およびx3.)を使用して予測するため,基本R2値はこの近似がどれくらいロバストな近似かということが完全には反映されません。多変量の適合度をより適切に評価する尺度は,調整されたR2です。調整されたR2の計算方法と使い方の詳細は,近似の残差と適合度を参照してください。
1965年(元のデータにはない日付)の米国の人口を内挿するために,3次モデルを利用するものとします。
(基本的な近似]ダイアログボックスの[データの内挿/外挿]で,[X]1965年の値を入力し,[評価データのプロット]ボックスをオンにします。
メモ
スケーリングとセンタリングを行っていないX
の値を使用します。3次多項近似による人口調査データの予測で係数を取得するためにX
の値をスケーリングするように選択した場合でも,それを最初にセンタリングしたりスケーリングする必要はありません。基本的な近似ツールは,ユーザーから直接的には分かりませんが必要な調整を行います。
X
の値とf (X)
に対応する値は,下記のように近似から計算され,プロットされます。
基本的な近似セッションの終了後,新しいデータを使用して近似の計算とプロットの作成を再度行うためのMATLABコードを生成できます。
图ウィンドウで,[ファイル]、[コードの生成)を選択します。
これにより,関数が作成され,MATLABエディターに表示されます。このコードは,基本的な近似]ダイアログボックスで対話的に行ったことをプログラムで再現する方法を示します。
最初の行の関数名をcreatefigure
から,censusplot
のように,わかりやすい名前に変更します。このコードファイルをcensusplot.m
というファイル名で現在のフォルダーに保存します。この関数の最初の行は次のとおりにします。
函数censusplot(X1, Y1, valuesToEvaluate1)
ランダムに摂動する新しい普查データを生成します。
rng (“默认”) randpop = pop + 10*randn(size(pop));
新しいデータと再計算した近似を用いてプロットを作成し直します。
censusplot (cdate randpop, 1965)
元のグラフにプロットされたx, y値(数据1
)に加え,マーカーのx値の3つの入力引数が必要です。
次の図は,生成されたコードが作成したプロットを示します。新しいプロットはyデータ値,3次多項式近似式,および棒グラフの残差値を除き,コードを生成するのに使用した図の表示と予想どおりに一致します。
基本的な近似ツールは,関数polyfit
を呼び出して多項式近似を計算します。関数polyval
を呼び出して,近似を評価します。polyfit
は,与えられた入力を解析し,データが指定された次数で近似できる条件を備えているかを決定します。
悪条件のデータが見つかると,polyfit
はできるだけ適切に回帰を計算しますが,近似を向上させる可能性についての警告も返します。基本的な近似の例のセクション3次多項近似による人口調査データの予測にこの警告が表示されています。
モデルの信頼性を向上させる方法の1つは,データ点を追加することです。ただし,いつでもデータセットに観測を追加できるわけではありません。代わりに,予測子変数を変換して,センターとスケールを正規化する方法があります。(この例では,予測子は人口調査の日付のベクトルです)
関数polyfit
は。”zスコア”を計算して,正規化します。
ここでxは予測データ,μはxの平均,σはxの標準偏差です。zスコアのデータは0の平均値と1の標準偏差をもちます。基本的な近似UIでは,[x軸データのセンタリングとスケーリング]チェックボックスをオンにして,予測子データをzスコアに変換します。
センタリングとスケーリングの後,yデータに対してモデルの係数がzの関数として計算されます。これらはxの関数としてyに対して計算された係数とは異なり,さらにロバストです。モデルの形式と残差のノルムは変更されません。基本的な近似UIは、近似が元の x データと同じスケールでプロットされるように z スコアを自動的にリスケーリングします。
センタリングとスケーリングされたデータが,最終プロットを作成する中間データとして使用される方法を理解するために,コマンドプロンプトで以下を入力します。
关闭负载人口普查x = cdate;y =流行;z = (x-mean (x) /性病(x);%计算x数据的z-scores情节(x, y,“罗”)%用红色标记标记数据持有在%准备坐标轴以接受顶部的新图形zfit = linspace (z(1)、z(结束),100);pz = polyfit (z, y, 3);计算条件配合yfit = polyval (pz、zfit);xfit = linspace (x(1),(结束),100);情节(xfit yfit,“b -”)%绘制条件拟合与x数据
センタリングおよびスケーリングされた3次多項式プロットは,青線で表示しています。
コードでは,z
の計算でデータを正規化する方法が説明されています。関数polyfit
は,呼び出すときに3つの戻り引数を指定すると,自動的に変換を実行します。
(p, S,μ)= polyfit (x, y, n)
p
は,正規化されたx
に基づいています。返されるベクトルμ
には,x
の平均および標準偏差が含まれます。詳細は,polyfit
のリファレンスページを参照してください。