DescTools (version 0.99.8.1)

Lc: Lorenz Curve

Description

Lc computes the (empirical) ordinary and generalized Lorenz curve of a vector x. Desc calculates some key figures for a Lorenz curve and produces a quick description.

Usage

Lc(x, n = rep(1, length(x)), na.rm = FALSE, plot = FALSE)

## S3 method for class 'Lc':
plot(x, general = FALSE, lwd = 2, type = "l", xlab = "p", ylab = "L(p)", 
        main = "Lorenz curve", las = 1, ...)

## S3 method for class 'Lc':
Desc(x, main = NULL, p = c(0.8, 0.9, 0.95, 0.99), 
   plotit = getOption("plotit", FALSE), ...)

Arguments

x
a vector containing non-negative elements.
n
a vector of frequencies, must be same length as x.
plot
logical. If TRUE the empirical Lorenz curve will be plotted.
na.rm
logical. Should missing values be removed? Defaults to FALSE.
general
logical. If TRUE the empirical Lorenz curve will be plotted.
lwd
Linewidth of the curve
type
type of the plot, default is line ("l").
xlab, ylab
Label of the x-, resp. y-axis.
main
main title of the plot.
las
las of the axis.
p
a numeric vector with percent points, at which the Lorenz curve will be calculated.
plotit
boolean. Should a plot be created? Default is FALSE.
...
further argument to be passed to methods.

Value

  • A list of class "Lc" with the following components:
  • pvector of percentages
  • Lvector with values of the ordinary Lorenz curve
  • L.generalvector with values of the generalized Lorenz curve

Details

Lc(x) computes the empirical ordinary Lorenz curve of x as well as the generalized Lorenz curve (= ordinary Lorenz curve * mean(x)). The result can be interpreted like this: p*100 percent have L(p)*100 percent of x. If n is changed to anything but the default x is interpreted as a vector of class means and n as a vector of class frequencies: in this case Lc will compute the minimal Lorenz curve (= no inequality within each group).

References

Arnold, B. C. (1987) Majorization and the Lorenz Order: A Brief Introduction, Springer Cowell, F. A. (2000) Measurement of Inequality in Atkinson, A. B. / Bourguignon, F. (Eds): Handbook of Income Distribution. Amsterdam. Cowell, F. A. (1995) Measuring Inequality Harvester Wheatshef: Prentice Hall.

See Also

The original location Lc(), inequality measures Gini(), Atkinson()

Examples

Run this code
priceCarpenter <- d.pizza$price[d.pizza$driver=="Carpenter"]
priceMiller <- d.pizza$price[d.pizza$driver=="Miller"]

# compute the Lorenz curves
Lc.p <- Lc(priceCarpenter, na.rm=TRUE)
Lc.u <- Lc(priceMiller, na.rm=TRUE)
plot(Lc.p)
lines(Lc.u, col=2)

# the picture becomes even clearer with generalized Lorenz curves
plot(Lc.p, general=TRUE)
lines(Lc.u, general=TRUE, col=2)

# inequality measures emphasize these results, e.g. Atkinson's measure
Atkinson(priceCarpenter, na.rm=TRUE)
Atkinson(priceMiller, na.rm=TRUE)


# income distribution of the USA in 1968 (in 10 classes)
# x vector of class means, n vector of class frequencies
x <- c(541, 1463, 2445, 3438, 4437, 5401, 6392, 8304, 11904, 22261)
n <- c(482, 825, 722, 690, 661, 760, 745, 2140, 1911, 1024)

# compute minimal Lorenz curve (= no inequality in each group)
Lc.min <- Lc(x, n=n)
plot(Lc.min)


# input of frequency tables with midpoints of classes
fl <- c(2.5,7.5,15,35,75,150)   # midpoints
n  <- c(25,13,10,5,5,2)	        # frequencies

plot( Lc(fl, n),                # Lorenz-Curve
      panel.first=grid(10, 10),
      main="Lorenzcurve Farmers", 
      xlab="Percent farmers (cumulative)", 
      ylab="Percent of area (%)" 
)

Gini(fl, n)

# find specific function values using appprox
x <- c(1,1,4)
lx <- Lc(x)
plot(lx)

# get interpolated function value at p = 0.55
y0 <- approx(x=lx$p, y=lx$L, xout=0.55)
abline(v=0.55, h=y0$y, lty="dotted")

# and for the inverse question
y0 <- approx(x=lx$L, y=lx$p, xout=0.6)
abline(h=0.6, v=y0$y, col="red")

text(x=0.1, y=0.65, label=expression(L^{-1}*(0.6) == 0.8), col="red")
text(x=0.65, y=0.2, label=expression(L(0.55) == 0.275))

# input of frequency tables with midpoints of classes
fl <- c(2.5,7.5,15,35,75,150)     # midpoints
n  <- c(25,13,10,5,5,2)           # frequencies

lx <- Lc(fl, n)

Desc(lx)

Run the code above in your browser using DataLab