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.
0 votos
Esta pregunta podría mejorarse con una explicación de cómo se calcula normalmente el error estándar y la confianza para el modelo de Michales Menten. Es posible que los programadores experimentados de R no estén familiarizados con este modelo en particular, pero probablemente podrían ayudarle a implementar el algoritmo que desea utilizar si lo describe claramente.
1 votos
En primer lugar, el hecho de que sea mejor el ajuste Lineweaver-Burk o el no lineal depende de la estructura de la incertidumbre. Deberías examinar los residuos cuidadosamente. De todos modos, yo haría un bootstrap de las predicciones.
0 votos
Cierto, supongo que he supuesto que añadir bandas de confianza a una función hiperbólica debería ser más o menos tan difícil como añadir barras de error a un modelo de regresión lineal. Supongo que he subestimado el alcance del problema.
0 votos
El segundo método (que creo que podría llamarse "linealización por intercambio de variables") parece similar al utilizado por @w_huber en: stats.stackexchange.com/questions/247709/ . Mi experiencia es que las respuestas de w_huber son de alta calidad y ésta tenía la ventaja añadida de que estaba expresada en R.