Import dataset
que
hay en el marcoEste fichero
contiene los datos de la velocidad V
a la que tiene lugar
cierta reacción enzimática para distintas concentraciones
S
.
En el contexto de la cinética enzimática hay dos constantes (parámetros) importantes que caracterizan cada reacción:
La gráfica te permite visualizar Vmax y KM. La curva es una hipérbola rectangulas, cuya expresión es
\[V = \frac{b_0·S}{1+b1·S}\]
En el leguaje de las funciones:
Guarda el contenido del fichero de datos en la variable
enzimas
. Determina los coeficientes de la curva que mejor
ajusta esta nube de puntos.
En primer lugar, hay que visualizar la nube de puntos. La segunda
pregunta sugiere considerar S
como variable explicativa y
V
como la variable respuesta
plot(enzimas$S, enzimas$V, cex = 0.5, pch = 19, col = "red")
La forma del gráfico sugiere o bien un modelo logarítmico
\[V = b_0+b_1·\ln(S) \]
o bien una hiperbóla rectangular (puede que ya sepas que las reacciones enzimáticas de tipo Michaelis-Menten siguen una hipérbola).
La estrategia pasa por hacer una transformación en los datos (un cambio de variable) que los “linealice”, porque lo que sabemos ajustar es datos que etén dispuestos como una recta.
Por ejemplo, para el logaritmo, fíjate en que si llamas \(W=\ln(S)\) la expresión de arriba queda como
\[V = b_0+b_1·W \]
Es decir, si los datos se parecen a un logaritmo al representar \((\ln(S), V)\) (dcha) en lugar de \((S,V)\) (izq) deberías ver los datos alineados
par(mfrow=c(1,2))
plot(enzimas$S, enzimas$V, cex = 0.5, pch = 19, col = "red", main = "(S,V)")
plot(log(enzimas$S), enzimas$V, cex = 0.5, pch = 19, col = "red", main = "(ln(S), V)")
par(mfrow=c(1,1))
como efectivamente ocurre.
En el caso de la hiperbola rectangular el cambio de variable que transforma \[ V = \frac{b_0 S}{1 + b_1S} \] en una recta es \(S = 1/S_{inv}\), \(V = 1/V_{inv}\), y se llama doble recíproco. Si haces ese cambio, tienes
\[ \frac{1}{V_{inv}} = \frac{b_0 \frac{1}{S_{inv}}}{1 + b_1\frac{1}{S_{inv}}} \] multiplica el numerador y el denominador de la fracción de la derecha por \(S_{inv}\) para obtener
\[ \frac{1}{V_{inv}} = \frac{b_0 }{S_{inv} + b_1} \] lo que equivale a
\[ S_{inv} + b_1 = b_0 V_{inv} \] es decir, resordenando sumandos
\[ V_{inv} = \frac{b_1}{b_0} + \frac{1}{b_0}·S_{inv} \] que es la ecuación de una recta. Podemos visualizar esta transformación
par(mfrow=c(1,2))
plot(enzimas$S, enzimas$V, cex = 0.5, pch = 19, col = "red", main = "(S,V)")
plot(1/enzimas$S, 1/enzimas$V, cex = 0.5, pch = 19, col = "red", main = "(1/S,1/V)")
par(mfrow=c(1,1))
Tenemso que elegir, pués, entre dos candidatos a modelo. Y para ponernos de acuerdo recurrimos a los coeficientes de detarminación, que indican en qué proporción explica cada modelo la variación conjunta de los datos
Para el logaritmo
cor(log(enzimas$S), enzimas$V)^2
## [1] 0.8409003
Para el cambio a una hipérbola rectangular
cor(1/enzimas$S, 1/enzimas$V)^2
## [1] 0.8815699
La hipérbola explica en mayor proporción el comportamiento de los datos.
Para determinar los coeficientes \(b_0\) y \(b_1\) de la hipérbola, vamos a ajustar los datos transformados. Define
V_inv = 1/enzimas$V
S_inv = 1/enzimas$S
calcula el modelo lineal y obten los coeficientes
modelo = lm(V_inv ~ S_inv)
(modelo$coefficients)
## (Intercept) S_inv
## 0.20303861 0.06416347
para usarlos más tarde, vamos aguardarlos en sendas variables
Esto proporciona da la fórmula
\[V_{inv} = 0.2030386 + 0.0641635 · S_{inv} \]
Para obtener los valores de \(b_0\) y \(b_1\), recuerda que \[ V_{inv} = \frac{b_1}{b_0} + \frac{1}{b_0}·S_{inv} \] Para que ds rectas sean iguales tienen que tener el mismo término independiente y la misma pendiente, es decir, \[\frac{1}{b_0}=0.0641635 = \text{pendiente de la recta $S_{inv}$, $V_{inv}$}\] \[\frac{b_1}{b_0}=0.2030386 = \text{término independiente de la recta $S_{inv}$, $V_{inv}$}\]
Puedes despejar los coeficientes
\[b_0=\frac{1}{0.0641635}=15.5851927\]
y
\[b_1=0.2030386b_0 =3.1643958\]
de donde la fórmula de la hipérbola es
\[ V = \frac{15.5851927 * S}{1 + 3.1643958* S}\]
Si defines
termIndpte = unname(modelo$coefficients[1])
pendiente = unname(modelo$coefficients[2])
b0 = 1/pendiente
b1 = b0*termIndpte
puedes representar la nube de puntos original, y la curva que la aproxima
plot(enzimas$S, enzimas$V, cex = 0.5, pch = 19, col = "red",
xlim = c(0,5), ylim = c(0, 6))
par(new = TRUE)
x = seq(from = 0, to = 5, by = 0.001)
plot(x, b0*x/(1+b1*x), cex = 0.25, pch = 19, col = "blue",
xlim = c(0,5), ylim = c(0, 6), xlab = "", ylab = "")
Determina ahora Vmax y KM para los datos que tienes
Por un lado, la asíntota de la hipérbola se calcula como un límite:
\[\lim_{S\to\infty}\frac{15.5851927 * S}{1 + 3.1643958* S} = \frac{15.5851927}{3.1643958} =4.9251716\]
Por otro lado, KM cumple la condición:
\[Vmax/2 = \frac{b_0*KM}{1+b_1*KM}\] Despejando KM se tiene \[KM=\frac{Vmax}{b_0+b_1Vmax}= 0.158008\]
Calcula la velocidad que predice el modelo para una concentración de sustrato S = 3.
Hay dos alternativas:
O bien sustituyes en la ecuación de la hipérbola
b0*3/(1+b1*3)
## [1] 4.455803
O bien, puedes sustituir directamente en la recta de regresión obtenida \[ V_{inv} = \frac{S_{inv}}{b_0} + \frac{b_1}{b_0} \]
es decir,
\[\frac{1}{V} = 0.0641635 \frac{1}{3} + 0.2030386 = 0.2244264\]
y despejar
\[V = \frac{1}{0.2244264} = 4.4558031\]