Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Ajuste de curva y ajuste de distribución

En este ejemplo se muestra cómo realizar el empalme de curva y el ajuste de distribución, y se describe cuándo es apropiado cada método.

Elija entre empalme de curva y ajuste de distribución

El empalme de curva y el accesorio de distribución son diferentes tipos de análisis de datos.

  • Utilice el empalme de curva cuando desee modelar una variable de respuesta como una función de una variable predictora.

  • Utilice la conexión de distribución cuando desee modelar la distribución de probabilidad de una sola variable.

Ajuste de curva

En los siguientes datos experimentales, la variable predictora es, el tiempo después de la ingestión de un fármaco.time La variable de respuesta es, la concentración de la droga en el torrente sanguíneo.conc Suponga que solo los datos de respuesta se ven afectados por un error experimental.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]';

Supongamos que desea modelar la concentración sanguínea como una función del tiempo. Complot contra.conctime

plot(time,conc,'o'); xlabel('Time'); ylabel('Blood Concentration');

Supongamos que sigue una curva de Weibull de dos parámetros como una función de.conctime Una curva de Weibull tiene la forma y los parámetros

<math display="block">
<mrow>
<mi>y</mi>
<mo>=</mo>
<mi>c</mi>
<mo stretchy="false">(</mo>
<mi>x</mi>
<mo>/</mo>
<mi>a</mi>
<msup>
<mrow>
<mo stretchy="false">)</mo>
</mrow>
<mrow>
<mo stretchy="false">(</mo>
<mi>b</mi>
<mo>-</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
</mrow>
</msup>
<msup>
<mrow>
<mi>e</mi>
</mrow>
<mrow>
<mo>-</mo>
<mo stretchy="false">(</mo>
<mi>x</mi>
<mo>/</mo>
<mi>a</mi>
<msup>
<mrow>
<mo stretchy="false">)</mo>
</mrow>
<mrow>
<mi>b</mi>
</mrow>
</msup>
</mrow>
</msup>
<mo>,</mo>
</mrow>
</math>

Dónde

<math display="block">
<mrow>
<mi>a</mi>
</mrow>
</math>
es una escala horizontal,
<math display="block">
<mrow>
<mi>b</mi>
</mrow>
</math>
es un parámetro de forma y
<math display="block">
<mrow>
<mi>c</mi>
</mrow>
</math>
es un escalado vertical.

Ajuste el modelo de Weibull utilizando mínimos cuadrados no lineales.

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

Trace la curva de Weibull en los datos.

xgrid = linspace(0,20,100)'; line(xgrid,predict(nlModel,xgrid),'Color','r');

El modelo Weibull ajustado es problemático. asume que los errores experimentales son aditivos y proceden de una distribución simétrica con varianza constante.fitnlm Sin embargo, el gráfico de dispersión muestra que la varianza de error es proporcional a la altura de la curva. Además, el aditivo, los errores simétricos implican que es posible una medición de la concentración sanguínea negativa.

Una suposición más realista es que los errores multiplicativos son simétricos en la escala logarital. Bajo esa suposición, ajuste una curva de Weibull a los datos tomando el registro de ambos lados. Utilice mínimos cuadrados no lineales para ajustar la curva:

<math display="block">
<mrow>
<mi mathvariant="normal">log</mi>
<mo stretchy="false">(</mo>
<mi>y</mi>
<mo stretchy="false">)</mo>
<mo>=</mo>
<mi mathvariant="normal">log</mi>
<mo stretchy="false">(</mo>
<mi>c</mi>
<mo stretchy="false">)</mo>
<mo>+</mo>
<mo stretchy="false">(</mo>
<mi>b</mi>
<mo>-</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mi mathvariant="normal">log</mi>
<mo stretchy="false">(</mo>
<mi>x</mi>
<mo>/</mo>
<mi>a</mi>
<mo stretchy="false">)</mo>
<mo>-</mo>
<mo stretchy="false">(</mo>
<mi>x</mi>
<mo>/</mo>
<mi>a</mi>
<msup>
<mrow>
<mo stretchy="false">)</mo>
</mrow>
<mrow>
<mi>b</mi>
</mrow>
</msup>
<mo>.</mo>
</mrow>
</math>

nlModel2 = fitnlm(time,log(conc),@(p,x) log(modelFun(p,x)),startingVals);

Añada la nueva curva al trazado existente.

line(xgrid,exp(predict(nlModel2,xgrid)),'Color',[0 .5 0],'LineStyle','--'); legend({'Raw Data','Additive Errors Model','Multiplicative Errors Model'});

El objeto de modelo contiene estimaciones de precisión.nlModel2 Una práctica recomendada es comprobar la bondad de ajuste del modelo. Por ejemplo, haga trazados residuales en la escala logaritmo para comprobar la suposición de varianza constante para los errores multiplicativos.

En este ejemplo, el uso del modelo de errores multiplicativos tiene poco efecto en las predicciones del modelo. Para ver un ejemplo en el que el tipo de modelo tiene más impacto, vea.Trampas en los modelos no lineales de adaptación transformando a linealidad

Funciones para ajuste de curva

  • Estadísticas y machine learning Toolbox™ incluye estas funciones para los modelos de ajuste: para modelos de mínimos cuadrados no lineales, para modelos lineales generalizados, para modelos de regresión de proceso Gaussiano y para modelos de regresión de máquinas vectoriales de soporte.fitnlmfitglmfitrgpfitrsvm

  • Curve fitting Toolbox™ proporciona herramientas gráficas y de línea de comandos que simplifican las tareas en el ajuste de curvas. Por ejemplo, la caja de herramientas proporciona opciones automáticas de valores de coeficiente de inicio para varios modelos, así como métodos de ajuste robustos y no paramétricos.

  • Optimization Toolbox™ tiene funciones para realizar complicados tipos de análisis de ajuste de curvas, como el análisis de modelos con restricciones en los coeficientes.

  • La función MATLAB® se ajusta a los modelos polinómicos, y la función MATLAB es útil en otros tipos de empalme de curva.polyfitfminsearch

Accesorio de distribución

Supongamos que desea modelar la distribución de los tiempos de vida de los componentes eléctricos. La variable mide el tiempo de falla para 50 componentes eléctricos idénticos.life

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

Visualice los datos con un histograma.

binWidth = 2; lastVal = ceil(max(life)); binEdges = 0:binWidth:lastVal+1; h = histogram(life,binEdges); xlabel('Time to Failure'); ylabel('Frequency'); ylim([0 10]);

Dado que los datos de duración a menudo siguen una distribución de Weibull, un enfoque podría ser usar la curva de Weibull del ejemplo de ajuste de curva anterior para ajustarse al histograma. Para probar este enfoque, convierta el histograma en un conjunto de puntos (x, y), donde x es un centro de ubicación y y es una altura de ubicación y, a continuación, ajuste una curva a esos puntos.

counts = histcounts(life,binEdges); binCtrs = binEdges(1:end-1) + binWidth/2; h.FaceColor = [.9 .9 .9]; hold on plot(binCtrs,counts,'o'); hold off

Ajustar una curva a un histograma, sin embargo, es problemático y generalmente no se recomienda.

  1. El proceso viola supuestos básicos de ajuste de mínimos cuadrados. Los recuentos de bin no son negativos, lo que implica que los errores de medición no pueden ser simétricos. Además, los recuentos de bin tienen una variabilidad diferente en las colas que en el centro de la distribución. Por último, los recuentos de bin tienen una suma fija, lo que implica que no son mediciones independientes.

  2. Si ajusta una curva de Weibull a las alturas de la barra, tiene que restringir la curva porque el histograma es una versión a escala de una función de densidad de probabilidad empírica (pdf).

  3. Para datos continuos, ajustar una curva a un histograma en lugar de datos descarta información.

  4. Las alturas de las barras en el histograma dependen de la elección de las aristas de la bandeja y de las anchuras.

Para muchas distribuciones paramétricas, la máxima verosimilitud es una mejor manera de estimar los parámetros porque evita estos problemas. El PDF de Weibull tiene casi la misma forma que la curva de Weibull:

<math display="block">
<mrow>
<mi>y</mi>
<mo>=</mo>
<mo stretchy="false">(</mo>
<mi>b</mi>
<mo>/</mo>
<mi>a</mi>
<mo stretchy="false">)</mo>
<mo stretchy="false">(</mo>
<mi>x</mi>
<mo>/</mo>
<mi>a</mi>
<msup>
<mrow>
<mo stretchy="false">)</mo>
</mrow>
<mrow>
<mo stretchy="false">(</mo>
<mi>b</mi>
<mo>-</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
</mrow>
</msup>
<msup>
<mrow>
<mi>e</mi>
</mrow>
<mrow>
<mo>-</mo>
<mo stretchy="false">(</mo>
<mi>x</mi>
<mo>/</mo>
<mi>a</mi>
<msup>
<mrow>
<mo stretchy="false">)</mo>
</mrow>
<mrow>
<mi>b</mi>
</mrow>
</msup>
</mrow>
</msup>
<mo>.</mo>
</mrow>
</math>

Sin embargo

<math display="block">
<mrow>
<mi>b</mi>
<mo>/</mo>
<mi>a</mi>
</mrow>
</math>
reemplaza el parámetro de escala
<math display="block">
<mrow>
<mi>c</mi>
</mrow>
</math>
porque la función debe integrarse a 1. Para ajustar una distribución de Weibull a los datos utilizando la máxima verosimilitud, utilice y especifique como nombre de distribución.fitdist'Weibull' A diferencia de los mínimos cuadrados, la máxima probabilidad encuentra un PDF de Weibull que mejor coincida con el histograma escalado sin minimizar la suma de las diferencias cuadradas entre el PDF y las alturas de la barra.

pd = fitdist(life,'Weibull');

Trace un histograma a escala de los datos y superponga el pdf ajustado.

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)

Una práctica recomendada es comprobar la bondad de ajuste del modelo.

Aunque normalmente no se recomienda ajustar una curva a un histograma, el proceso es adecuado en algunos casos. Para ver un ejemplo, vea.Adaptación de distribuciones univariadas personalizadas

Funciones para el ajuste de distribución

  • Estadísticas y machine learning Toolbox™ incluye la función para ajustar los objetos de distribución de probabilidad a los datos.fitdist También incluye funciones de ajuste dedicadas (como) para ajustar distribuciones paramétricas utilizando la máxima verosimilitud, la función de ajuste de distribuciones personalizadas sin funciones de ajuste dedicadas y la función para ajustar la distribución no paramétrica modelos a datos.wblfitmleksdensity

  • Estadísticas y machine learning Toolbox proporciona además la aplicación, que simplifica muchas tareas en el ajuste de distribución, como la generación de visualizaciones y gráficas de diagnóstico.Distribución Fitter

  • Las funciones de Optimization Toolbox™ permiten ajustar distribuciones complicadas, incluidas las que tienen restricciones en los parámetros.

  • La función MATLAB® proporciona un ajuste de distribución de máxima verosimilitud.fminsearch

Consulte también

| | | | | | | | |

Temas relacionados