Re: [R] DEA -- Extract the Frontier and ggplot2

2016-08-02 Thread Roman Luštrik
Hi,

this is not really a ggplot2 issue, but here goes.

If you look at the source code of the Benchmarking package (here
) 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`
 which
could be used to find the correct values in `x` (see for example here
 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 
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
>> Twitter @jose.iparraguirre@ageuk
>>
>> 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 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
>>
>> 

Re: [R] DEA -- Extract the Frontier and ggplot2

2016-08-02 Thread Lorenzo Isella

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
Twitter @jose.iparraguirre@ageuk

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 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.





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 confidential and intended 
solely for the use of the individual or entity to whom they are addressed. If 
you receive a message in error, please advise the sender and delete immediately.
Except where