指数モデルのデータへの近似
この例では、信頼領域およびレーベンバーグ・マルカート非線形最小二乗アルゴリズムを使用して指数モデルをデータに当てはめる方法を説明します。
census
データセットを読み込みます。
load census
変数 pop
と cdate
には、人口サイズと国勢調査の実施年に関するデータがそれぞれ含まれています。
データの散布図を表示します。
scatter(cdate,pop) xlabel("Year") ylabel("Population")
プロットには、人口が指数関数に似た形状で年々増加していることが示されています。
既定の信頼領域近似アルゴリズムを使用して、2 項指数モデルを人口データに当てはめます。近似結果と適合度の統計量を返します。
[exp_tr,gof_tr] = fit(cdate,pop,"exp2")
exp_tr = General model Exp2: exp_tr(x) = a*exp(b*x) + c*exp(d*x) Coefficients (with 95% confidence bounds): a = 7.169e-17 b = 0.02155 c = 0 d = 0.02155
gof_tr = struct with fields:
sse: 1.2412e+04
rsquare: 0.8995
dfe: 17
adjrsquare: 0.8818
rmse: 27.0209
exp_tr
には、信頼領域近似アルゴリズムで計算された係数などの近似結果が含まれます。gof_tr
に保存された適合度の統計量に含まれている平方根平均二乗誤差 (RMSE) は 27.0209 です。
exp_tr
内のモデルをデータの散布図と一緒にプロットします。
plot(exp_tr,cdate,pop) legend(["data","predicted value"]) xlabel("Year") ylabel("Population")
プロットは、exp_tr
内のモデルが国勢調査データに密接に追従していないことを示しています。
近似を改善するため、係数の計算にレーベンバーグ・マルカート近似アルゴリズムを使用します。
[exp_lm,gof_lm] = fit(cdate,pop,"exp2",Algorithm="Levenberg-Marquardt")
exp_lm = General model Exp2: exp_lm(x) = a*exp(b*x) + c*exp(d*x) Coefficients (with 95% confidence bounds): a = 4.282e-17 (-1.125e-11, 1.126e-11) b = 0.02477 (-5.67, 5.719) c = -3.933e-17 (-1.126e-11, 1.126e-11) d = 0.02481 (-5.696, 5.745)
gof_lm = struct with fields:
sse: 475.9498
rsquare: 0.9961
dfe: 17
adjrsquare: 0.9955
rmse: 5.2912
exp_lm
には、レーベンバーグ・マルカート近似アルゴリズムで計算された係数などの近似結果が含まれます。gof_lm
に保存された適合度の統計量に含まれている RMSE は 5.2912 です。これは、exp_tr
の RMSE より小さい値です。これらの RMSE の相対サイズは、exp_lm
に格納されているモデルの方が、exp_tr
に格納されているモデルより、正確にデータに当てはまることを示しています。
exp_lm
内のモデルをデータの散布図と一緒にプロットします。
plot(exp_lm,cdate,pop) legend(["data","predicted value"]) xlabel("Year") ylabel("Population")
プロットは、exp_lm
内のモデルの方が、exp_tr
内のモデルより、国勢調査データに密接に追従していることを示しています。