About

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.

Content

  1. Importing Data
  2. Linear Regression Model
  3. Data visualization

Importing Data

Importing the Karpur dataset.

setwd("C:/Users/n/Desktop/ResCharHomework")
data<-read.csv(("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

Assining and Plotting Variables

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

Linear Regression model

Creating models to predict both porosity and permeability of the core.

Porosity Modle

# In case of single lethology
Phi_model <- lm((phi.core)/100~phi.N,data)
# In case of several Facies
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)

Permeability Model

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
# Perm predictions
corrected_perm <- predict(perm_model)

Data visualization

# corrected core porosity versus 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"
     )

# core permeability versus 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 Permeabilit"
     )

# corrected permeability versus 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 Permreability"
     )

# Facies versus depthh
boxplot(data$depth ~ data$Facies,
        main = "Depth vs Facies",
        xlab = "Facies",
        ylab = "Depth", ylim=rev(c(5667, 6083)),
        col = "lightblue"
        )