Hola Argel,

Como referencia adicional, por si puede dar algún resultado o ayudar a
enfocar el problema de una manera alternativa, hay un libro "Non Linear
Regression with R" que también tiene un paquete asociado en R (nlrwr):

http://www.amazon.es/Nonlinear-Regression-R-Use/dp/0387096159/ref=sr_1_sc_1?ie=UTF8&qid=1327441411&sr=8-1-spell
http://cran.at.r-project.org/web/packages/nlrwr/index.html

En este libro también se estudia el caso de esta ecuación y se contempla lo
que has comentado de P0 con diferentes valores al que se le puede seguir
aplicando la función nls() pero especificando que P0 indica realmente un
factor. Extender el conjunto de datos con el caso que comentas de P0=5
podría ayudar al modelo.

De todas formas llegado un punto de bloqueo también puedes escribir a los
autores del paper y preguntarles por detalles de cómo codificaron su
modelo, si han llegado o pueden utilizar R para replicar resultados. El
impacto de su paper ya está conseguido, vaya supongo que te darían acceso a
lo que han hecho...

Saludos,
Carlos Ortega
www.qualityexcellence.es

El 24 de enero de 2012 20:41, Argel Gastélum Arellánez <
argel.gastelum@gmail.com> escribió:

>     Hola Carlos, muchas gracias por tu ayuda. Me parece muy interesante
> la forma de aplicar nls2. Pongo algunas notas abajo.
>
> El 24/01/12 09:23, Carlos Ortega escribió:
> > Hola,
> >
> > He probado con otra variante, visto que utilizando nls y los
> > algoritmos de aproximación (default y port) están dando resultados
> > todavía lejanos a los del artículo, además de los problemas de
> > convergencia o de singularidad.
> > ant
>
>     En realidad el parámetro que sale bastante alejado de los
> resultados del artículo es Kiu, los otros dan resultados muy similares.
> Puesto que uno de los objetivos es comprobar que el modelo mixto no es
> el que mejor se ajusta a los datos... ¿Sería válido quedarse con el
> resultado final que se obtiene con nls y "port", aunque el algoritmo
> señale que existe "Convergence failure: singular convergence (7)"?, los
> valores que obtiene "port" son (±SE):
>
> Km = 44.3 (±3.7), Kic = 6.9 (±2.1), Kiu = 1.1 x 10^6 (±1.2 x 10^10) y k3
> = 0.0184 (±7.1 x 10^-4), SSE = 157.1
>
> mientras que en el artículo reportan con SAS que (no menciona si es ±SE,
> SD o CI):
>
> Km = 46.1 (±1.6), Kic = 9.2 (±0.9), Kiu = 1.2 x 10^64 (±ND) y k3 =
> 0.0183 (±0.0002), SSE = 229.1
>
> > La aproximación que he utilizado es la siguiente:
> >
> >  1. He utilizado varios algoritmos de los que proporciona el paquete
> >     nls2. En este paquete la aproximación es más de "fuerza bruta".
> >  2. De los varios algortimos que ofrece el paquete: fuerza-bruta,
> >     random-search, plinear. Los resultados con fuerza-bruta y
> >     random-search son equivalentes. He desechado el de plinear por no
> >     ajustar correctamente.
> >  3. Para el algoritmo "brute-force", se puede definir un grid de
> >     evaluación que permite al algoritmo evaluar diferentes opciones,
> >     es algo más lento pero no excesivo.
> >  4. En este grid, he jugado con varios extremos para el valor de "Kiu"
> >     que es el que se va de madre. He probado con valores desde 0 a
> >     1000, hasta quedarme con el último caso en el que lo he iterado
> >     entre 10^11 y 10^20.
> >  5. Además de la librería "nls2", he utilizado también la librería
> >     "nlstools" que ofrece una función "overview()" que proporciona el
> >     intervalo de confianza de cada unos de los parámetros del modelo
> >     (intervalos de confianza del 2.5% y del 97.5%).
> >
> > El código de todo esto es el siguiente:
> >
> > ################
> > #### Fuerza Bruta
> > # Resultados paper SAS: Km = 46.1, Kic = 9.2, Kiu = 1.2 x 10^64, k3 =
> > 0.0183
> > library(nls2)
> > library(nlstools)
> >
> > mi.me <http://mi.me><-t ~
> >
> ((Km+Km*P0/Kic+Km*S0/Kic)*log((S0-(Pt-P0))/S0)+(-Km/Kic+1+P0/Kiu+S0/Kiu)*((S0-(Pt-P0))-S0)+(-1/(2*Kiu))*((S0-(Pt-P0))^2-S0^2))*(-1/(E*k3))
> >
> > gr.id <http://gr.id><-expand.grid(
> >                    Km=seq(30,80,len=10),
> >                    Kic=seq(6,12,len=10),
> >                    Kiu=seq(10^11,10^20,len=10),
> >                    k3=seq(0.01,0.04,len=10)
> >                   )
> > ### Brute-Force
> > aj.bf <http://aj.bf> <- nls2(
> > mi.me <http://mi.me>,
> >               data=d.a,
> >               start = gr.id <http://gr.id>,
> >               algorithm = "brute-force"
> >              )
> >
> > summary(aj.bf <http://aj.bf>)
> > overview(aj.bf <http://aj.bf>)
> > ################
> >
> > Y el resultado de overview(aj.bf <http://aj.bf>) es el siguiente (tan
> > sólo incluyo el intervalo de confianza):
> >
> > ------
> > Asymptotic confidence interval:
> >               2.5%        97.5%
> > Km   4.451537e+01 5.992907e+01
> > Kic  1.481808e+00 1.185153e+01
> > Kiu -1.039715e+17 1.039717e+17
> > k3   1.921825e-02 2.078175e-02
> >
>      El valor de Km obtenidos por fuerza bruta resulta un poco más alejado
> del artículo que el último obtenido usando nls con "port". Aunque
> considerando los intervalos de confianza no habría mucha diferencia.
>
>      Estimate Std. Error t value Pr(>|t|)
> Km  5.222e+01  3.841e+00   13.60<2e-16 ***
> Kic 6.667e+00  2.584e+00    2.58   0.0127 *
> Kiu 1.000e+11  5.181e+16    0.00   1.0000
> k3  2.000e-02  3.896e-04   51.34<2e-16 ***
>
>
>
> > Como detalles y preguntas adicionales:
> >
> >   * No he probado con valores superiones de Kiu. Bueno, sí que he
> >     probado con valores de 10^60 y 10^61 pero el modelo no converge.
> >     Supongo que ya aparecen problemas de precisión...
> >
>
>      Y al final el problema es muy similar al encontrado con nls, que no
> se llega al valor reportado de Kiu obtenido con SAS, aunque aquí la
> ventaja es que por fuerza bruta con nls2 sí converge.
>
> >   * En el paquete nlstools hay ejemplos de ajuste de curvas de
> >     Michaelis-Menten dentro del punto de su help "compet_mich". Puede
> >     resultar ilustrativo ver el tipo de ajustes que se utilizan.
> >
>
>      Ya había revisado la ayuda de nlstools. Ahí ajustan los modelos de
> michaelis menten sin inhibición, con inhibición competitiva y con
> inhibición no competitiva (en sus formas no integradas), pero a datos de
> velocidad inicial de reacción vs concentración de sustrato, la cual es
> la manera clásica (después del método de Lineweaver-Burk) de obtener los
> valores de Km, Vmáx, Kic y Kiu por medio de regresión no lineal. De
> hecho, esta ayuda fue muy ilustrativa y me permitió entender en general
> cómo usar nls.
>
>     En el artículo también lo hacen así, calculando las velocidades
> iniciales de reacción en ausencia y presencia del inhibidor desde el
> tiempo cero (que es el mismo producto de la reacción), y al ajustar los
> modelos no integrados de Michaelis Menten usando nls con "port" se
> obtiene exactamente los valores reportados con SAS en el documento para
> el mismo tipo de ajuste.
>
> >   * Tambén en el paquete nlstools, hay uhtilidades adicinales
> >     (nlsConfRegions o nlsResiduals) que añaden detalles al análisis.
> >   * De los datos que has aportado, P0 siempre es cero (0). Aunque son
> >     datos empíricos, ¿ser siempre cero no podría ayudar a simplificar
> >     la fórmula del modelo?. Vaya eliminar P0 de la fórmula y así
> >     quitar un parámetro de ajuste.
> >
>
>      Aquí lo que pasó fue que sólo envié los datos donde P0 es siempre
> cero pues el ajuste que me daba problemas era con este set de datos,
> pero existe otro set de datos donde P0 = 5. El total de datos (tanto con
> P0 = 0 como P0 = 5) se utiliza para ajustar todos los modelos
> (integrados y no integrados) y obtener los parámetros en presencia del
> inhibidor desde el tiempo cero de la reacción.
>
>     Esto debido a que otro de los objetivos del artículo fue demostrar
> que el ajuste de los modelos integrados de Michaelis Menten es más
> preciso para obtener los valores de los parámetros que al ajustar los
> modelos no integrados (incluso en ausencia de una concentración inicial
> del inhibidor), puesto que no se tiene la impresición adicional de medir
> la velocidad inicial en presencia del inhibidor desde el inicio de la
> reacción.
>
> >   * Otro tema que me genera ciertas dudas es el de que los datos
> >     experimentales de "t" tienen la pinta de diferentes experimentos
> >     donde "t" siempre se mueve en un rango (0 a 60). Y esto se repite
> >     8 veces. ¿No puede ayudar este patrón a ajustar un primer modelo
> >     con cada una de las celdas?...
> >
>
>      Tienes razón, t (tiempo en segundos) indica que hay ocho
> experimentos, monitoreados de 0 a 60 s, donde se determina la
> concentración de producto (Pt) liberado al medio de reacción, a una
> concentración de producto (S0). P0 es la concentración de producto
> añadido en el tiempo cero y E la concentración de enzima. Existe otro
> set de datos donde P0 = 5. Esto es lo que los autores denominan "curvas
> de progreso de reacción" (Pt vs t).
>
>     La velocidad inicial de reacción para cada concentración de
> sustrato se puede calcular por regresión lineal de las diferentes curvas
> Pt vs t (una por cada valor de S0), para de esta forma ajustar los
> modelos no integrados de Michaelis-Menten a las curvas Vinicial vs S0,
> como lo hacen en la ayuda de nlstools.
>
>     Sin embargo, el objetivo de los autores fue demostrar que ajustar
> los modelo integrados de Michaelis-Menten directamente a las curvas de
> progreso Pt vs t es más preciso que ajustar los modelos no integrados a
> las curvas Vinicial vs S0, lo que parecen lograr de acuerdo con los
> resultados mostrados en el documento.
>
> > Por último otra duda que puede ayudar. En el artículo donde comentan
> > esta aproximación vía código SAS, ¿se incluyen los intervalos de
> > confianza para cada parámetro?. A lo mejor los resultados que ya
> > obtenemos están en esos intervalos (lo digo más que nada por Kiu).
> >
>
>      Más arriba puse los intervalos de error mostrados en el artículo,
> pero no indican si son error estándar, desviación estándar o intervalos
> de confianza. Al parecer los resultados obtenidos con R y nls caen
> dentro de estos intervalos, excepto para los valores de Kiu.
>
>     Cabe notar que al ajustar los modelos integrados al total de los
> datos (con P0 = 0 y P0 = 5 simultáneamente) se obtienen casi exactamente
> los valores reportados por los autores con SAS, sin que nls tenga
> problemas para encontrar convergencia, excepto para el modelo mixto, en
> el que el valor de Kiu vuelve a ser cada vez más grande. Es más, los
> autores reportan en este caso que el modelo con inhibición no
> competitiva no converge, mientras que en R con nls sí se encuentra
> convergencia.
>
> > Saludos,
> > Carlos Ortega
> > www.qualityexcellence.es <http://www.qualityexcellence.es>
>
>     De nuevo muchas gracias por tu ayuda Carlos.
>
>     Saludos.
>
> --
>     Argel.
>
>        [[alternative HTML version deleted]]
>
>
> _______________________________________________
> R-help-es mailing list
> R-help-es@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>

	[[alternative HTML version deleted]]

