     Hola Jorge, muchas gracias por tus comentarios. Pongo algunas notas 
más abajo.

El 23/01/12 17:19, Jorge I Velez escribió:
> Hola Argel,
>
> Muchas gracias por los datos y el codigo ;-)
>
> Despues de modificar las opciones nls.control(), obtengo:
>
> # -----------
> #  datos
> # -----------
> DATOS <- structure(list(t = c(0L, 10L, 20L, 30L, 40L, 50L, 60L, 0L, 10L,
> 20L, 30L, 40L, 50L, 60L, 0L, 10L, 20L, 30L, 40L, 50L, 60L, 0L,
> 10L, 20L, 30L, 40L, 50L, 60L, 0L, 10L, 20L, 30L, 40L, 50L, 60L,
> 0L, 10L, 20L, 30L, 40L, 50L, 60L, 0L, 10L, 20L, 30L, 40L, 50L,
> 60L, 0L, 10L, 20L, 30L, 40L, 50L, 60L), Pt = c(0, 0.566, 1.154,
> 1.704, 2.281, 2.709, 3.124, 0, 0.634, 1.296, 2.01, 2.639, 3.257,
> 3.844, 0, 0.966, 1.749, 2.558, 3.275, 4.014, 4.611, 0, 0.952,
> 1.953, 2.939, 3.92, 4.825, 5.766, 0, 1.261, 2.608, 3.906, 5.135,
> 6.423, 7.612, 0, 1.363, 2.928, 4.37, 6.015, 7.78, 9.363, 0, 1.588,
> 3.125, 4.772, 6.463, 7.77, 9.907, 0, 2.044, 3.816, 5.346, 7.141,
> 8.803, 10.441), S0 = c(25, 25, 25, 25, 25, 25, 25, 34.7, 34.7,
> 34.7, 34.7, 34.7, 34.7, 34.7, 45, 45, 45, 45, 45, 45, 45, 90,
> 90, 90, 90, 90, 90, 90, 200, 200, 200, 200, 200, 200, 200, 500,
> 500, 500, 500, 500, 500, 500, 1000, 1000, 1000, 1000, 1000, 1000,
> 1000, 2000, 2000, 2000, 2000, 2000, 2000, 2000), P0 = c(0L, 0L,
> 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
> 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
> 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
> 0L, 0L, 0L, 0L, 0L, 0L), E = c(9.5, 9.5, 9.5, 9.5, 9.5, 9.5,
> 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5,
> 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5,
> 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5,
> 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5)), .Names = c("t",
> "Pt", "S0", "P0", "E"), class = "data.frame", row.names = c(NA,
> -56L))
>
> # -----------
> #  modelos
> # -----------
> # default
> AJUSTE.default <- nls(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)), 
> DATOS, start = list (Km = 50, Kic = 6, Kiu = 6, k3 = 0.02), control = 
> nls.control(warnOnly = TRUE, maxiter = 50000, tol = 1e-05), algorithm 
> = "default")
> #Warning message:
> #In nls(t ~ ((Km + Km * P0/Kic + Km * S0/Kic) * log((S0 - (Pt - 
> P0))/S0) +  :
> #  singular gradient
>
> summary(AJUSTE.default)
> #Error in chol2inv(object$m$Rmat()) :
> #  element (4, 4) is zero, so the inverse cannot be computed
>
> # port
> AJUSTE.port <- nls(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)), 
> DATOS, start = list (Km = 50, Kic = 6, Kiu = 6, k3 = 0.02), control = 
> nls.control(warnOnly = TRUE, maxiter = 50000, tol = 1e-05), algorithm 
> = "port")
> #Warning message:
> #In nls(t ~ ((Km + Km * P0/Kic + Km * S0/Kic) * log((S0 - (Pt - 
> P0))/S0) +  :
> #  Convergence failure: singular convergence (7)
> summary(AJUSTE.port)
>
> #Formula: 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))
>
> #Parameters:
> #     Estimate Std. Error t value Pr(>|t|)
> #Km  4.426e+01  3.704e+00  11.950 <2e-16 ***
> #Kic 6.928e+00  2.117e+00   3.273   0.0019 **
> #Kiu 1.137e+06  1.220e+10   0.000   0.9999
> #k3  1.839e-02  7.075e-04  25.991 <2e-16 ***
> #---
> #Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
> #
> #Residual standard error: 1.738 on 52 degrees of freedom
> #
> #Algorithm "port", convergence message: singular convergence (7)
>
> Como veras, aunque el modelo "default" definitivamente no converge, 
> aunque el modelo "port" si.  Lo que no entiendo es por que la 
> diferencia entre los resultados que envias y lo que obtuve (ejecute el 
> codigo tal y como lo enviaste y no obtuve lo mismo).

     Ejecuté el código que me envías modificado y obtengo exactamente el 
mismo resultado que encuentras. Sin embargo, creo que tampoco el 
algoritmo "port" converge, a menos que yo esté interpretando mal el 
mensaje último: " Convergence failure: singular convergence (7) "

> Te sugeriria revisar un poco las expresiones a la derecha de "t ~ "; 
> seguramente puede haber un termino que aparece varias veces.
>

     Los modelos están capturados exactamente como los reportan los 
autores del artículo en SAS. Mi intención por ahora es tratar de obtener 
el mismo resultado que ellos con los mismos modelos pero en R y con nls. 
Comenté un poco más sobre este artículo en mi respuesta a Olivier.

> Saludos,
> Jorge.-

     De nuevo muchas gracias por tu ayuda.

     Saludos.

--
     Argel.


	[[alternative HTML version deleted]]

