Scale difference considered as a source of error in construct geological models. All data must be measured in the same scale . By using R , we can correct the core permeability to the log scale in order for all data to be measured in log scale because it is not possible to scale directly from the core scale to the reservoir scale.

table_data <- read.csv("karpur.csv")


#Convert phi.core from percentage to fraction
table_data$phi.core <- table_data$phi.core / 100
head(table_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 phi.core.frac
## 1       -0.033   2.205 0.339000 2442.590     F1      0.339000
## 2       -0.067   2.040 0.334131 3006.989     F1      0.334131
## 3       -0.064   1.888 0.331000 3370.000     F1      0.331000
## 4       -0.053   1.794 0.349000 2270.000     F1      0.349000
## 5       -0.054   1.758 0.350644 2530.758     F1      0.350644
## 6       -0.058   1.759 0.353152 2928.314     F1      0.353152
porosity_model <- lm( phi.core~phi.N + Facies - 1, data = table_data)
summary(porosity_model)
## 
## Call:
## lm(formula = phi.core ~ phi.N + Facies - 1, data = table_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|)    
## phi.N     0.013364   0.018060    0.74     0.46    
## FaciesF1  0.314805   0.002777  113.37   <2e-16 ***
## FaciesF10 0.207680   0.005072   40.95   <2e-16 ***
## FaciesF2  0.175233   0.009390   18.66   <2e-16 ***
## FaciesF3  0.231939   0.004955   46.81   <2e-16 ***
## FaciesF5  0.272953   0.003914   69.74   <2e-16 ***
## FaciesF7  0.225164   0.008730   25.79   <2e-16 ***
## FaciesF8  0.305884   0.005019   60.94   <2e-16 ***
## FaciesF9  0.264448   0.004825   54.81   <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.9928, Adjusted R-squared:  0.9928 
## F-statistic: 1.246e+04 on 9 and 810 DF,  p-value: < 2.2e-16
corrected_porosity <- predict(porosity_model, table_data)
permeability_model <- lm( k.core~corrected_porosity + Facies - 1 , data = table_data)
summary(permeability_model)
## 
## Call:
## lm(formula = k.core ~ corrected_porosity + Facies - 1, data = table_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_porosity  -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_permeability <- predict(permeability_model, data = table_data)
par(mfrow = c(1,5))

boxplot(depth~Facies , data = table_data, ylim = rev(c(5667,6083)))

plot(table_data$phi.core, table_data$depth, ylim = rev(c(5667,6083)), xlim = c(0.1570,0.3630)
     ,lwd = 2 , xlab = "Porosity core" , ylab = "depth" , type = "l")

plot(corrected_porosity, table_data$depth, ylim = rev(c(5667,6083)), xlim = c(0.1775,0.3203)
     ,lwd = 2 , xlab = "Coreccted Porosity core" , ylab = "depth" , type = "l")

plot(table_data$k.core, table_data$depth, ylim = rev(c(5667,6083)), xlim = c(0.42,15600.00)
     ,lwd = 2 , xlab = "Permeability core" , ylab = "depth" , type = "l")

plot(corrected_permeability, table_data$depth, ylim = rev(c(5667,6083)), xlim = c(101.7,3445.3)
     ,lwd = 2 , xlab = "Corrected Permeability core" , ylab = "depth" , type = "l")