exponenta event banner

Оценка аппроксимации кривой

В этом примере показано, как работать с посадкой кривой.

Загрузить данные и подогнать полиномиальную кривую

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)

Figure contains an axes. The axes contains 2 objects of type line. These objects represent data, fitted curve.

Постройте график соответствия остатков.

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

Figure contains an axes. The axes contains 2 objects of type line. These objects represent data, zero line.

Постройте график прогнозируемых границ по посадке.

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

Figure contains an axes. The axes contains 4 objects of type line. These objects represent data, fitted curve, prediction bounds.

Вычислить вписывание в заданной точке

Вычислить вписывание в определенной точке, указав значение для x , используя эту форму: y = fittedmodel(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

Figure contains an axes. The axes contains 4 objects of type line. These objects represent fitted curve, prediction bounds.

Получение уравнения модели

Введите имя подгонки для отображения уравнения модели, коэффициентов подгонки и доверительных границ для коэффициентов подгонки.

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

Получение доверительных границ по коэффициентам

Используйте доверительные границы коэффициентов, чтобы оценить и сравнить соответствия. Доверительные границы коэффициентов определяют их точность. Границы, которые находятся далеко друг от друга, указывают на неопределенность. Если границы пересекают ноль для линейных коэффициентов, это означает, что нельзя быть уверенным, что эти коэффициенты отличаются от нуля. Если у некоторых модельных членов коэффициенты равны нулю, то они не помогают с посадкой.

confint(curvefit)
ans = 2×4

   -0.9743   23.5736   70.3308   59.6907
    2.8163   26.7931   77.3888   63.7981

Анализ статистики пригодности

Чтобы получить статистику соответствия в командной строке, можно выполнить одно из следующих действий:

  • Откройте приложение «Фитинг кривой» и выберите команду «Вписать» > «Сохранить в рабочую область», чтобы экспортировать в рабочую область подгонку и точность подгонки.

  • Укажите gof выходной аргумент с использованием fit функция.

Повторно создайте вписку, задающую 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)

Figure contains an axes. The axes contains an object of type histogram.

Печать подгонки, данных и остатков

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

Figure contains 2 axes. Axes 1 contains 2 objects of type line. These objects represent data, fitted curve. Axes 2 contains 2 objects of type line. These objects represent data, zero line.

Поиск методов

Перечислите все методы, которые можно использовать с посадкой.

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.