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