Re: [R] DEA -- Extract the Frontier and ggplot2
Hi, this is not really a ggplot2 issue, but here goes. If you look at the source code of the Benchmarking package (here <https://github.com/cran/Benchmarking/blob/master/R/dea.plot.R>) you will notice that the function is not very explicit about what to return - so the returned thing is actually a plotting line (lines()). What you could do is fork the repository, add your own return statement to include the `hpts` <https://github.com/cran/Benchmarking/blob/master/R/dea.plot.R#L227> which could be used to find the correct values in `x` (see for example here <https://github.com/cran/Benchmarking/blob/master/R/dea.plot.R#L231> how plotting is done). After you have the formed repository ready (and pushed to your account), you can install it through devtools::install_github("yourname/Benchmarking"). Blesssed thee, open source. Cheers, Roman On Tue, Aug 2, 2016 at 11:11 AM, Lorenzo Isella <lorenzo.ise...@gmail.com> wrote: > Hello, > Thanks for your suggestion, but it is does not help me much. > Indeed, in this case where RTS="vrs", things are easy as you say. > However, try for instance to change the technology assumption > (e.g. replace it with RTS="drs" everywhere in my script) and you'll > see that things are not that simple. > I really need a way to extract the frontier -- it is plotted, so it is > calculated and it has to be buried somewhere in the package, just I do > not know where. > Cheers > > Lorenzo > > On Tue, Aug 02, 2016 at 09:05:15AM +, Jose Iparraguirre wrote: > >> Lorenzo, >> >> dea.plot plots the vectors x and y, which you already have: >> data.frame(x,y) >> x y >> 1 20 20 >> 2 40 30 >> 3 40 50 >> 4 60 40 >> 5 70 60 >> 6 50 20 >> >> dea.plot.frontier plots the highest values of y for each value of x. >> Therefore, for x=20, the plot goes through y=20 but for X=40, where you >> have Y=30 and Y=50, the plot goes through the latter. >> >> Others in the list may give you an easier and better answer, but it's not >> difficult to plot all the X and Y in a scatterplot in ggplot and then to >> add a line along the highest values of Y per each X. >> >> I'm assuming you want an input orientation as in your example, of course. >> >> Hope it helps, >> >> José >> >> >> Prof. José Iparraguirre >> Chief Economist >> Age UK >> >> Age UK >> Tavis House, 1- 6 Tavistock Square >> London, WC1H 9NB >> >> T 020 303 31482 >> E jose.iparragui...@ageuk.org.uk<mailto:jose.iparragui...@ageuk.org.uk> >> Twitter @jose.iparraguirre@ageuk >> >> www.ageuk.org.uk<http://www.ageuk.org.uk/> | ageukblog.org.uk | >> @ageukcampaigns >> >> >> Interested in our Policy and Research publications? Sign up to our >> monthly bulletin at >> http://www.ageuk.org.uk/professional-resources-home/research/ >> >> For evidence and statistics on the older population, visit the Age UK >> Knowledge Hub >> http://www.ageuk.org.uk/professional-resources-home/knowledge-hub-evidence-statistics/ >> >> >> >> >> From: R-help [mailto:r-help-boun...@r-project.org] On Behalf Of Lorenzo >> Isella >> Sent: 02 August 2016 09:05 >> To: r-help@r-project.org >> Cc: ggpl...@googlegroups.com >> Subject: [R] DEA -- Extract the Frontier and ggplot2 >> >> Dear All, >> Please consider the code at the end of the email. >> Everything is fine in this little example, just I do not know how to >> extract the DEA frontier (solid line in the plot). >> The reason is that I want to reproduce a more complicated DEA frontier >> plot using ggplot2 and I need to understand how I can extract the >> frontier data. Alternatively: can anyone reproduce the same plot with >> ggplot2? >> Many thanks >> >> Lorenzo >> >> ###à >> >> >> >> 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 >> >> e_vrs <- dea(x,y, RTS="vrs", ORIENTATION="in")#solve LP problem >> eff_dea <- eff(e_vrs) #select efficiency scores from the results in e >> >> >> >> >> dd <- as.data.frame(cbind(x,y)) >> >> names(dd) <- c("Input", "Output") >> dd$Firm <- LETTERS[1:length(x)] >> >> dd$Input <- as.integer(dd$Input) >> dd$Output <- as.integer(dd$Output) >> >> pdf("dea-frontier-
Re: [R] DEA -- Extract the Frontier and ggplot2
Hello, Thanks for your suggestion, but it is does not help me much. Indeed, in this case where RTS="vrs", things are easy as you say. However, try for instance to change the technology assumption (e.g. replace it with RTS="drs" everywhere in my script) and you'll see that things are not that simple. I really need a way to extract the frontier -- it is plotted, so it is calculated and it has to be buried somewhere in the package, just I do not know where. Cheers Lorenzo On Tue, Aug 02, 2016 at 09:05:15AM +, Jose Iparraguirre wrote: Lorenzo, dea.plot plots the vectors x and y, which you already have: data.frame(x,y) x y 1 20 20 2 40 30 3 40 50 4 60 40 5 70 60 6 50 20 dea.plot.frontier plots the highest values of y for each value of x. Therefore, for x=20, the plot goes through y=20 but for X=40, where you have Y=30 and Y=50, the plot goes through the latter. Others in the list may give you an easier and better answer, but it's not difficult to plot all the X and Y in a scatterplot in ggplot and then to add a line along the highest values of Y per each X. I'm assuming you want an input orientation as in your example, of course. Hope it helps, José Prof. José Iparraguirre Chief Economist Age UK Age UK Tavis House, 1- 6 Tavistock Square London, WC1H 9NB T 020 303 31482 E jose.iparragui...@ageuk.org.uk<mailto:jose.iparragui...@ageuk.org.uk> Twitter @jose.iparraguirre@ageuk www.ageuk.org.uk<http://www.ageuk.org.uk/> | ageukblog.org.uk | @ageukcampaigns Interested in our Policy and Research publications? Sign up to our monthly bulletin at http://www.ageuk.org.uk/professional-resources-home/research/ For evidence and statistics on the older population, visit the Age UK Knowledge Hub http://www.ageuk.org.uk/professional-resources-home/knowledge-hub-evidence-statistics/ From: R-help [mailto:r-help-boun...@r-project.org] On Behalf Of Lorenzo Isella Sent: 02 August 2016 09:05 To: r-help@r-project.org Cc: ggpl...@googlegroups.com Subject: [R] DEA -- Extract the Frontier and ggplot2 Dear All, Please consider the code at the end of the email. Everything is fine in this little example, just I do not know how to extract the DEA frontier (solid line in the plot). The reason is that I want to reproduce a more complicated DEA frontier plot using ggplot2 and I need to understand how I can extract the frontier data. Alternatively: can anyone reproduce the same plot with ggplot2? Many thanks Lorenzo ###à 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 e_vrs <- dea(x,y, RTS="vrs", ORIENTATION="in")#solve LP problem eff_dea <- eff(e_vrs) #select efficiency scores from the results in e dd <- as.data.frame(cbind(x,y)) names(dd) <- c("Input", "Output") dd$Firm <- LETTERS[1:length(x)] dd$Input <- as.integer(dd$Input) dd$Output <- as.integer(dd$Output) pdf("dea-frontier-vrs.pdf") par( mar = c(4.5,5, 1, 1) + 0.1) dea.plot(x,y,RTS="vrs",ORIENTATION="in",txt=LETTERS[1:length(x)],lty="dashed", xlab="Input", ylab="Output", fex=2, cex=2,cex.lab=2,cex.axis=2) dea.plot.frontier(x,y, RTS="vrs", add=T) text(10,60, "VRS", cex=2) dev.off() __ R-help@r-project.org<mailto:R-help@r-project.org> mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help<https://stat.ethz.ch/mailman/listinfo/r-help> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html<http://www.R-project.org/posting-guide.html> and provide commented, minimal, self-contained, reproducible code. Age UK Together, we can help everyone make the most of later life. Get involved and find out how you can donate, volunteer or give your support to help more people love later life at www.ageuk.org.uk --- Age UK is a registered charity and company limited by guarantee, (registered charity number 1128267, registered company number 6825798) Registered office: Tavis House, 1-6 Tavistock Square, London WC1H 9NA Charitable Services are offered through Age UK (the Charity) and commercial products and services are offered by the Charity’s subsidiary companies. The Age UK Group comprises of Age UK, and its subsidiary companies and charities, dedicated to helping more people make the most of later life. Our network includes the three national charities Age Cymru, Age NI and Age Scotland and more than 150 local Age UK charities. --- This email and any files transmitted with it are co
[R] DEA -- Extract the Frontier and ggplot2
Dear All, Please consider the code at the end of the email. Everything is fine in this little example, just I do not know how to extract the DEA frontier (solid line in the plot). The reason is that I want to reproduce a more complicated DEA frontier plot using ggplot2 and I need to understand how I can extract the frontier data. Alternatively: can anyone reproduce the same plot with ggplot2? Many thanks Lorenzo ###à 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 e_vrs <- dea(x,y, RTS="vrs", ORIENTATION="in")#solve LP problem eff_dea <- eff(e_vrs) #select efficiency scores from the results in e dd <- as.data.frame(cbind(x,y)) names(dd) <- c("Input", "Output") dd$Firm <- LETTERS[1:length(x)] dd$Input <- as.integer(dd$Input) dd$Output <- as.integer(dd$Output) pdf("dea-frontier-vrs.pdf") par( mar = c(4.5,5, 1, 1) + 0.1) dea.plot(x,y,RTS="vrs",ORIENTATION="in",txt=LETTERS[1:length(x)],lty="dashed", xlab="Input", ylab="Output", fex=2, cex=2,cex.lab=2,cex.axis=2) dea.plot.frontier(x,y, RTS="vrs", add=T) text(10,60, "VRS", cex=2) dev.off() __ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.