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.

Importing Data

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

Plotting

phi_log<- data$phi.N
phi_core<- (data$phi.core)/100
k_core<- data$k.core
plot(phi_log,phi_core)

Regression model

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)

Visulization

# 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")