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