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

Примите, что 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');

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

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

журнал(y)=журнал(c)+(b-1)журнал(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'});

Объект модели 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]);

Поскольку пожизненные данные часто следуют за распределением 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

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

  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)

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

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

Функции для подбора кривой распределения

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

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

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

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

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

| | | | | | | | |

Похожие темы