Оцените подгонку кривой

Этот пример показывает, как работать с подгонкой кривой.

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

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')

Оцените подгонку в заданной точке

Оцените подгонку в отдельном моменте путем определения значения для 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-предел осей к 2 050 прежде, чем построить подгонку. Чтобы построить интервалы прогноза, используйте 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 array
    {'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

Исследуйте статистику качества подгонки

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

  • Открытое приложение Curve Fitting и выбирает Fit> Save to Workspace, чтобы экспортировать вашу подгонку и качество подгонки к рабочей области.

  • Задайте выходной аргумент 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)

Постройте подгонку, данные и невязки

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.
Для просмотра документации необходимо авторизоваться на сайте