주요 콘텐츠

모수적 피팅

R2026b

라이브러리 모델을 사용한 모수적 피팅

모수적 피팅에서는 데이터에 피팅하는 하나 이상의 모델에 대한 계수(파라미터)를 찾는 작업이 수행됩니다. 데이터는 통계적 성질을 갖는다고 간주되며, 다음과 같은 2개의 성분으로 나뉩니다.

데이터 = 결정적 성분 + 확률적 성분

결정적 성분은 모수적 모델로 지정되고, 확률적 성분은 종종 데이터와 연관된 오차로 설명됩니다.

데이터 = 모수적 모델 + 오차

모델은 독립 변수(예측 변수)와 하나 이상의 계수에 대한 함수입니다. 오차는 특정 확률 분포(보통 가우스 분포)를 따르는 데이터의 임의 변동을 나타냅니다. 이런 변동은 여러 요인에서 기인할 수 있지만, 측정된 데이터를 취급할 때는 항상 어느 정도 존재합니다. 체계적 변동도 존재할 수 있지만, 이는 데이터를 제대로 표현하지 못하는 피팅 모델을 야기할 수 있습니다.

모델 계수는 물리적 유의성을 갖는 경우가 많습니다. 예를 들어, 방사성 핵종의 단일 붕괴 방식에 해당하는 데이터를 수집하여 붕괴의 반감기(T1/2)를 추정하려 한다고 가정하겠습니다. 방사성 붕괴 법칙에서는 방사성 물질의 활동이 시간의 흐름에 따라 지수적으로 붕괴한다고 설명합니다. 따라서 피팅에 사용할 모델은 다음과 같이 지정됩니다.

y=y0e−λt

여기서 y0은 시간 t = 0에서의 핵의 개수고 λ는 붕괴 상수입니다. 데이터는 다음 방정식으로 설명할 수 있습니다.

data=y0e−λt+error

y0과 λ는 모두 피팅에 의해 추정되는 계수입니다. T1/2 = ln(2)/λ이므로 붕괴 상수의 피팅된 값은 피팅된 반감기를 산출합니다. 그러나 데이터에 일부 오차가 포함되어 있으므로 데이터로부터 정확하게 방정식의 결정적 성분을 파악할 수는 없습니다. 따라서 계수 및 반감기 계산에는 어느 정도의 불확실성이 수반됩니다. 불확실성이 허용 가능한 수준이라면 여기서 데이터 피팅이 완료됩니다. 불확실성이 허용 가능하지 않은 수준이라면 더 많은 데이터를 수집하거나 측정 오차를 줄이고 새로운 데이터를 수집한 후 모델 피팅을 반복하는 등 불확실성을 낮추는 과정을 수행해야 할 수 있습니다.

모델을 관장하는 이론이 없는 여타 문제에서는 항을 추가하거나 제거하여 모델을 수정하거나 완전히 다른 모델로 대체해 볼 수도 있습니다.

Curve Fitting Toolbox™의 모수적 라이브러리 모델은 다음 섹션에 설명되어 있습니다.

모델 유형 선택하기

대화형 방식으로 모델 유형 선택하기

MATLAB® 명령줄에 curveFitter를 입력하여 곡선 피팅기 앱을 엽니다. 또는 앱 탭의 수학, 통계학 및 최적화 그룹에서 곡선 피팅기를 클릭합니다.

곡선 피팅기 앱에서 곡선 피팅기 탭의 피팅 유형 섹션으로 이동합니다. 피팅 갤러리에서 모델 유형을 선택할 수 있습니다. 화살표를 클릭하여 갤러리를 엽니다.

Fit Type model gallery

다음 표에서는 곡선과 곡면에 대해 피팅할 수 있는 모델을 설명합니다.

피팅 그룹피팅 유형곡선곡면
회귀 모델다항식가능(최대 9차)가능(최대 5차)
지수가능불가
로그가능불가
푸리에가능불가
가우스가능불가
멱급수가능불가
유리가능불가
사인 합가능불가
베이불가능불가
시그모이드가능불가
보간보간

다음 방법을 사용할 경우 가능

  • 최근접이웃

  • 선형

  • 3차

  • 형태 보존(PCHIP)

다음 방법을 사용할 경우 가능

  • 최근접이웃

  • 선형

  • 자연 이웃

  • 3차

  • 쌍조화(v4)

  • 박판 스플라인

평활화평활화 스플라인가능불가
Lowess불가가능
사용자 지정사용자 지정 수식가능가능
사용자 지정 선형 모델 피팅하기가능불가

결과 창에 모델 사양, 계수 값, 적합도 통계량이 표시됩니다.

팁

피팅에 문제가 있을 경우 결과 창의 메시지를 참고하여 더 나은 설정을 찾아낼 수 있습니다.

곡선 피팅기 앱은 피팅 옵션 창에 피팅을 개선하기 위해 변경할 수 있는 일련의 피팅 유형 및 설정을 제공합니다. 먼저 디폴트 값을 사용해 본 다음 다른 설정으로 시험해 보십시오. 사용 가능한 피팅 옵션을 사용하는 방법에 대한 자세한 내용은 계수 제약 조건: 한계 및 최적화된 시작점 지정하기 항목을 참조하십시오.

하나의 피팅에 대해 여러 설정을 시도해 볼 수도 있고, 여러 피팅을 만들어서 비교해 볼 수도 있습니다. 곡선 피팅기 앱에서 여러 피팅을 만든 경우 여러 피팅 유형과 설정을 나란히 비교할 수 있습니다. 자세한 내용은 Create Multiple Fits in Curve Fitter App 항목을 참조하십시오.

프로그래밍 방식으로 모델 유형 선택하기

fit 함수를 호출할 때 라이브러리 모델 이름을 문자형 벡터나 string형 스칼라로 지정할 수 있습니다. 예를 들어, 다음과 같이 2차 poly2 모델을 지정할 수 있습니다.

f = fit(x,y,"poly2")

사용 가능한 모든 라이브러리 모델 이름을 보려면 곡선과 곡면 피팅 라이브러리 모델 목록 항목을 참조하십시오.

fittype 함수를 사용하여 라이브러리 모델에 대한 fittype 객체를 생성하고, fittype을 fit 함수에 대한 입력값으로 사용할 수도 있습니다.

설정할 수 있는 파라미터를 확인하려면 fitoptions 함수를 사용하십시오. 예를 들면 다음과 같습니다.

fitoptions(poly2)

다른 예를 보려면 대화형 방식으로 모델 유형 선택하기에 나와 있는 표에서 각 모델 유형의 섹션을 참조하십시오. 모델 생성 및 분석에 사용되는 모든 함수에 대해 자세히 알아보려면 곡선 및 곡면 피팅 항목을 참조하십시오.

데이터 정규화하기

곡선 피팅기 앱의 피팅 대부분은 피팅 옵션 창에 정규화 옵션을 제공합니다. 이 옵션을 선택하면 앱은 정규화된 데이터로 모델을 다시 피팅합니다.

대규모 변수의 반올림 오차와 같은 수치적 문제를 완화하려면 입력 데이터(예측 변수 데이터라고도 함)를 정규화하십시오. 정규화는 일반적으로 모든 변수가 피팅에 고르게 기여할 수 있게 하여 수치적 불안정성을 줄이고 피팅을 개선합니다. 이 옵션을 사용하여 입력값을 정규화하면 피팅된 계수의 값은 원래 데이터에 비해 달라집니다. 따라서 계수에 물리 중요도가 있는 경우(예: 지리 데이터의 동방위와 북방위)나 계수를 추정하기 위해 피팅하는 경우 입력 데이터를 정규화해서는 안 됩니다.

곡선 피팅기 앱의 플롯은 정규화 상태와 관계없이 항상 원래 척도를 사용합니다.

명령줄에서 피팅 전에 데이터를 정규화하려면 fit 함수를 Normalize="on"과 함께 사용하거나 options.Normalize를 "on"으로 지정하고 fitoptions 함수를 사용하여 options 구조체를 만듭니다. 그런 다음 지정된 옵션과 함께 fit 함수를 사용합니다.

options = fitoptions;
options.Normalize = "on";
options
options = 

  basefitoptions with properties:

    Normalize: 'on'
      Exclude: []
      Weights: []
       Method: 'None'

load census
f1 = fit(cdate,pop,"poly3",options)

고급 옵션

곡선 피팅기 앱

곡선 피팅기 앱의 피팅 옵션 창에서 대화형 방식으로 고급 피팅 옵션을 지정할 수 있습니다. 보간, 평활화 스플라인, Lowess를 제외한 모든 피팅에는 구성 가능한 고급 피팅 옵션이 있습니다. 사용 가능한 옵션은 선택한 피팅(즉, 선형, 비선형 또는 비모수적 피팅)에 따라 달라집니다.

  • 비모수적 피팅(즉, 보간, 평활화 스플라인 및 Lowess 피팅)에는 고급 옵션이 없습니다.

  • 달리 지정되지 않는 한 아래 설명된 옵션은 비선형 모델에만 사용할 수 있습니다.

단일 항 지수 피팅에 대한 피팅 옵션 창이 아래에 나와 있습니다.

Fit Options pane showing Advanced Options for exponential fit

  • 방법 — 피팅 방법

    사용하는 피팅에 따라 방법 값이 자동으로 선택됩니다. 선형 피팅과 비선형 피팅의 방법 값은 각각 LinearLeastSquares 및 NonlinearLeastSquares입니다.

  • 로버스트 — 로버스트 최소제곱 피팅 방법을 사용하는 옵션

    • Off — 로버스트 피팅을 사용하지 않습니다(디폴트 값).

    • LAR — 최소 절대 잔차(LAR)를 최소화하여 피팅합니다.

    • Bisquare — 잔차의 제곱합을 최소화하여 피팅하고, 겹제곱 가중치를 사용하여 이상값 가중치를 줄입니다. 대부분의 경우 이 옵션은 로버스트 피팅에서 가장 좋은 선택입니다.

  • 알고리즘 — 피팅에 사용되는 알고리즘

    • Trust-Region — 이 옵션은 디폴트 알고리즘으로, 하한 또는 상한 계수 제약 조건을 지정한 경우 이를 사용할 수 있습니다.

    • Levenberg-Marquardt — Trust-Region 알고리즘이 적절한 피팅을 생성하지 못하고 계수 제약 조건이 없는 경우 Levenberg-Marquardt 알고리즘을 시도해 보십시오.

    • Interior-Point — 이전 알고리즘이 적절한 피팅을 찾지 못하면 Interior-Point 알고리즘을 시도해 보십시오. 피팅할 제약 조건을 지정한 경우 비선형 피팅에는 이 알고리즘을 선택해야 합니다. 이 알고리즘을 사용하려면 Optimization Toolbox™가 필요합니다. 계수 제약 조건을 지정하는 경우에도 Interior-Point를 사용할 수 있습니다.

  • DiffMinChange — 유한 차분 야코비 행렬에 대한 계수의 최소 변화량입니다. 디폴트 값은 10-8입니다.

  • DiffMaxChange — 유한 차분 야코비 행렬에 대한 계수의 최대 변화량입니다. 디폴트 값은 0.1입니다.

DiffMinChange와 DiffMaxChange는 다음 방정식에 적용됩니다.

  • 모든 비선형 사용자 지정 수식(즉 사용자가 작성한 비선형 방정식)

  • Curve Fitting Toolbox에서 제공하는 일부 비선형 방정식

DiffMinChange와 DiffMaxChange는 선형 방정식에 적용되지 않습니다.

  • MaxFunEvals — 허용되는 함수(모델) 실행의 최대 횟수입니다. 디폴트 값은 600입니다.

  • MaxIter — 허용되는 피팅 반복의 최대 횟수입니다. 디폴트 값은 400입니다.

  • TolFun — 함수(모델) 값과 연관된 중지 조건에 사용되는 종료 허용오차입니다. 디폴트 값은 10-6입니다.

  • TolX — 계수와 연관된 중지 조건에 사용되는 종료 허용오차입니다. 디폴트 값은 10-6입니다.

  • TolCon — 디폴트 값이 10-6인 제약 조건 점에 대한 허용오차입니다. 이는 제공된 제약 조건 점과 피팅이 통과하는 실제 점 간의 절대 수치적 차이의 상한이며, 이를 초과하면 제약 조건 위반이 발생합니다. TolCon이 충족되면 솔버는 다른 이유로 중단되지 않는 한 계속 진행됩니다. 단순히 TolCon이 충족된다는 이유로는 솔버가 중단되지 않습니다. 이 허용오차를 지정하려면 Optimization Toolbox가 필요합니다.

명령줄

피팅 전에 디폴트 fit options 구조체를 만들고 데이터를 정규화하도록 옵션을 설정합니다.

options = fitoptions;
options.Normalize = 'on';
options
options = 

  basefitoptions with properties:

    Normalize: 'on'
      Exclude: []
      Weights: []
       Method: 'None'

Normalize, Exclude 또는 Weights 필드를 설정한 후 다른 피팅 방법에 동일한 옵션을 사용하여 데이터를 피팅하려는 경우 디폴트 fit options 구조체를 수정하는 것이 편리합니다. 예를 들어, 다음과 같이 입력합니다.

load census
f1 = fit(cdate,pop,"poly3",options);
f2 = fit(cdate,pop,"exp1",options);
f3 = fit(cdate,pop,"cubicspline",options);

fit 함수의 세 번째 출력 인수로 데이터 종속적인 피팅 옵션이 반환됩니다. 예를 들어, 평활화 스플라인의 평활화 파라미터는 데이터 종속적입니다.

[f,gof,out] = fit(cdate,pop,"smoothingspline");
smoothparam = out.p
smoothparam =
    0.0089

피팅 옵션을 사용하여 새 피팅에 대한 디폴트 평활화 파라미터를 수정합니다.

options = fitoptions("Method","SmoothingSpline","SmoothingParam",0.0098);
[f,gof,out] = fit(cdate,pop,"smoothingspline",options);

피팅 옵션을 사용하는 방법에 대한 자세한 내용은 fitoptions 함수를 참조하십시오.

계수 제약 조건: 한계 및 최적화된 시작점 지정하기

계수의 하한과 상한을 지정하여 계수에 제약 조건을 적용하고 계수의 시작점을 제공합니다. 명령줄에서 fit 함수 또는 fitoptions 함수를 Lower, Upper, StartPoint 옵션과 함께 사용합니다. 시작점은 비선형 fittype에만 지정할 수 있는 반면, 선형 fittype에는 시작점이 필요하지 않습니다. 디폴트 제약 조건과 최적화된 시작점에 대한 자세한 내용은 최적화된 시작점 및 디폴트 제약 조건 항목을 참조하십시오.

Fit Options pane showing Coefficient Constraints

  • 계수 — 피팅할 미지의 계수에 대한 기호입니다.

  • 시작점 — 계수 시작값입니다. 디폴트 값은 피팅에 따라 달라집니다. 유리, 베이불(Weibull) 및 사용자 지정 피팅의 경우 디폴트 값은 [0 1] 범위 내에서 임의로 선택됩니다. 피팅 유형 갤러리에 있는 다른 모든 비선형 모델의 경우 시작값은 데이터 세트에 따라 달라지며 발견적 방식으로 계산됩니다.

  • 하한 — 피팅된 계수의 하한입니다. 이 앱은 Trust-Region과 Interior-Point 피팅 알고리즘에서만 이 한계를 사용합니다. 피팅 옵션 창에 있는 대부분의 피팅에서 디폴트 하한은 -Inf입니다. 이는 계수에 제약 조건이 없음을 나타냅니다. 그러나 유한 디폴트 하한을 갖는 모델도 소수 있습니다. 예를 들어, 가우스 피팅의 경우 앱은 너비 파라미터를 0보다 작을 수 없도록 제약합니다.

  • 상한 — 피팅된 계수의 상한입니다. 이 앱은 Trust-Region과 Interior-Point 피팅 알고리즘에서만 이 한계를 사용합니다. 피팅 옵션 창에 있는 모든 피팅에서 디폴트 상한은 Inf입니다. 이는 계수에 제약 조건이 없음을 나타냅니다.

이러한 피팅 옵션에 대한 자세한 내용은 lsqcurvefit (Optimization Toolbox) 함수를 참조하십시오.

최적화된 시작점 및 디폴트 제약 조건

다음 표에는 피팅 유형 창의 피팅에 대한 디폴트 계수 시작점과 제약 조건이 나와 있습니다. 시작점이 최적화된 경우에는 현재 데이터 세트에 따라 발견적 방식으로 계산됩니다. [0 1] 구간 내에 임의의 시작점이 정의되며, 선형 모델에는 시작점이 필요하지 않습니다. 모델에 제약 조건이 없는 경우, 계수는 하한도 상한도 갖지 않습니다. 피팅 옵션 창에서 사용자 고유의 값을 제공하여 디폴트 시작점과 제약 조건을 재정의할 수 있습니다.

피팅

시작점

제약 조건

선형 피팅

N/A

없음

사용자 지정 수식

임의

없음

지수

최적화됨

없음

로그

N/A

없음

푸리에

최적화됨

없음

가우스

최적화됨

ci > 0

다항식

N/A

없음

멱급수

최적화됨

없음

유리

임의

없음

사인 합

최적화됨

bi > 0

베이불(Weibull)

임의

a, b > 0

시그모이드(모델을 4-파라미터 로지스틱으로 설정)

최적화됨

x/c > 0

사인 합 피팅과 푸리에 피팅은 특히 시작점에 민감하며, 최적화된 값은 관련 방정식에서 몇 개 항에 대해서만 정확할 수 있음을 유의하십시오.

피팅에 사용할 제약 조건 점(Optimization Toolbox 필요)

곡선 피팅기 앱에서 또는 명령줄에서 ConstraintPoints 이름-값 인수를 사용해 제약 조건 점을 추가하여 회귀 fittype이 특정 점을 통과하도록 제약 조건을 적용할 수 있습니다. 비모수적 피팅(즉, 보간, 평활화 스플라인 및 Lowess 피팅)은 제약 조건 점을 받지 않습니다.

Fit Options pane showing Constraint Points

제약 조건 점을 사용하면 곡선이나 곡면을 원점, 하나 이상의 데이터 점 또는 임의의 좌표에 피팅할 수 있습니다.

  • 제약 조건 점의 개수는 fittype의 계수 개수보다 클 수 없습니다. 예를 들어, 다음 1차 다항식은

    p1x+p2

    최대 2개의 제약 조건 점으로 피팅될 수 있습니다.

  • 제약 조건 허용오차는 TolCon을 설정하여 지정할 수 있습니다. 이는 제공된 제약 조건 점과 피팅이 통과하는 실제 점 간의 절대 수치적 차이의 상한이며, 이를 초과하면 제약 조건 위반으로 간주됩니다.

  • 비선형 fittype에 대한 제약 조건 점이 제공되는 경우, 즉 메서드가 NonlinearLeastSquares인 경우 피팅 알고리즘은 Interior-Point여야 합니다.

Fit Options pane showing Constraint Points options

팁

제약 조건 위반으로 인한 경고를 디버그하려면 명령줄에서 Display 이름-값 인수를 "iter"로 설정하고 제약 조건 점을 포함하여 워크플로를 반복하십시오.

참고 항목

앱

함수

도움말 항목