5 votos

El ajuste de una exponencial modelo de mezcla con intervalo de restricciones en la mezcla pesos

¿Qué métodos existen para ajustar un modelo de la forma $y=A\mathrm e^{Bx}+C\mathrm e^{Dx}+E$?

Aquí está el actual y los datos científicos para ser montados: http://dl.dropbox.com/u/39499990/Ben%2C%20real%20data.xlsx

B debe estar en el rango de -1 a -100.

D debe estar en el rango de -100 -500.

E es una constante.

Este modelo es de interés, ya que es aceptado en la comunidad científica para describir el proceso biológico en el lado de la Inactivación de un dependiente de voltaje de los canales de calcio. (para la referencia, véase, por ejemplo: Una novela molecular inactivación determinante de voltaje de CaV1.2 L de Ca2+ tipo de canal. Un Livneh, R Cohen, y D Atlas; la Neurociencia, Jan 2006; 139(4): 1275-87. "La tasa de inactivación fue analizado por un biexponential caries A1exp(-t/Tao1)-A2exp(-t/Tao2)+C" )

Mejor sería una solución que podría implementar en Excel, mediante la utilización de la acumulación en las funciones o código de VBA.

3voto

Jeff Hengesbach Puntos 1639

Te voy a mostrar cómo analizar los datos con Mathematica. En primer lugar voy a utilizar el modelo como se solicitó.

data = Import["Desktop/data.csv"];
y = NonlinearModelFit[data, 
  a Exp[b x] + c Exp[d x] + e, {a, b, c, d, e}, x];

Mathematica devuelve este error:

NonlinearModelFit::cvmit: no se pudo convergen solicitado a la exactitud o precisión dentro de 1000 iteraciones

Esto significa que el modelo no puede ser ideal. Vamos a considerar los datos para ver si podemos llegar con una mejor. El registro de la parcela de la negativa de su serie (por lo que podemos tomar el logaritmo) muestra una bastante de la curva polinomial:

Log-plot of raw data

(Generado mediante ListLogPlot[# {1, -1} & /@ data])

Esto sugiere que, en lugar de un aumento exponencial de la mezcla, se debe utilizar un log-lineal de la modelo:

$ \hat y = -\exp(a+bx+cx^2 + \dots)$

Vamos a probar un polinomio cúbico:

nlm = LinearModelFit[{#[[1]], Log[-#[[2]]]} & /@ data, {x, x^2, x^3}, x]

Mathematica devuelve 71.6838 - 391.293 x + 764.791 x^2 - 501.198 x^3

En otras palabras,

$ \hat y = -\exp(71.6838 - 391.293 x + 764.791 x^2 - 501.198 x^3)$.

Aquí es un gráfico de los datos, el modelo de mezcla (color rojo), y el log-lineal de la modelo (verde):

Final result

(Generado mediante Show[{ListPlot@data, Plot[y[x], {x, 0.38, 0.57}, PlotStyle -> {Thick, Red}], Plot[-Exp@nlm@x, {x, .35, 0.6}, PlotStyle -> {Thick, Green}]}])

Usted puede obtener cada vez un mejor ajuste con un polinomio de cuarto grado, pero usted consigue la idea. Los residuos de mostrar la estructura, lo que significa que el modelo no ha exprimido toda la información de los datos:

Residual of cubic polynomial

(Generado mediante ListPlot@nlm["FitResiduals"])

Afortunadamente, el fin de prácticamente desaparece en el momento de levantar la orden de seis:

Residual of hexic polynomial

1voto

mat_geek Puntos 1367

Estás buscando métodos o software a implementar? Parece un problema de regresión no lineal. En SAS esto se implementa mediante proc nlin.

1voto

Patrick Burns Puntos 691

Mejor no es una solución en Excel: hojas de cálculo no son un buen ambiente para el análisis de los datos: http://www.burns-stat.com/pages/Tutor/spreadsheet_addiction.html

El 'nls' función en R sería una opción.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X