Main Content

Esta página es para la versión anterior. La página correspondiente en inglés ha sido eliminada en la versión actual.

Ajuste de curva y ajuste de distribución

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

Elija Entre el empalme de curva y el accesorio de distribución

El empalme de curva y el empalme 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 el empalme 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 medicamento.time La variable de respuesta es, la concentración de la droga en el torrente sanguíneo.conc Supongamos 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 de sangre como una función del tiempo. Trazar contra .conctime

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

Supongamos que sigue una curva Weibull de dos parámetros en 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 una escala vertical.

Ajuste el modelo 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);

Trazar 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 provienen 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, los errores simétricos aditivos implican que es posible una medición negativa de la concentración sanguínea.

Una suposición más realista es que los errores multiplicativos son simétricos en la escala de registro. 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 del ajuste del modelo. Por ejemplo, realice trazados residuales en la escala de registro para comprobar la asunció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 obtener un ejemplo en el que el tipo de modelo tiene más impacto, consulte .

Funciones para el ajuste de curva

  • Statistics and 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 gaussianos y para modelos de regresión de máquina vectoriales de soporte.fitnlmfitglmfitrgpfitrsvm

  • La caja de herramientas de ajuste de curvas™ 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 ofrece la opción automática de valores de coeficiente inicial para varios modelos, así como métodos de ajuste robustos y no paramétricos.

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

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

Ajuste de distribución

Supongamos que desea modelar la distribución de la duración de los componentes eléctricos. La variable mide el tiempo hasta el fallo de 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 por vida a menudo siguen una distribución de Weibull, un enfoque podría ser utilizar 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 e 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

Sin embargo, ajustar una curva a un histograma es problemático y, por lo general, no se recomienda.

  1. El proceso infringe las suposiciones básicas de ajuste de mínimos cuadrados. Los recuentos de bins no son negativos, lo que implica que los errores de medición no pueden ser simétricos. Además, los recuentos de ubicación tienen una variabilidad diferente en las colas que en el centro de la distribución. Por último, los recuentos de ubicación 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, debe restringir la curva porque el histograma es una versión escalada de una función de densidad de probabilidad empírica (pdf).

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

  4. Las alturas de las barras en el histograma dependen de la elección de los bordes de la bandeja y los anchos de la bandeja.

Para muchas distribuciones paramétricas, la máxima probabilidad 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 la 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');

Trazar un histograma escalado de los datos y superponer 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 del ajuste del modelo.

Aunque normalmente no se recomienda ajustar una curva a un histograma, el proceso es apropiado en algunos casos. Para obtener un ejemplo, consulte .

Funciones para el montaje de distribución

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

  • Statistics and 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 diagramas de diagnóstico.Distribution Fitter

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

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

Consulte también

| | | | | | | | | |

Temas relacionados