Curve Fitting и подбор кривой распределения

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

Выберите Between Curve Fitting и Distribution Fitting

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

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

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

Curve 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 следует за 2D параметром кривая Weibull в зависимости от time. Кривая Weibull имеет форму и параметры

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

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

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

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

Постройте кривую Weibull на данные.

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 принимает, что экспериментальные ошибки являются дополнением и прибывают из симметричного распределения с постоянным отклонением. Однако график рассеивания показывает, что ошибочное отклонение пропорционально высоте кривой. Кроме того, дополнение, симметричные ошибки подразумевают, что отрицательное измерение концентрации крови возможно.

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

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 содержит оценки точности. Лучшая практика состоит в том, чтобы проверять качество подгонки модели. Например, сделайте остаточные графики на логарифмической шкале, чтобы проверять предположение о постоянном отклонении для мультипликативных ошибок.

В этом примере, с помощью мультипликативной ошибочной модели оказывает мало влияния на предсказания модели. Для примера, где тип модели оказывает больше влияния, смотрите Ловушки в Том, чтобы подбирать Нелинейные Модели путем Преобразования к Линейности.

Функции для Curve Fitting

  • 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.

Поскольку пожизненные данные часто следуют за распределением Weibull, один подход может быть должен использовать кривую Weibull из предыдущего примера аппроксимирования кривыми, чтобы соответствовать гистограмме. Чтобы попробовать этот подход, преобразуйте гистограмму в набор точек (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. Если вы соответствуете кривой Weibull к высотам панели, необходимо ограничить кривую, потому что гистограмма является масштабированной версией функции плотности эмпирической вероятности (PDF).

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

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

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

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

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

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 обеспечивает подбор кривой распределения наибольшего правдоподобия.

Смотрите также

| | | | | | | | |

Похожие темы