Membuat plot DEA (Bogetoft & Otto, 2010)

if(!require(Benchmarking)) {
  install.packages("Benchmarking"); require(Benchmarking)}
library(Benchmarking) #load the Benchmarking library

x <- matrix(c(20, 40, 40, 60, 70, 50),ncol=1) #define inputs
y <- matrix(c(20, 30, 50, 40, 60, 20),ncol=1) #define outputs

# Membuat grafik DEA
txt <- LETTERS[1:dim(x)[1]]
dea.plot.frontier (x,y, RTS = "vrs", main="Basic DEA", cex=1.25)
dea.plot (x,y, RTS = "crs", add=TRUE, lty="dashed")
text(x,y, txt, adj=c(-.7,-.2),cex=1.25)

Menghitung nilai eisiensi Input Oriented dengan asumsi VRS

#Menghitung nilai eisiensi, Input Oriented
e_vrs <- dea(x,y, RTS="vrs", ORIENTATION="in")#solve LP problem
eff(e_vrs) #select efficiency scores from the results in e
[1] 1.0000000 0.6666667 1.0000000 0.5555556 1.0000000 0.4000000

Menghitung nilai eisiensi Input Oriented dengan asumsi CRS

e_crs <- dea(x,y, RTS="crs", ORIENTATION="in")
eff(e_crs)
[1] 0.8000000 0.6000000 1.0000000 0.5333333 0.6857143 0.3200000

Memetakan pasangan DMU

e_vrs <- dea(x,y, RTS="vrs", ORIENTATION="in")
peers(e_vrs)
     peer1 peer2
[1,]     1    NA
[2,]     1     3
[3,]     3    NA
[4,]     1     3
[5,]     5    NA
[6,]     1    NA

Mengkompilasi hasil perhitungan skor efisiensi

#Mengkompile hasil perhitungan skor efisiensi
dea_ff<-cbind(RS=txt,Input=c(x),Output=c(y), E_CRS=c(eff(e_crs)), E_VRS=c(eff(e_vrs)))

data.frame(dea_ff)
# Allocative efficiency
x1 <- matrix(c(2, 2, 5, 10, 10, 3, 12, 8, 5, 4, 6,12),ncol=2)
y1 <- matrix(c(1,1,1,1,1,1), ncol=1)
w1 <- matrix(c(1.5, 1), ncol=2)

txt <- LETTERS[1:dim(x)[1]]
dea.plot(x1[,1],x1[,2], ORIENTATION="in",  cex=1.25)
text(x1[,1],x1[,2],txt,adj=c(-.7,-.2),cex=1.25)

# Technical efficiency
te <- dea(x1,y1,RTS="vrs")
te
[1] 1.0000 1.0000 1.0000 1.0000 0.7500 0.6667
#Menghitung Minimsisasi Cost
xopt <- cost.opt(x1,y1, w1, RTS="vrs") #cost minimisation
xopt
     [,1] [,2]
[1,]    2    8
[2,]    2    8
[3,]    2    8
[4,]    2    8
[5,]    2    8
[6,]    2    8
cobs <- x1 %*% t(w1)
copt <- xopt$x %*% t(w1)

# Cost efficiency
ce <- copt/cobs
# Allocaltive efficiency
ae <- ce/te$eff
data.frame("ce"=ce,"te"=te$eff,"ae"=ae)
print(cbind("ce"=c(ce),"te"=te$eff,"ae"=c(ae)),digits=2)
       ce   te   ae
[1,] 0.73 1.00 0.73
[2,] 1.00 1.00 1.00
[3,] 0.88 1.00 0.88
[4,] 0.58 1.00 0.58
[5,] 0.52 0.75 0.70
[6,] 0.67 0.67 1.00
# isocost line in the technology plot
x1 <- matrix(c(2, 2, 5, 10, 10, 3, 12, 8, 5, 4, 6,12),ncol=2)
y1 <- matrix(c(1,1,1,1,1,1), ncol=1)
w1 <- matrix(c(1.5, 1), ncol=2)

txt <- LETTERS[1:dim(x)[1]]
dea.plot(x1[,1],x1[,2], ORIENTATION="in",  cex=1.25)
text(x1[,1],x1[,2],txt,adj=c(-.7,-.2),cex=1.25)
abline(a=copt[1]/w1[2], b=-w1[1]/w1[2], lty="dashed")

Menggunakan data Hospital

# Bootstraping in DEA
x<- with(hospital, cbind(gp_FTE, nurse_total, other_prof,  beds)) # define input
y<- with(hospital, cbind(outpatients, admissions1)) # define output

#Input oriented efficiency
dea_input<-dea.boot(x,y,NREP=100, RTS = "vrs", ORIENTATION = "in")
summary(dea_input$eff)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
 0.1882  0.5210  0.6606  0.6828  0.8481  1.0000 
summary(dea_input$eff.bc)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
 0.1660  0.4560  0.5909  0.5927  0.7500  0.9230 
#Mengkompile hasil perhitungan skor efisiensi
dea_comp_input<-data.frame(cbind(id_rs=hospital$id_rs, 
                      EI=c(dea_input$eff), 
                      EI_bc=c(dea_input$eff.bc), 
                      EI_CI_low=c(dea_input$conf.int[,1]), 
                      EI_CI_hi=c(dea_input$conf.int[,2])))

data.frame(dea_comp_input)

#Output oriented efficiency
dea_output<-dea.boot(x,y,NREP=100, RTS = "vrs", ORIENTATION = "out")
summary(dea_output$eff)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  1.000   1.204   1.577   1.900   2.097  10.363 
summary(dea_output$eff.bc)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  1.115   1.381   1.750   2.169   2.290  11.842 

#Mengkompile hasil perhitungan skor efisiensi
dea_comp_output<-data.frame(cbind(id_rs=hospital$id_rs, 
                      EO=c(dea_output$eff), 
                      EO_bc=c(dea_output$eff.bc), 
                      EO_CI_low=c(dea_output$conf.int[,1]), 
                      EO_CI_hi=c(dea_output$conf.int[,2])))


data.frame(dea_comp_output)
#Merge hasil DEA ke dataframe utama
hospital_dea<-merge(hospital, dea_comp_input, by="id_rs", all = TRUE )


#Boxplot Skor Efisiensi Input by kepemilikan RS
ggplot(hospital_dea, aes(publichospital, EI_bc)) +
  geom_boxplot()

# Second stage DEA analysis: Analisis Variabel Kontekstual
#Dengan tobit regression
if(!require(AER)) {
  install.packages("AER"); require(AER)}
Loading required package: AER
Loading required package: car
Loading required package: carData
Registered S3 method overwritten by 'data.table':
  method           from
  print.data.table     
Loading required package: lmtest
Loading required package: zoo

Attaching package: 㤼㸱zoo㤼㸲

The following objects are masked from 㤼㸱package:base㤼㸲:

    as.Date, as.Date.numeric

Loading required package: sandwich
Loading required package: survival
library(AER) #load the AER library

eTob <- tobit(EI_bc ~ publichospital + non_JavaBali, left=-Inf, right=1, data=hospital_dea)
summary(eTob)

Call:
tobit(formula = EI_bc ~ publichospital + non_JavaBali, left = -Inf, 
    right = 1, data = hospital_dea)

Observations:
         Total  Left-censored     Uncensored Right-censored 
           198              0            198              0 

Coefficients:
                              Estimate Std. Error z value Pr(>|z|)    
(Intercept)                    0.67388    0.02168  31.085  < 2e-16 ***
publichospitalPublic          -0.06053    0.02300  -2.632  0.00849 ** 
non_JavaBalinon-Jawa and Bali -0.07342    0.02300  -3.192  0.00141 ** 
Log(scale)                    -1.85060    0.05025 -36.826  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Scale: 0.1571 

Gaussian distribution
Number of Newton-Raphson Iterations: 3 
Log-likelihood: 85.47 on 4 Df
Wald-statistic: 19.23 on 2 Df, p-value: 6.6646e-05 
#Dengan Truncated Regression
if(!require(truncreg)) {
  install.packages("truncreg"); require(truncreg)}
Loading required package: truncreg
Loading required package: maxLik
Loading required package: miscTools

Please cite the 'maxLik' package as:
Henningsen, Arne and Toomet, Ott (2011). maxLik: A package for maximum likelihood estimation in R. Computational Statistics 26(3), 443-458. DOI 10.1007/s00180-010-0217-1.

If you have questions, suggestions, or comments regarding the 'maxLik' package, please use a forum or 'tracker' at maxLik's R-Forge site:
https://r-forge.r-project.org/projects/maxlik/
library(truncreg) #load the truncreg library

eTrunc<-truncreg(formula=EI_bc ~ publichospital + non_JavaBali, data=hospital_dea, point=1, direction = "right")
NaNs produced
summary(eTrunc)

Call:
truncreg(formula = EI_bc ~ publichospital + non_JavaBali, data = hospital_dea, 
    point = 1, direction = "right")

BFGS maximization method
38 iterations, 0h:0m:0s 
g'(-H)^-1g = 1.38E-11 
 


Coefficients :
                                Estimate Std. Error t-value  Pr(>|t|)    
(Intercept)                    0.6823214  0.0235959 28.9169 < 2.2e-16 ***
publichospitalPublic          -0.0640735  0.0244095 -2.6249  0.008666 ** 
non_JavaBalinon-Jawa and Bali -0.0776962  0.0244458 -3.1783  0.001481 ** 
sigma                          0.1614373  0.0089629 18.0118 < 2.2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Log-Likelihood: 86.994 on 4 Df
LS0tDQp0aXRsZTogIkRhdGEgRW52ZWxvcG1lbnQgQW5hbHlzaXMiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQoNCk1lbWJ1YXQgcGxvdCBERUEgKEJvZ2V0b2Z0ICYgT3R0bywgMjAxMCkNCmBgYHtyfQ0KaWYoIXJlcXVpcmUoQmVuY2htYXJraW5nKSkgew0KICBpbnN0YWxsLnBhY2thZ2VzKCJCZW5jaG1hcmtpbmciKTsgcmVxdWlyZShCZW5jaG1hcmtpbmcpfQ0KbGlicmFyeShCZW5jaG1hcmtpbmcpICNsb2FkIHRoZSBCZW5jaG1hcmtpbmcgbGlicmFyeQ0KDQp4IDwtIG1hdHJpeChjKDIwLCA0MCwgNDAsIDYwLCA3MCwgNTApLG5jb2w9MSkgI2RlZmluZSBpbnB1dHMNCnkgPC0gbWF0cml4KGMoMjAsIDMwLCA1MCwgNDAsIDYwLCAyMCksbmNvbD0xKSAjZGVmaW5lIG91dHB1dHMNCg0KIyBNZW1idWF0IGdyYWZpayBERUENCnR4dCA8LSBMRVRURVJTWzE6ZGltKHgpWzFdXQ0KZGVhLnBsb3QuZnJvbnRpZXIgKHgseSwgUlRTID0gInZycyIsIG1haW49IkJhc2ljIERFQSIsIGNleD0xLjI1KQ0KZGVhLnBsb3QgKHgseSwgUlRTID0gImNycyIsIGFkZD1UUlVFLCBsdHk9ImRhc2hlZCIpDQp0ZXh0KHgseSwgdHh0LCBhZGo9YygtLjcsLS4yKSxjZXg9MS4yNSkNCmBgYA0KDQoNCk1lbmdoaXR1bmcgbmlsYWkgZWlzaWVuc2kgSW5wdXQgT3JpZW50ZWQgZGVuZ2FuIGFzdW1zaSBWUlMNCmBgYHtyfQ0KI01lbmdoaXR1bmcgbmlsYWkgZWlzaWVuc2ksIElucHV0IE9yaWVudGVkDQplX3ZycyA8LSBkZWEoeCx5LCBSVFM9InZycyIsIE9SSUVOVEFUSU9OPSJpbiIpI3NvbHZlIExQIHByb2JsZW0NCmVmZihlX3ZycykgI3NlbGVjdCBlZmZpY2llbmN5IHNjb3JlcyBmcm9tIHRoZSByZXN1bHRzIGluIGUNCmBgYA0KDQpNZW5naGl0dW5nIG5pbGFpIGVpc2llbnNpIElucHV0IE9yaWVudGVkIGRlbmdhbiBhc3Vtc2kgQ1JTDQpgYGB7cn0NCmVfY3JzIDwtIGRlYSh4LHksIFJUUz0iY3JzIiwgT1JJRU5UQVRJT049ImluIikNCmVmZihlX2NycykNCmBgYA0KDQpNZW1ldGFrYW4gcGFzYW5nYW4gRE1VDQpgYGB7cn0NCmVfdnJzIDwtIGRlYSh4LHksIFJUUz0idnJzIiwgT1JJRU5UQVRJT049ImluIikNCnBlZXJzKGVfdnJzKQ0KYGBgDQoNCg0KTWVuZ2tvbXBpbGFzaSBoYXNpbCBwZXJoaXR1bmdhbiBza29yIGVmaXNpZW5zaQ0KYGBge3IgcmVzdWx0cz0iYXNpcyJ9DQojTWVuZ2tvbXBpbGUgaGFzaWwgcGVyaGl0dW5nYW4gc2tvciBlZmlzaWVuc2kNCmRlYV9mZjwtY2JpbmQoUlM9dHh0LElucHV0PWMoeCksT3V0cHV0PWMoeSksIEVfQ1JTPWMoZWZmKGVfY3JzKSksIEVfVlJTPWMoZWZmKGVfdnJzKSkpDQoNCmRhdGEuZnJhbWUoZGVhX2ZmKQ0KYGBgDQoNCg0KYGBge3J9DQojIEFsbG9jYXRpdmUgZWZmaWNpZW5jeQ0KeDEgPC0gbWF0cml4KGMoMiwgMiwgNSwgMTAsIDEwLCAzLCAxMiwgOCwgNSwgNCwgNiwxMiksbmNvbD0yKQ0KeTEgPC0gbWF0cml4KGMoMSwxLDEsMSwxLDEpLCBuY29sPTEpDQp3MSA8LSBtYXRyaXgoYygxLjUsIDEpLCBuY29sPTIpDQoNCnR4dCA8LSBMRVRURVJTWzE6ZGltKHgpWzFdXQ0KZGVhLnBsb3QoeDFbLDFdLHgxWywyXSwgT1JJRU5UQVRJT049ImluIiwgIGNleD0xLjI1KQ0KdGV4dCh4MVssMV0seDFbLDJdLHR4dCxhZGo9YygtLjcsLS4yKSxjZXg9MS4yNSkNCg0KYGBgDQoNCmBgYHtyfQ0KIyBUZWNobmljYWwgZWZmaWNpZW5jeQ0KdGUgPC0gZGVhKHgxLHkxLFJUUz0idnJzIikNCnRlDQpgYGANCg0KDQpgYGB7cn0NCiNNZW5naGl0dW5nIE1pbmltc2lzYXNpIENvc3QNCnhvcHQgPC0gY29zdC5vcHQoeDEseTEsIHcxLCBSVFM9InZycyIpICNjb3N0IG1pbmltaXNhdGlvbg0KeG9wdA0KY29icyA8LSB4MSAlKiUgdCh3MSkNCmNvcHQgPC0geG9wdCR4ICUqJSB0KHcxKQ0KDQojIENvc3QgZWZmaWNpZW5jeQ0KY2UgPC0gY29wdC9jb2JzDQoNCmBgYA0KDQoNCmBgYHtyfQ0KIyBBbGxvY2FsdGl2ZSBlZmZpY2llbmN5DQphZSA8LSBjZS90ZSRlZmYNCmRhdGEuZnJhbWUoImNlIj1jZSwidGUiPXRlJGVmZiwiYWUiPWFlKQ0KcHJpbnQoY2JpbmQoImNlIj1jKGNlKSwidGUiPXRlJGVmZiwiYWUiPWMoYWUpKSxkaWdpdHM9MikNCg0KIyBpc29jb3N0IGxpbmUgaW4gdGhlIHRlY2hub2xvZ3kgcGxvdA0KeDEgPC0gbWF0cml4KGMoMiwgMiwgNSwgMTAsIDEwLCAzLCAxMiwgOCwgNSwgNCwgNiwxMiksbmNvbD0yKQ0KeTEgPC0gbWF0cml4KGMoMSwxLDEsMSwxLDEpLCBuY29sPTEpDQp3MSA8LSBtYXRyaXgoYygxLjUsIDEpLCBuY29sPTIpDQoNCnR4dCA8LSBMRVRURVJTWzE6ZGltKHgpWzFdXQ0KZGVhLnBsb3QoeDFbLDFdLHgxWywyXSwgT1JJRU5UQVRJT049ImluIiwgIGNleD0xLjI1KQ0KdGV4dCh4MVssMV0seDFbLDJdLHR4dCxhZGo9YygtLjcsLS4yKSxjZXg9MS4yNSkNCmFibGluZShhPWNvcHRbMV0vdzFbMl0sIGI9LXcxWzFdL3cxWzJdLCBsdHk9ImRhc2hlZCIpDQpgYGANCg0KTWVuZ2d1bmFrYW4gZGF0YSBIb3NwaXRhbA0KDQpgYGB7cn0NCiMgQm9vdHN0cmFwaW5nIGluIERFQQ0KeDwtIHdpdGgoaG9zcGl0YWwsIGNiaW5kKGdwX0ZURSwgbnVyc2VfdG90YWwsIG90aGVyX3Byb2YsICBiZWRzKSkgIyBkZWZpbmUgaW5wdXQNCnk8LSB3aXRoKGhvc3BpdGFsLCBjYmluZChvdXRwYXRpZW50cywgYWRtaXNzaW9uczEpKSAjIGRlZmluZSBvdXRwdXQNCg0KI0lucHV0IG9yaWVudGVkIGVmZmljaWVuY3kNCmRlYV9pbnB1dDwtZGVhLmJvb3QoeCx5LE5SRVA9MTAwLCBSVFMgPSAidnJzIiwgT1JJRU5UQVRJT04gPSAiaW4iKQ0Kc3VtbWFyeShkZWFfaW5wdXQkZWZmKQ0Kc3VtbWFyeShkZWFfaW5wdXQkZWZmLmJjKQ0KDQoNCg0KYGBgDQoNCg0KYGBge3J9DQojTWVuZ2tvbXBpbGUgaGFzaWwgcGVyaGl0dW5nYW4gc2tvciBlZmlzaWVuc2kNCmRlYV9jb21wX2lucHV0PC1kYXRhLmZyYW1lKGNiaW5kKGlkX3JzPWhvc3BpdGFsJGlkX3JzLCANCiAgICAgICAgICAgICAgICAgICAgICBFST1jKGRlYV9pbnB1dCRlZmYpLCANCiAgICAgICAgICAgICAgICAgICAgICBFSV9iYz1jKGRlYV9pbnB1dCRlZmYuYmMpLCANCiAgICAgICAgICAgICAgICAgICAgICBFSV9DSV9sb3c9YyhkZWFfaW5wdXQkY29uZi5pbnRbLDFdKSwgDQogICAgICAgICAgICAgICAgICAgICAgRUlfQ0lfaGk9YyhkZWFfaW5wdXQkY29uZi5pbnRbLDJdKSkpDQoNCmRhdGEuZnJhbWUoZGVhX2NvbXBfaW5wdXQpDQpgYGANCg0KDQpgYGB7cn0NCg0KI091dHB1dCBvcmllbnRlZCBlZmZpY2llbmN5DQpkZWFfb3V0cHV0PC1kZWEuYm9vdCh4LHksTlJFUD0xMDAsIFJUUyA9ICJ2cnMiLCBPUklFTlRBVElPTiA9ICJvdXQiKQ0Kc3VtbWFyeShkZWFfb3V0cHV0JGVmZikNCnN1bW1hcnkoZGVhX291dHB1dCRlZmYuYmMpDQpgYGANCg0KYGBge3J9DQoNCiNNZW5na29tcGlsZSBoYXNpbCBwZXJoaXR1bmdhbiBza29yIGVmaXNpZW5zaQ0KZGVhX2NvbXBfb3V0cHV0PC1kYXRhLmZyYW1lKGNiaW5kKGlkX3JzPWhvc3BpdGFsJGlkX3JzLCANCiAgICAgICAgICAgICAgICAgICAgICBFTz1jKGRlYV9vdXRwdXQkZWZmKSwgDQogICAgICAgICAgICAgICAgICAgICAgRU9fYmM9YyhkZWFfb3V0cHV0JGVmZi5iYyksIA0KICAgICAgICAgICAgICAgICAgICAgIEVPX0NJX2xvdz1jKGRlYV9vdXRwdXQkY29uZi5pbnRbLDFdKSwgDQogICAgICAgICAgICAgICAgICAgICAgRU9fQ0lfaGk9YyhkZWFfb3V0cHV0JGNvbmYuaW50WywyXSkpKQ0KDQoNCmRhdGEuZnJhbWUoZGVhX2NvbXBfb3V0cHV0KQ0KYGBgDQoNCg0KYGBge3J9DQojTWVyZ2UgaGFzaWwgREVBIGtlIGRhdGFmcmFtZSB1dGFtYQ0KaG9zcGl0YWxfZGVhPC1tZXJnZShob3NwaXRhbCwgZGVhX2NvbXBfaW5wdXQsIGJ5PSJpZF9ycyIsIGFsbCA9IFRSVUUgKQ0KDQoNCiNCb3hwbG90IFNrb3IgRWZpc2llbnNpIElucHV0IGJ5IGtlcGVtaWxpa2FuIFJTDQpnZ3Bsb3QoaG9zcGl0YWxfZGVhLCBhZXMocHVibGljaG9zcGl0YWwsIEVJX2JjKSkgKw0KICBnZW9tX2JveHBsb3QoKQ0KYGBgDQoNCg0KYGBge3J9DQojIFNlY29uZCBzdGFnZSBERUEgYW5hbHlzaXM6IEFuYWxpc2lzIFZhcmlhYmVsIEtvbnRla3N0dWFsDQojRGVuZ2FuIHRvYml0IHJlZ3Jlc3Npb24NCmlmKCFyZXF1aXJlKEFFUikpIHsNCiAgaW5zdGFsbC5wYWNrYWdlcygiQUVSIik7IHJlcXVpcmUoQUVSKX0NCmxpYnJhcnkoQUVSKSAjbG9hZCB0aGUgQUVSIGxpYnJhcnkNCg0KZVRvYiA8LSB0b2JpdChFSV9iYyB+IHB1YmxpY2hvc3BpdGFsICsgbm9uX0phdmFCYWxpLCBsZWZ0PS1JbmYsIHJpZ2h0PTEsIGRhdGE9aG9zcGl0YWxfZGVhKQ0Kc3VtbWFyeShlVG9iKQ0KYGBgDQoNCg0KYGBge3J9DQojRGVuZ2FuIFRydW5jYXRlZCBSZWdyZXNzaW9uDQppZighcmVxdWlyZSh0cnVuY3JlZykpIHsNCiAgaW5zdGFsbC5wYWNrYWdlcygidHJ1bmNyZWciKTsgcmVxdWlyZSh0cnVuY3JlZyl9DQpsaWJyYXJ5KHRydW5jcmVnKSAjbG9hZCB0aGUgdHJ1bmNyZWcgbGlicmFyeQ0KDQplVHJ1bmM8LXRydW5jcmVnKGZvcm11bGE9RUlfYmMgfiBwdWJsaWNob3NwaXRhbCArIG5vbl9KYXZhQmFsaSwgZGF0YT1ob3NwaXRhbF9kZWEsIHBvaW50PTEsIGRpcmVjdGlvbiA9ICJyaWdodCIpDQpzdW1tYXJ5KGVUcnVuYykNCmBgYA0KDQo=