Main Content

데이터에 지수 모델 피팅하기

이 예제에서는 trust-region 비선형 최소제곱 알고리즘과 Levenberg-Marquardt 비선형 최소제곱 알고리즘을 사용하여 지수 모델을 데이터에 피팅하는 방법을 보여줍니다.

census 데이터 세트를 불러옵니다.

load census

변수 pop와 변수 cdate는 각각 모집단 크기와 인구 조사를 실시한 연도에 대한 데이터를 포함하고 있습니다.

데이터의 산점도 플롯을 표시합니다.

scatter(cdate,pop)
xlabel("Year")
ylabel("Population")

이 플롯은 모집단이 지수 함수와 유사한 형태로 해마다 증가함을 보여줍니다.

디폴트 trust-region 피팅 알고리즘을 사용하여 모집단 데이터에 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은 trust-region 피팅 알고리즘으로 계산된 계수를 비롯한 피팅 결과를 포함합니다. gof_tr에 저장된 적합도 통계량은 27.0209의 RMSE(RMS 오차)를 포함합니다.

데이터의 산점도 플롯과 함께 exp_tr의 모델을 플로팅합니다.

plot(exp_tr,cdate,pop)
legend(["data","predicted value"])
xlabel("Year")
ylabel("Population")

이 플롯은 exp_tr의 모델이 인구 조사 데이터를 가깝게 따라가고 있지 않음을 보여줍니다.

Levenberg-Marquardt 피팅 알고리즘을 사용해 계수를 계산하여 피팅을 개선합니다.

[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은 Levenberg-Marquardt 피팅 알고리즘으로 계산된 계수를 비롯한 피팅 결과를 포함합니다. gof_lm에 저장된 적합도 통계량은 exp_tr에 대한 RMSE보다 작은 5.2912의 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의 모델보다 인구 조사 데이터를 더 가깝게 따라가고 있음을 보여줍니다.

참고 항목

함수

관련 항목