이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

곡선 피팅 실행하기

이 예제에서는 곡선 피팅을 다루는 방법을 보여줍니다.

데이터를 불러와서 다항식 곡선 피팅하기

load census
curvefit = fit(cdate,pop,'poly3','normalize','on')
curvefit = 
     Linear model Poly3:
     curvefit(x) = p1*x^3 + p2*x^2 + p3*x + p4
       where x is normalized by mean 1890 and std 62.05
     Coefficients (with 95% confidence bounds):
       p1 =       0.921  (-0.9743, 2.816)
       p2 =       25.18  (23.57, 26.79)
       p3 =       73.86  (70.33, 77.39)
       p4 =       61.74  (59.69, 63.8)

출력에는 피팅된 모델 방정식, 피팅된 계수, 피팅된 계수에 대한 신뢰한계가 표시됩니다.

피팅, 데이터, 잔차, 예측한계 플로팅하기

plot(curvefit,cdate,pop)

잔차 피팅을 플로팅합니다.

plot(curvefit,cdate,pop,'Residuals')

피팅에 대한 예측한계를 플로팅합니다.

plot(curvefit,cdate,pop,'predfunc')

지정된 점에서 피팅 실행하기

y = fittedmodel(x) 형식으로 x 에 대한 값을 지정하여 특정 점에서 피팅을 실행합니다.

curvefit(1991)
ans = 252.6690

여러 점에서 피팅 값 구하기

값으로 구성된 벡터에서 모델을 실행하여 2050년까지 외삽합니다.

xi = (2000:10:2050).';
curvefit(xi)
ans = 6×1

  276.9632
  305.4420
  335.5066
  367.1802
  400.4859
  435.4468

해당 값에 대한 예측한계를 구합니다.

ci = predint(curvefit,xi)
ci = 6×2

  267.8589  286.0674
  294.3070  316.5770
  321.5924  349.4208
  349.7275  384.6329
  378.7255  422.2462
  408.5919  462.3017

외삽된 피팅 범위에 대해 피팅 및 예측 구간을 플로팅합니다. 피팅은 기본적으로 데이터 범위에 대해 플로팅됩니다. 피팅에서 외삽된 값을 보려면 피팅을 플로팅하기 전에 좌표축의 x 상한을 2050으로 설정하십시오. 예측 구간을 플로팅하려면 플롯 유형으로 predobs 또는 predfun을 사용하십시오.

plot(cdate,pop,'o')
xlim([1900,2050])
hold on
plot(curvefit,'predobs')
hold off

모델 방정식 가져오기

피팅 이름을 입력하여 모델 방정식, 피팅된 계수, 피팅된 계수에 대한 신뢰한계를 표시합니다.

curvefit
curvefit = 
     Linear model Poly3:
     curvefit(x) = p1*x^3 + p2*x^2 + p3*x + p4
       where x is normalized by mean 1890 and std 62.05
     Coefficients (with 95% confidence bounds):
       p1 =       0.921  (-0.9743, 2.816)
       p2 =       25.18  (23.57, 26.79)
       p3 =       73.86  (70.33, 77.39)
       p4 =       61.74  (59.69, 63.8)

모델 방정식만 구하려면 formula를 사용하십시오.

formula(curvefit)
ans = 
'p1*x^3 + p2*x^2 + p3*x + p4'

계수 이름과 값 가져오기

계수를 이름으로 지정합니다.

p1 = curvefit.p1
p1 = 0.9210
p2 = curvefit.p2
p2 = 25.1834

모든 계수 이름을 가져옵니다. 피팅 방정식(예: f(x) = p1*x^3+...)을 살펴보며 각 계수에 대한 모델 항을 확인합니다.

coeffnames(curvefit)
ans = 4x1 cell
    {'p1'}
    {'p2'}
    {'p3'}
    {'p4'}

모든 계수 값을 가져옵니다.

coeffvalues(curvefit)
ans = 1×4

    0.9210   25.1834   73.8598   61.7444

계수에 대한 신뢰한계 가져오기

계수에 대한 신뢰한계를 사용하여 피팅을 실행하고 비교할 수 있습니다. 계수에 대한 신뢰한계는 계수의 정확도를 결정합니다. 서로 멀리 떨어진 한계는 불확실성을 나타냅니다. 선형 계수에 대해 한계가 영점을 교차하는 경우, 이는 해당 계수가 0과 다르다는 사실을 확신할 수 없음을 의미합니다. 일부 모델 항이 0인 계수를 가진다면 이는 피팅에 도움이 되지 않습니다.

confint(curvefit)
ans = 2×4

   -0.9743   23.5736   70.3308   59.6907
    2.8163   26.7931   77.3888   63.7981

적합도 통계량 검토하기

명령줄에서 적합도 통계량을 가져오기 위해 다음 중 하나를 수행할 수 있습니다.

  • 곡선 피팅 앱을 열고 피팅 > 작업 공간에 저장을 선택하여 피팅과 적합도를 작업 공간으로 내보냅니다.

  • fit 함수를 사용하여 gof 출력 인수를 지정합니다.

gof와 출력 인수를 지정하여 피팅을 다시 생성해 적합도 통계량과 피팅 알고리즘 정보를 가져옵니다.

[curvefit,gof,output] = fit(cdate,pop,'poly3','normalize','on')
curvefit = 
     Linear model Poly3:
     curvefit(x) = p1*x^3 + p2*x^2 + p3*x + p4
       where x is normalized by mean 1890 and std 62.05
     Coefficients (with 95% confidence bounds):
       p1 =       0.921  (-0.9743, 2.816)
       p2 =       25.18  (23.57, 26.79)
       p3 =       73.86  (70.33, 77.39)
       p4 =       61.74  (59.69, 63.8)
gof = struct with fields:
           sse: 149.7687
       rsquare: 0.9988
           dfe: 17
    adjrsquare: 0.9986
          rmse: 2.9682

output = struct with fields:
        numobs: 21
      numparam: 4
     residuals: [21x1 double]
      Jacobian: [21x4 double]
      exitflag: 1
     algorithm: 'QR factorization and solve'
    iterations: 1

잔차의 히스토그램을 플로팅하여 대략적으로 정규분포를 따르는지 확인합니다.

histogram(output.residuals,10)

피팅, 데이터 및 잔차 플로팅하기

plot(curvefit,cdate,pop,'fit','residuals')
legend Location SouthWest
subplot(2,1,1)
legend Location NorthWest

방법 찾기

피팅에서 사용할 수 있는 모든 방법을 나열합니다.

methods(curvefit)
Methods for class cfit:

argnames       confint        formula        numcoeffs      setoptions     
category       dependnames    indepnames     plot           type           
cfit           differentiate  integrate      predint        
coeffnames     feval          islinear       probnames      
coeffvalues    fitoptions     numargs        probvalues     

피팅 명령을 사용하는 방법을 알아보려면 help 명령을 사용하십시오.

help cfit/differentiate
 DIFFERENTIATE  Differentiate a fit result object.
    DERIV1 = DIFFERENTIATE(FITOBJ,X) differentiates the model FITOBJ at the
    points specified by X and returns the result in DERIV1. FITOBJ is a Fit
    object generated by the FIT or CFIT function. X is a vector. DERIV1 is
    a vector with the same size as X. Mathematically speaking, DERIV1 =
    D(FITOBJ)/D(X).
 
    [DERIV1,DERIV2] = DIFFERENTIATE(FITOBJ, X) computes the first and
    second derivatives, DERIV1 and DERIV2 respectively, of the model
    FITOBJ.
 
    See also CFIT/INTEGRATE, FIT, CFIT.