В этом примере показано, как выполнить подбор кривой аппроксимирования кривыми и распределения и обсуждает, когда каждый метод является соответствующим.
Аппроксимирование кривыми и подбор кривой распределения являются различными типами анализа данных.
Используйте аппроксимирование кривыми, когда это необходимо, чтобы смоделировать переменную отклика в зависимости от переменного предиктора.
Используйте распределение, соответствующее, когда это необходимо, чтобы смоделировать вероятностное распределение одной переменной.
В следующих экспериментальных данных переменным предиктором является 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 имеет форму и параметры
где горизонтальное масштабирование, параметр формы, и вертикальное масштабирование.
Подбирайте модель 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 к данным путем взятия журнала обеих сторон. Используйте нелинейный метод наименьших квадратов, чтобы соответствовать кривой:
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
содержит оценки точности. Лучшая практика состоит в том, чтобы проверять качество подгонки модели. Например, сделайте остаточные графики на логарифмической шкале, чтобы проверять предположение о постоянном отклонении для мультипликативных ошибок.
В этом примере, с помощью мультипликативной ошибочной модели оказывает мало влияния на предсказания модели. Для примера, где тип модели оказывает больше влияния, смотрите Ловушки в Том, чтобы подбирать Нелинейные Модели путем Преобразования к Линейности.
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
Подбор кривой кривой к гистограмме, однако, проблематичен и обычно не рекомендуемый.
Процесс нарушает основные допущения подбора кривой наименьших квадратов. Количество интервалов является неотрицательным, подразумевая, что погрешности измерения не могут быть симметричными. Кроме того, количество интервалов имеет различную изменчивость в хвостах, чем в центре распределения. Наконец, количество интервалов имеет фиксированную сумму, подразумевая, что они - весьма зависимые измерения.
Если вы соответствуете кривой Weibull к высотам панели, необходимо ограничить кривую, потому что гистограмма является масштабированной версией функции плотности эмпирической вероятности (PDF).
Для текущих данных, соответствуя кривой к гистограмме, а не данным отбрасывает информацию.
Высоты панели в гистограмме зависят от выбора ширин интервала и границ интервала.
Для многих параметрических распределений наибольшее правдоподобие является лучшим способом оценить параметры, потому что оно избегает этих проблем. PDF Weibull имеет почти ту же форму как кривая Weibull:
Однако заменяет масштабный коэффициент потому что функция должна объединяться к 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
обеспечивает подбор кривой распределения наибольшего правдоподобия.
Distribution Fitter | fitdist
| fitglm
| fitnlm
| fitrgp
| fitrsvm
| fminsearch
| ksdensity
| mle
| polyfit