Uso de la función - Y para validar resultados de prueba de liberación diferencial usando R
La presión de burbuja del aceite es el resultado mas importante de la prueba de liberación diferencial. La validación de esta prueba consiste en verificar que la Pb medida se ajuste a la tendencia teórica de los volúmenes relativos y presión
Los datos de volumen relativo suelen requerir un suavizado para corregir las imprecisiones de laboratorio en la medición del volumen total de hidrocarburos justo por debajo de la presión de saturación y también a presiones más bajas. Para suavizar los valores del volumen relativo se utiliza una función de compresibilidad adimensional, comúnmente denominada función Y. La función en su forma matemática sólo está definida por debajo de la presión de saturación y viene dada por la siguiente expresión:
\[ Y = \frac{P_{sat}-P}{P(V_{rel})-1}\]
donde:
\(P_{sat} = saturation \ pressure,\ psi\)
\(P = pressure,\ psi\)
\(V_{rel} = relative \ volumen \ at \ pressure \ p\)
En este ejemplo, los datos de liberación diferencial se ajustan utilizando una regresión lineal simple en R para validar los resultados del experimento. En primer lugar, los datos de liberación diferencial se cargan desde un archivo CSV. El conjunto de datos tiene dos columnas, presión y volumen relativo.
pressure RV
1 1936 1.0000
2 1930 1.0014
3 1928 1.0018
4 1923 1.0030
5 1918 1.0042
6 1911 1.0058
Utilizando la ecuación anterior, se calcula la función Y a partir de los datos, para ello consideramos que la presión más alta es la presión de burbuja por lo que usamos la función max() para ubicarla. El resultado se almacena en una nueva columna llamada YFuncion en el dataset CCEdata, posteriormente generamos un gráfico usando paquete ggplot2
CCEdata$Yfunction <- (max(CCEdata$pressure)-CCEdata$pressure)/(CCEdata$pressure*(CCEdata$RV-1))
head(CCEdata)
pressure RV Yfunction
1 1936 1.0000 NaN
2 1930 1.0014 2.220577
3 1928 1.0018 2.305210
4 1923 1.0030 2.253423
5 1918 1.0042 2.234470
6 1911 1.0058 2.255544
library(ggplot2)
ggplot(data = CCEdata, aes(x = pressure, y = Yfunction)) +
geom_point()
Ahora, utilizando la función lm(), se define un modelo de regresión lineal, donde el valor de resultado (y) es la función Y y el predictor es la presión (x). Utilizando la función summary(), se muestran las características principales del modelo. Podemos ver que el coeficiente de determinación está muy cerca de 1, lo que significa un ajuste excelente. Además, la función Y no muestra una desviación superior o inferior.
Call:
lm(formula = Yfunction ~ pressure, data = CCEdata)
Residuals:
Min 1Q Median 3Q Max
-0.034747 -0.004077 -0.002536 0.001464 0.051041
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.141e+00 1.359e-02 83.93 <2e-16 ***
pressure 5.776e-04 8.795e-06 65.67 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.01755 on 14 degrees of freedom
(1 observation deleted due to missingness)
Multiple R-squared: 0.9968, Adjusted R-squared: 0.9965
F-statistic: 4312 on 1 and 14 DF, p-value: < 2.2e-16
Podemos añadir una columna al dataset CCEdata con los valores ajustados de la función Y para graficarlos juntos
pressure RV Yfunction Yfunction_fit
1 1936 1.0000 NaN NA
2 1930 1.0014 2.220577 2.255324
3 1928 1.0018 2.305210 2.254169
4 1923 1.0030 2.253423 2.251281
5 1918 1.0042 2.234470 2.248393
6 1911 1.0058 2.255544 2.244350
ggplot(data = CCEdata) +
geom_point(aes(x = pressure, y = Yfunction)) +
geom_line(aes(x = pressure, y = Yfunction_fit))
Referencias Ahmed, T (2019) Reservoir Engineering Handbook. Fifth edition.