1-Dykstra-Parson Coefficient
Let’s load the data
data = read.csv('karpur.csv')
head(data)
Sorting permeability values in a descending order and finding samples
>= k portions
data = data[order(data$k.core, decreasing=TRUE), ]
K = data$k.core
#Calculating Number of Samples >= k
sample = c(1: length(K))
# Calculating % >= k
k_percent = (sample * 100) / length(K)
Straight line can be shown
xlab = "Portion of Total Samples Having Larger or Equal K "
ylab = "Permeability (md)"
plot(k_percent, K, log = 'y', xlab = xlab, ylab = ylab, pch = 10, cex = 0.5, col = "#001c49")

A linear model is fitted to the data.
log_k = log(K)
model = lm(log_k ~ k_percent)
plot(k_percent,log_k, xlab = xlab, ylab = ylab, pch = 10, cex = 0.5, col = "#001c49")
abline(model, col = 'red', lwd = 2)

Calculating the Heterogeneity Index
new_data = data.frame(k_percent = c(50, 84.1))
predicted_values = predict(model, new_data)
heterogenity_index = (predicted_values[1] - predicted_values[2]) / predicted_values[1]
heterogenity_index
1
0.2035464
LS0tDQp0aXRsZTogIkhldGVyb2dlbmVpdHkgUXVhbnRpZmljYXRpb24gYnkgRHlrc3RyYS1QYXJzb24iDQphdXRob3I6ICJBaG1lZCBXYXNmaSBUYWhlciINCmRhdGU6ICJPY3RvYmVyIDIxLCAyMDI0Ig0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KDQojIDEtRHlrc3RyYS1QYXJzb24gQ29lZmZpY2llbnQNCg0KTGV0J3MgbG9hZCB0aGUgZGF0YQ0KDQpgYGB7cn0NCmRhdGEgPSByZWFkLmNzdigna2FycHVyLmNzdicpDQpoZWFkKGRhdGEpDQpgYGANCg0KU29ydGluZyBwZXJtZWFiaWxpdHkgdmFsdWVzIGluIGEgZGVzY2VuZGluZyBvcmRlciBhbmQgZmluZGluZyBzYW1wbGVzIFw+PSBrIHBvcnRpb25zDQoNCmBgYHtyfQ0KZGF0YSA9IGRhdGFbb3JkZXIoZGF0YSRrLmNvcmUsIGRlY3JlYXNpbmc9VFJVRSksIF0NCksgPSBkYXRhJGsuY29yZQ0KDQojQ2FsY3VsYXRpbmcgTnVtYmVyIG9mIFNhbXBsZXMgPj0gaw0Kc2FtcGxlID0gYygxOiBsZW5ndGgoSykpDQoNCiMgQ2FsY3VsYXRpbmcgJSA+PSBrDQprX3BlcmNlbnQgPSAoc2FtcGxlICogMTAwKSAvIGxlbmd0aChLKQ0KYGBgDQoNClN0cmFpZ2h0IGxpbmUgY2FuIGJlIHNob3duDQoNCmBgYHtyfQ0KeGxhYiA9ICJQb3J0aW9uIG9mIFRvdGFsIFNhbXBsZXMgSGF2aW5nIExhcmdlciBvciBFcXVhbCBLICINCnlsYWIgPSAiUGVybWVhYmlsaXR5IChtZCkiDQpwbG90KGtfcGVyY2VudCwgSywgbG9nID0gICd5JywgeGxhYiA9IHhsYWIsIHlsYWIgPSB5bGFiLCBwY2ggPSAxMCwgY2V4ID0gMC41LCBjb2wgPSAiIzAwMWM0OSIpDQpgYGANCg0KQSBsaW5lYXIgbW9kZWwgaXMgZml0dGVkIHRvIHRoZSBkYXRhLg0KDQpgYGB7cn0NCmxvZ19rID0gbG9nKEspDQptb2RlbCA9IGxtKGxvZ19rIH4ga19wZXJjZW50KQ0KcGxvdChrX3BlcmNlbnQsbG9nX2ssIHhsYWIgPSB4bGFiLCB5bGFiID0geWxhYiwgcGNoID0gMTAsIGNleCA9IDAuNSwgY29sID0gIiMwMDFjNDkiKQ0KYWJsaW5lKG1vZGVsLCBjb2wgPSAncmVkJywgbHdkID0gMikNCmBgYA0KDQpDYWxjdWxhdGluZyB0aGUgSGV0ZXJvZ2VuZWl0eSBJbmRleA0KDQpgYGB7cn0NCm5ld19kYXRhID0gZGF0YS5mcmFtZShrX3BlcmNlbnQgID0gYyg1MCwgODQuMSkpDQpwcmVkaWN0ZWRfdmFsdWVzID0gcHJlZGljdChtb2RlbCwgbmV3X2RhdGEpDQpoZXRlcm9nZW5pdHlfaW5kZXggPSAocHJlZGljdGVkX3ZhbHVlc1sxXSAtIHByZWRpY3RlZF92YWx1ZXNbMl0pIC8gcHJlZGljdGVkX3ZhbHVlc1sxXQ0KaGV0ZXJvZ2VuaXR5X2luZGV4DQpgYGANCg==