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