Аппроксимирование кривыми и Распределение Подбора кривой

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

Выберите между Аппроксимирование Кривыми и Distribution Fitting

Аппроксимирования кривыми и подбор кривой распределения являются различными типами анализа данных.

  • Используйте аппроксимирование кривыми, когда вы хотите смоделировать переменную отклика как функцию от переменной предиктора.

  • Используйте подбор кривой распределения, когда вы хотите смоделировать распределение вероятностей одной переменной.

Аппроксимирование кривыми

В следующих экспериментальных данных переменная предиктора time, время после приема препарата. Переменная отклика conc, концентрацию препарата в кровотоке. Предположим, что только данные отклика conc затронуто экспериментальной ошибкой.

time = [ 0.1   0.1   0.3   0.3   1.3   1.7   2.1   2.6   3.9   3.9 ...
         5.1   5.6   6.2   6.4   7.7   8.1   8.2   8.9   9.0   9.5 ...
         9.6  10.2  10.3  10.8  11.2  11.2  11.2  11.7  12.1  12.3 ...
        12.3  13.1  13.2  13.4  13.7  14.0  14.3  15.4  16.1  16.1 ...
        16.4  16.4  16.7  16.7  17.5  17.6  18.1  18.5  19.3  19.7]';
conc = [0.01  0.08  0.13  0.16  0.55  0.90  1.11  1.62  1.79  1.59 ...
        1.83  1.68  2.09  2.17  2.66  2.08  2.26  1.65  1.70  2.39 ...
        2.08  2.02  1.65  1.96  1.91  1.30  1.62  1.57  1.32  1.56 ...
        1.36  1.05  1.29  1.32  1.20  1.10  0.88  0.63  0.69  0.69 ...
        0.49  0.53  0.42  0.48  0.41  0.27  0.36  0.33  0.17  0.20]';

Предположим, вы хотите смоделировать концентрацию крови как функцию времени. График conc против time.

plot(time,conc,'o');
xlabel('Time');
ylabel('Blood Concentration');

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

Предположим, что conc следует двухпараметрической кривой Вейбула как функция от time. Кривая Вейбула имеет вид и параметры

y=c(x/a)(b-1)e-(x/a)b,

где a - горизонтальное масштабирование, b является параметром формы, и c - вертикальное масштабирование.

Подгонка модели Вейбула с помощью нелинейных методов наименьших квадратов.

modelFun =  @(p,x) p(3) .* (x./p(1)).^(p(2)-1) .* exp(-(x./p(1)).^p(2));
startingVals = [10 2 5];
nlModel = fitnlm(time,conc,modelFun,startingVals);

Постройте график кривой Вейбула на данных.

xgrid = linspace(0,20,100)';
line(xgrid,predict(nlModel,xgrid),'Color','r');

Figure contains an axes. The axes contains 2 objects of type line.

Подобранная модель Weibull проблематична. fitnlm принимает, что экспериментальные ошибки являются аддитивными и происходят из симметричного распределения с постоянным отклонением. Однако график поля точек показывает, что отклонение ошибки пропорционально высоте кривой. Кроме того, аддитивные, симметричные ошибки подразумевают, что возможно отрицательное измерение концентрации в крови.

Более реалистичным предположением является то, что мультипликативные ошибки симметричны по шкале журнала. В соответствии с этим предположением подгоните кривую Вейбула к данным, взяв логарифмический журнал обеих сторон. Используйте нелинейные методы наименьших квадратов, чтобы соответствовать кривой:

log(y)=log(c)+(b-1)log(x/a)-(x/a)b.

nlModel2 = fitnlm(time,log(conc),@(p,x) log(modelFun(p,x)),startingVals);

Добавьте новую кривую к существующему графику.

line(xgrid,exp(predict(nlModel2,xgrid)),'Color',[0 .5 0],'LineStyle','--');
legend({'Raw Data','Additive Errors Model','Multiplicative Errors Model'});

Figure contains an axes. The axes contains 3 objects of type line. These objects represent Raw Data, Additive Errors Model, Multiplicative Errors Model.

Объект модели nlModel2 содержит оценки точности. Лучшая практика состоит в том, чтобы проверить качество подгонки. Для примера сделайте невязку графики в журнал масштабе, чтобы проверить предположение о постоянных отклонениях для мультипликативных ошибок.

В этом примере использование модели мультипликативных ошибок мало влияет на предсказания модели. Для примера, где тип модели имеет больше влияния, см. «Подводные камни в подборе кривой нелинейных моделей путем преобразования в линейность».

Функции для Аппроксимирования кривыми

  • Statistics and Machine Learning Toolbox™ включает в себя эти функции для подгонки моделей: fitnlm для моделей нелинейного метода наименьших квадратов, fitglm для обобщенных линейных моделей, fitrgp для регрессионных моделей Гауссова процесса и fitrsvm для машины опорных векторов регрессионных моделей.

  • Curve Fitting Toolbox™ предоставляет командную строку и графические инструменты, которые упрощают задачи в аппроксимирование кривыми. Для примера тулбокс обеспечивает автоматический выбор значений стартовых коэффициентов для различных моделей, а также устойчивых и непараметрических методов подгонки.

  • Optimization Toolbox™ имеет функции для выполнения сложных типов аппроксимирования кривыми анализа, таких как анализ моделей с ограничениями на коэффициенты.

  • Функция MATLAB ® polyfit подходит для полиномиальных моделей и функции MATLAB fminsearch полезен в других видах аппроксимирования кривыми.

Распределительный подбор кривой

Предположим, что вы хотите смоделировать распределение времени жизни электрических компонентов. Переменная life измеряет время до отказа для 50 одинаковых электрических компонентов.

life = [ 6.2 16.1 16.3 19.0 12.2  8.1  8.8  5.9  7.3  8.2 ...
        16.1 12.8  9.8 11.3  5.1 10.8  6.7  1.2  8.3  2.3 ...
         4.3  2.9 14.8  4.6  3.1 13.6 14.5  5.2  5.7  6.5 ...
         5.3  6.4  3.5 11.4  9.3 12.4 18.3 15.9  4.0 10.4 ...
         8.7  3.0 12.1  3.9  6.5  3.4  8.5  0.9  9.9  7.9]';

Визуализируйте данные с помощью гистограммы.

binWidth = 2;
lastVal = ceil(max(life));
binEdges = 0:binWidth:lastVal+1;
h = histogram(life,binEdges);
xlabel('Time to Failure');
ylabel('Frequency');
ylim([0 10]);

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

Поскольку данные о жизни часто следуют распределению Вейбула, одним из подходов может быть использование кривой Вейбула из предыдущего примера аппроксимированию кривыми, чтобы соответствовать гистограмме. Чтобы попробовать этот подход, преобразуйте гистограмму в набор точек (x, y), где x - центр интервала, а y - высота интервала, и затем подбирайте кривую к этим точкам.

counts = histcounts(life,binEdges);
binCtrs = binEdges(1:end-1) + binWidth/2;
h.FaceColor = [.9 .9 .9];
hold on
plot(binCtrs,counts,'o');
hold off

Figure contains an axes. The axes contains 2 objects of type histogram, line.

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

  1. Процесс нарушает основные допущения методом наименьших квадратов подбора кривой. Количества интервалов неотрицательны, что означает, что ошибки измерения не могут быть симметричными. Кроме того, количества интервалов имеют другую изменчивость в хвостах, чем в центре распределения. Наконец, количества интервалов имеют фиксированную сумму, что подразумевает, что они не являются независимыми измерениями.

  2. Если вы подбираете кривую Вейбула к штриховым высотам, вы должны ограничить кривую, потому что гистограмма является масштабированной версией эмпирической функции плотности вероятностей (pdf).

  3. Для непрерывных данных подгонка кривой к гистограмме, а не к данным отбрасывает информацию.

  4. Высоты стержней в гистограмме зависят от выбора границ интервала и ширины интервала.

Для многих параметрических распределений максимальная правдоподобность является лучшим способом оценки параметров, потому что он избегает этих проблем. PDF Вейбула имеет почти ту же форму, что и кривая Вейбула:

y=(b/a)(x/a)(b-1)e-(x/a)b.

Однако, b/a заменяет параметр шкалы c потому что функция должна интегрироваться в 1. Чтобы подогнать распределение Вейбула к данным с помощью максимальной вероятности, используйте fitdist и задайте 'Weibull' как имя распределения. В отличие от наименьших квадратов, максимальная правдоподобность находит PDF Вейбула, который лучше всего соответствует масштабированной гистограмме, не минимизируя сумму квадратов различий между высотами PDF и bar.

pd = fitdist(life,'Weibull');

Постройте масштабированную гистограмму данных и наложите установленный PDF.

h = histogram(life,binEdges,'Normalization','pdf','FaceColor',[.9 .9 .9]);
xlabel('Time to Failure');
ylabel('Probability Density');
ylim([0 0.1]);
xgrid = linspace(0,20,100)';
pdfEst = pdf(pd,xgrid);
line(xgrid,pdfEst)

Figure contains an axes. The axes contains 2 objects of type histogram, line.

Лучшая практика состоит в том, чтобы проверить качество подгонки.

Хотя подгонка кривой к гистограмме обычно не рекомендуется, процесс в некоторых случаях подходит. Для получения примера см. раздел «Подбор пользовательских одномерных Распределений».

Функции для распределительных Подборов кривой

  • Statistics and Machine Learning Toolbox™ включает функцию fitdist для аппроксимации объектов распределения вероятностей к данным. Это также включает специальные функции аппроксимации (такие как wblfit) для подбора кривой параметрических распределений, использующих максимальную правдоподобность, функция mle для подгонки пользовательских распределений без специальных функций аппроксимации и функции ksdensity для подбора кривой непараметрических моделей распределения к данным.

  • Statistics and Machine Learning Toolbox дополнительно предоставляет приложение Distribution Fitter, которое упрощает многие задачи по подбору кривой распределения, такие как генерация визуализаций и диагностических графиков.

  • Функции в Optimization Toolbox™ позволяют вам соответствовать сложным распределениям, включая те с ограничениями на параметры.

  • Функция MATLAB ® fminsearch обеспечивает максимальный подбор кривой распределения правдоподобия.

См. также

| | | | | | | | |

Похожие темы