6 votos

¿Cómo añadir bandas de confianza del 95% a un modelo de regresión no lineal?

Michaelis Menten Function Lineweaver Burk Plot

Bien, pues la cinética de la velocidad enzimática de la catálisis con un sustrato se suele medir con un modelo hiperbólico conocido como modelo de Michaelis Menten. Es decir, v = (V Max * [S]) / ([S] + K M ), donde "K M \= la mitad de la concentración de sustrato en V Max y V Max es la meseta superior esperada de la hipérbola.

Tengo un modelo de regresión no lineal y quiero las bandas de confianza del 95% teniendo en cuenta los errores estándar. ¿Cómo lo consigo?

S = c(2.5, 5.0, 10.0, 15.0, 20.0)
v = c(0.024, 0.036, 0.053, 0.060, 0.064)
mm <- data.frame(cbind(S,v))
#View(mm)
mm

S v
1 2.5 0.024
2 5.0 0.036
3 10.0 0.053
4 15.0 0.060
5 20.0 0.064

plot(v ~ S, data = mm, main = "Michealis Menten Nonlinear Regression Fitting", 
     xlab = "Substrate Concentration (mM)", ylab = "Rate (mM / sec)", 
     cex.lab = 1.4, cex.main = 1, pch = 16)

model <- nls(v ~ S*Vm/(S + K), data = mm, start = list(K = max(mm$v)/2, Vm = max(mm$v)))
summary(model)
#----
Formula: v ~ S * Vm/(S + K)

Parameters:
Estimate Std. Error t value Pr(>|t|) 
K 6.561892 0.478720 13.71 0.00084 ***
Vm 0.085857 0.002353 36.49 4.52e-05 ***
---
Signif. codes: 
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.001035 on 3 degrees of freedom

Number of iterations to convergence: 6 
Achieved convergence tolerance: 2.298e-06

curve(x * 0.085857 /(x + 6.561892), col = "darkorchid3", add = TRUE) 

También he hecho un doble modelo recíproco de LineWeaver Burk para calcular V Max & K M con regresión lineal. Pero en mi opinión, el modelo de regresión no lineal calcula mejor los parámetros.

mm$Reciprocal_S <- 1 / mm$S
mm$Reciprocal_v <- 1 / mm$v
mm
#---------
S v Reciprocal_S Reciprocal_v
1 2.5 0.024 0.40000000 41.66667
2 5.0 0.036 0.20000000 27.77778
3 10.0 0.053 0.10000000 18.86792
4 15.0 0.060 0.06666667 16.66667
5 20.0 0.064 0.05000000 15.62500
#-----
plot(Reciprocal_v ~ Reciprocal_S, data = mm, pch = 16, xlab = "(1 / [S])", ylab = "(1 / v)",
     cex.main = 2, cex.lab = 1.4, main = "Experimental Lineweaver Burk Plot")

linear_model <- lm(mm$Reciprocal_v ~ mm$Reciprocal_S)
summary(linear_model)
#--------
Call:
lm(formula = mm$Reciprocal_v ~ mm$Reciprocal_S)

Residuals:
1 2 3 4 5 
-0.30625 0.89115 -0.47556 -0.16243 0.05309

Coefficients:
Estimate Std. Error t value Pr(>|t|) 
(Intercept) 11.8003 0.4449 26.53 0.000118 ***
mm$Reciprocal_S 75.4314 2.1357 35.32 4.99e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.6173 on 3 degrees of freedom
Multiple R-squared: 0.9976, Adjusted R-squared: 0.9968 
F-statistic: 1248 on 1 and 3 DF, p-value: 4.991e-05
#-----
 abline(linear_model) 

Ahora, ¿cómo obtengo las bandas de confianza del 95% para este modelo bioquímico significativo, el hiperbólico?

2 votos

Esto es realmente una cuestión de métodos/teoría más que de codificación. Una vez que resuelvas tu actual falta de algoritmo, se convertirá en una pregunta de codificación bastante fácil.

0 votos

Quiero que R haga el modelo, así que creo que es una cuestión de codificación. ¿Cómo crees que hice la hipérbola? Con la función nls R.

3 votos

Estoy de acuerdo con @42-. No está claro el método que quieres utilizar para calcular los intervalos de confianza. Necesitas alguna hipótesis de modelización. El hecho de que quieras hacer esto en R no lo convierte en una cuestión de codificación. Todavía estás en la parte en la que no sabes qué hacer, no cómo para hacerlo. No hay funciones mágicas de IC en las estadísticas que sirvan para todo.

5voto

mmm osman Puntos 16

Creo que el paquete de propagación puede hacer lo que buscas.

require(propagate)

pred_model <- predictNLS(model, newdata=mm)
conf_model <- pred$summary
plot(v~S)

lines(conf_model$Prop.Mean.1 ~ S, lwd=2)
lines(conf_model$"Sim.2.5%" ~ S, lwd=1)
lines(conf_model$"Sim.97.5%" ~ S, lwd=1)

enter image description here

0 votos

¡Wow! Muchas gracias. Me gusta ver que los puntos están dentro de los intervalos de confianza. Sin embargo, me pregunto por qué la hipérbola principal ha perdido su curva. Parece que llega a unos pocos puntos.

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