Scale difference between logs and cores considered as a source of error (log measurements with few feets and core measurements with few inches), a Correction must be made to find a correlation between log porosity and core porosity to predict core permeability, This done by using R.
data<-read.csv(("G:/karpur.csv"), header = TRUE)
head(data)
## depth caliper ind.deep ind.med gamma phi.N R.deep R.med SP
## 1 5667.0 8.685 618.005 569.781 98.823 0.410 1.618 1.755 -56.587
## 2 5667.5 8.686 497.547 419.494 90.640 0.307 2.010 2.384 -61.916
## 3 5668.0 8.686 384.935 300.155 78.087 0.203 2.598 3.332 -55.861
## 4 5668.5 8.686 278.324 205.224 66.232 0.119 3.593 4.873 -41.860
## 5 5669.0 8.686 183.743 131.155 59.807 0.069 5.442 7.625 -34.934
## 6 5669.5 8.686 109.512 75.633 57.109 0.048 9.131 13.222 -39.769
## density.corr density phi.core k.core Facies
## 1 -0.033 2.205 33.9000 2442.590 F1
## 2 -0.067 2.040 33.4131 3006.989 F1
## 3 -0.064 1.888 33.1000 3370.000 F1
## 4 -0.053 1.794 34.9000 2270.000 F1
## 5 -0.054 1.758 35.0644 2530.758 F1
## 6 -0.058 1.759 35.3152 2928.314 F1
phi_log<- data$phi.N
phi_core<- (data$phi.core)/100
k_core<- data$k.core
plot(phi_log,phi_core)
Phi_model <- lm((phi.core)/100~phi.N+Facies,data)
summary(Phi_model)
##
## Call:
## lm(formula = (phi.core)/100 ~ phi.N + Facies, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.103530 -0.011573 -0.000206 0.010463 0.102852
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.314805 0.002777 113.370 <2e-16 ***
## phi.N 0.013364 0.018060 0.740 0.4595
## FaciesF10 -0.107126 0.004175 -25.657 <2e-16 ***
## FaciesF2 -0.139572 0.008978 -15.546 <2e-16 ***
## FaciesF3 -0.082866 0.004398 -18.844 <2e-16 ***
## FaciesF5 -0.041853 0.003491 -11.989 <2e-16 ***
## FaciesF7 -0.089641 0.008390 -10.684 <2e-16 ***
## FaciesF8 -0.008922 0.004125 -2.163 0.0308 *
## FaciesF9 -0.050357 0.003984 -12.639 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.02326 on 810 degrees of freedom
## Multiple R-squared: 0.743, Adjusted R-squared: 0.7405
## F-statistic: 292.7 on 8 and 810 DF, p-value: < 2.2e-16
#make predictions
corrected_phi <- predict(Phi_model)
#plot the predictions, Phi core as a function of Phi log and Facies.
plot(phi_log, corrected_phi, main = "Linear Regression", xlab = "Log porocity",
ylab = "Core porocity", pch = 19)
perm_model <- lm(k.core ~ corrected_phi+Facies-1, data)
summary(perm_model)
##
## Call:
## lm(formula = k.core ~ corrected_phi + Facies - 1, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -5613.4 -596.9 -130.3 475.0 10449.1
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## corrected_phi -412352 89814 -4.591 5.11e-06 ***
## FaciesF1 132659 28386 4.673 3.47e-06 ***
## FaciesF10 87869 18969 4.632 4.21e-06 ***
## FaciesF2 73980 16049 4.610 4.69e-06 ***
## FaciesF3 97910 21087 4.643 4.00e-06 ***
## FaciesF5 118916 24729 4.809 1.81e-06 ***
## FaciesF7 95868 20496 4.677 3.40e-06 ***
## FaciesF8 130990 27786 4.714 2.86e-06 ***
## FaciesF9 111324 24050 4.629 4.28e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1546 on 810 degrees of freedom
## Multiple R-squared: 0.7652, Adjusted R-squared: 0.7626
## F-statistic: 293.2 on 9 and 810 DF, p-value: < 2.2e-16
corrected_perm <- predict(perm_model)
# 1. Boxplot: Depth vs Facies
# Define the layout for the 2x2 grid
layout(matrix(1:4, nrow = 2, byrow = TRUE))
# 1. Boxplot: Depth vs Facies
boxplot(data$depth ~ data$Facies,
main = "Depth vs Facies",
xlab = "Facies", ylab = "Depth",
ylim = rev(c(5667, 6083)),
col = "lightblue")
# 2. Corrected Permeability vs Depth
plot(corrected_perm, data$depth,
ylab = "Depth", xlab = "Corrected Permeability",
ylim = rev(c(5667, 6083)), xlim = c(11.26, 6280.7),
type = "l", main = "Corrected Permeability")
# 3. Core Permeability vs Depth
plot(k_core, data$depth,
ylab = "Depth", xlab = "Core Permeability",
ylim = rev(c(5667, 6083)), xlim = c(0.42, 15600),
type = "l", main = "Core Permeability")
# 4. Corrected Core Porosity vs Depth
plot(corrected_phi, data$depth,
ylab = "Depth", xlab = "Corrected Porosity",
ylim = rev(c(5667, 6083)), xlim = c(0.1775, 0.3203),
type = "l", main = "Corrected Porosity")