# R Dataset / Package Ecdat / incomeInequality

Webform
Category

Webform
Category

Webform
Category

Webform
Category

Webform
Category

Webform
Category

## Visual Summaries

Embed
<iframe src="https://embed.picostat.com/r-dataset-package-ecdat-incomeinequality.html" frameBorder="0" width="100%" height="307px" />
Attachment Size
13.6 KB
Documentation

## Income Inequality in the US

### Description

Data on quantiles of the distributions of family incomes in the United States. This combines three data sources:

(1) US Census Table F-1 for the central quantiles

(2) Piketty and Saez for the 95th and higher quantiles

(3) Gross Domestic Product and implicit price deflators from MeasuringWorth.com

### Usage

data(incomeInequality)

### Format

A data.frame containing:

Year

numeric year 1947:2012

Number.thousands

number of families in the US

quintile1, quintile2, median, quintile3, quintile4, p95

quintile1, quintile2, quintile3, quintile4, and p95 are the indicated quantiles of the distribution of family income from US Census Table F-1. The media is computed as the geometric mean of quintile2 and quintile3. This is accurate to the extent that the lognormal distribution adequately approximates the central 20 percent of the income distribution, which it should for most practical purposes.

P90, P95, P99, P99.5, P99.9, P99.99

The indicated quantiles of family income per Piketty and Saez

realGDP.M, GDP.Deflator, PopulationK, realGDPperCap

real GDP in millions, GDP implicit price deflators, US population in thousands, and real GDP per capita, according to MeasuringWorth.com.

P95IRSvsCensus

ratio of the estimates of the 95th percentile of distributions of family income from the Piketty and Saez analysis of data from the Internal Revenue Service (IRS) and from the US Census Bureau.

The IRS has ranged between 72 and 98 percent of the Census Bureau figures for the 95th percentile of the distribution, with this ratio averaging around 75 percent since the late 1980s. However, this systematic bias is modest relative to the differences between the different quantiles of interest in this combined dataset.

personsPerFamily

average number of persons per family using the number of families from US Census Table F-1 and the population from MeasuringWorth.com.

realGDPperFamily

personsPerFamily * realGDPperCap

mean.median

ratio of realGDPperFamily to the median. This is a measure of skewness and income inequality.

For details on how this data.frame was created, see "F1.PikettySaez.R" in system.file('scripts', package='fda'). This provides links for files to download and R commands to read those files and convert them into an updated version of incomeInequality. This is a reasonable thing to do if it is more than 2 years since max(incomeInequality$year). All data are in constant 2012 dollars. ### Author(s) Spencer Graves ### Source United States Census Bureau, Table F-1. Income Limits for Each Fifth and Top 5 Percent of Families, All Races, http://www.census.gov/data/tables/time-series/demo/income-poverty/historical-income-inequality.html, accessed 2016-12-09. Thomas Piketty and Emmanuel Saez (2003) "Income Inequality in the United States, 1913-1998", Quarterly Journal of Economics, 118(1) 1-39, http://elsa.berkeley.edu/~saez, update accessed February 28, 2014. Louis Johnston and Samuel H. Williamson (2011) "What Was the U.S. GDP Then?" MeasuringWorth, http://www.measuringworth.org/usgdp, accessed February 28, 2014. ### Examples ## ## Rato of IRS to census estimates for the 95th percentile ## data(incomeInequality) plot(P95IRSvsCensus~Year, incomeInequality, type='b') # starts ~0.74, trends rapidly up to ~0.97, # then drifts back to ~0.75 abline(h=0.75) abline(v=1989) # check sum(is.na(incomeInequality$P95IRSvsCensus))
# The Census data runs to 2011;  Pikety and Saez runs to 2010.
quantile(incomeInequality$P95IRSvsCensus, na.rm=TRUE) # 0.72 ... 0.98## ## Persons per Family ##plot(personsPerFamily~Year, incomeInequality, type='b') quantile(incomeInequality$personsPerFamily)
# ranges from 3.72 to 4.01 with median 3.84
#  -- almost 4##
## GDP per family
##
plot(realGDPperFamily~Year, incomeInequality, type='b', log='y')##
## Plot the mean then the first quintile, then the median,
##            99th, 99.9th and 99.99th percentiles
##
plotCols <- c(21, 3, 5, 11, 13:14)
kcols <- length(plotCols)
plotColors <- c(1:6, 8:13)[1:kcols] # omit 7=yellow
plotLty <- 1:kcolsmatplot(incomeInequality$Year, incomeInequality[plotCols]/1000, log='y', type='l', col=plotColors, lty=plotLty)#*** Growth broadly shared 1947 - 1970, then began diverging #*** The divergence has been most pronounced among the top 1% #*** and especially the top 0.01%## ## Growth rate by quantile 1947-1970 and 1970 - present ## keyYears <- c(1947, 1970, 2010) (iYears <- which(is.element(incomeInequality$Year, keyYears)))(dYears <- diff(keyYears))
kk <- length(keyYears)
(lblYrs <- paste(keyYears[-kk], keyYears[-1], sep='-'))(growth <- sapply(incomeInequality[iYears,], function(x, labels=lblYrs){
dxi <- exp(diff(log(x)))
names(dxi) <- labels
dxi
} ))# as percent
(gr <- round(100*(growth-1), 1))# The average annual income (realGDPperFamily) doubled between
# 1970 and 2010 (increased by 101 percent), while the median household
# income increased only 23 percent.##
## Income lost by each quantile 1970-2010
## relative to the broadly shared growth 1947-1970
##
(lostGrowth <- (growth[, 'realGDPperFamily']-growth[, plotCols]))
# 1947-1970:  The median gained 20% relative to the mean,
#           while the top 1% lost ground
# 1970-2010:  The median lost 79%, the 99th percentile lost 29%,
#           while the top 0.1% gained(lostIncome <- (lostGrowth[2, ] *
incomeInequality[iYears[2], plotCols]))
# The median family lost $39,000 per year in income # relative to what they would have with the same economic growth # broadly shared as during 1947-1970. # That's slightly over$36,500 per year = $100 per day(grYr <- growth^(1/dYears)) (grYr. <- round(100*(grYr-1), 1))## ## Regression line: linear spline ##(varyg <- c(3:14, 21)) Varyg <- names(incomeInequality)[varyg] str(F01ps <- reshape(incomeInequality[c(1, varyg)], idvar='Year', ids=F1.PikettySeaz$Year,
times=Varyg, timevar='pctile',
varying=list(Varyg), direction='long'))
names(F01ps)[2:3] <- c('variable', 'value')
F01ps$variable <- factor(F01ps$variable)# linear spline basis function with knot at 1970
F01ps$t1970p <- pmax(0, F01ps$Year-1970)table(nas <- is.na(F01ps$value)) # 6 NAs, one each of the Piketty-Saez variables in 2011 F01i <- F01ps[!nas, ]# formula: # log(value/1000) ~ b*Year + (for each variable: # different intercept + (different slope after 1970))Fit <- lm(log(value/1000)~Year+variable*t1970p, F01i) anova(Fit) # all highly significant # The residuals may show problems with the model, # but we will ignore those for now.# Model predictions str(Pred <- predict(Fit))## ## Combined plot ## # Plot to a file? Wikimedia Commons prefers svg format. svg('incomeInequality8.svg') # If you want software to convert svg to another format such as png, # consider GIMP (www.gimp.org).# Base plot# Leave extra space on the right to label with growth since 1970 op <- par(mar=c(5, 4, 4, 5)+0.1)matplot(incomeInequality$Year, incomeInequality[plotCols]/1000,
log='y', type='l', col=plotColors, lty=plotLty,
xlab='', ylab='', las=1, axes=FALSE, lwd=3)
axis(1, at=seq(1950, 2010, 10),
labels=c(1950, NA, 1970, NA, 1990, NA, 2010), cex.axis=1.5)
yat <- c(10, 50, 100, 500, 1000, 5000, 10000)
axis(2, yat, labels=c('$10K', '$50K', '$100K', '$500K',
'$1M', '$5M', '$10M'), las=1, cex.axis=1.2)# Label the lines pctls <- paste(c(20, 40, 50, 60, 80, 90, 95, 99, 99.5, 99.9, 99.99), '%', sep='') lineLbl0 <- c('Year', 'families K', pctls, 'realGDP.M', 'GDP deflator', 'pop-K', 'realGDPperFamily', '95 pct(IRS / Census)', 'size of household', 'average family income', 'mean/median') (lineLbls <- lineLbl0[plotCols]) sel75 <- (incomeInequality$Year==1975)laby <- incomeInequality[sel75, plotCols]/1000text(1973.5, c(1.2, 1.2, 1.3, 1.5, 1.9)*laby[-1], lineLbls[-1], cex=1.2)
text(1973.5, 1.2*laby[1], lineLbls[1], cex=1.2, srt=10)##
## Add lines + points for the knots in 1970
##
End <- numeric(kcols)
F01names <- names(incomeInequality)
for(i in seq(length=kcols)){
seli <- (as.character(F01i$variable) == F01names[plotCols[i]]) # with(F01i[seli, ], lines(Year, exp(Pred[seli]), col=plotColors[i])) yri <- F01i$Year[seli]
predi <- exp(Pred[seli])
lines(yri, predi, col=plotColors[i])
End[i] <- predi[length(predi)]
sel70i <- (yri==1970)
points(yri[sel70i], predi[sel70i], col=plotColors[i])
}##
##  label growth rates
##
table(sel70. <- (incomeInequality\$Year>1969))
(lastYrs <- incomeInequality[sel70., 'Year'])
(lastYr. <- max(lastYrs)+4)
#text(lastYr., End, gR., xpd=NA)
text(lastYr., End, paste(gr[2, plotCols], '%', sep=''), xpd=NA)
text(lastYr.+7, End, paste(grYr.[2, plotCols], '%', sep=''), xpd=NA)##
##  Label the presidents
##
abline(v=c(1953, 1961, 1969, 1977, 1981, 1989, 1993, 2001, 2009))
(m99.95 <- with(incomeInequality, sqrt(P99.9*P99.99))/1000)text(1949, 5000, 'Truman')
text(1956.8, 5000, 'Eisenhower', srt=90)
text(1963, 5000, 'Kennedy', srt=90)
text(1966.8, 5000, 'Johnson', srt=90)
text(1971, 5*m99.95[24], 'Nixon', srt=90)
text(1975, 5*m99.95[28], 'Ford', srt=90)
text(1978.5, 5*m99.95[32], 'Carter', srt=90)
text(1985.1, m99.95[38], 'Reagan' )
text(1991, 0.94*m99.95[44], 'GHW Bush', srt=90)
text(1997, m99.95[50], 'Clinton')
text(2005, 1.1*m99.95[58], 'GW Bush', srt=90)
text(2010, 1.2*m99.95[62], 'Obama', srt=90)
##
##  Done
##
par(op) # reset marginsdev.off() # for plot to a file

--

Dataset imported from https://www.r-project.org.

Picostat Manual
###### How To Register With a Username
1. Go to the user registration page.
4. Click Submit.
5. Click the link that was sent to the email address you registered with.
6. Clicking the link will open another page on Picostat where you can select a password.
7. Click Save and enter any profile details you wish to enter.
###### How To Register With Google Single Sign On (SSO)
1. Go to the user login page.
5. Google will redirect you back to Picostat with your new account created and you will be logged in.
6. Enter any profile details you wish to share.
1. Go to the user login page.
3. Click "Login". You will be redirected to your user homepage authenticated.
1. Go to the user login page.
3. If you already registered with Picostat via Google SSO, you will be redirected to your user homepage authenticated.
###### How To Import a Dataset
1. Create a Picostat account or login with your existing picostat account (see above).
2. Go to the dataset import page.
3. Select a license for the dataset. The default is "No License" but allows Picostat to host a copy of the dataset as per the privacy policy. You may wish to uncheck the "Public" option if you do not wish to share your dataset with others. R Datasets that come by downloading R have a GNU General Public License v3.0 which may also be selected from the Picostat dropdown.
4. Enter a title for the dataset
5. Choose a dataset input methods. Available options include:
• Random data - this populates your dataset with random numbers between 0 and 100. You can specify the number of rows and columns for the random dataset.
• CSV, TSV or TXT file - you will have the option upload a file within the current file size limit and also specify the header and whether or not the dataset is a contingency table. With contingency tables, the first column becomes a label for the rows. Currently with Picostat, there is limited support for contingency tables. Choose "Yes" to the Header option if the first line of the data contains titles for the rows. Also choose the Separator for the dataset. A separator is what breaks the data up. In some cases, a comma would separate data values in a row. You will also have the option to add documentation in the form keyboarded text and also uploaded documentation attachments. You can also specify a license for the documentation.
• Copy and Paste. This selection contains many of the same fields as importing a file with an additional textarea to copy and paste data to.
• Empty dataset. Start with a blank dataset and manually add data with the Picostat dataset editor.
• Excel file - Choose this option if you would like to convert your Excel spreadsheet to a Picostat dataset. With this selection, you will have the option to specify whether to use the first row in the Excel file as column names. If you would like to choose a specific sheet to use, you can also specify with entering its name in the text input.
• sas7bdat file - SAS is a powerful statistical software package that has its own proprietary file format. Choose this option if you are importing a SAS file.
• SPSS sav file - SPSS is a statistical package owned by IBM. You can import SPSS files by choosing this option.
6. Choose whether or not the dataset contains a header. Some of the dataset input methods allow you to specify whether or not a Header exists on the file. Sometimes dataset files contain a Header as the first row which names the columns. If you choose "Yes" to this, the first row in the dataset will become column headers.
7. You can also add documentation and specify a documentation license. This can be used to help explain your dataset to those unfamiliar with it.
8. Choose whether or not to upload an supporting attachments.
9. Pass the captcha. To prevent spam submissions, Picostat has a captcha which is used to prevent automated submissions by bots.
10. Choose a privacy setting for the dataset. You can also specify whether or not the dataset is Public. If you uncheck this setting, only you and the Picostat administrator will be able to view the dataset.
11. Submit the form. Once the form is validated, you will be redirected to the dataset homepage where you can choose to edit or perform statistical operations on the dataset.
###### How To Perform Statistical Analysis with Picostat
1. Go to any dataset homepage. You can get a full list at the dashboard.
2. Near the top of the page there will be two drop downs. One for analysis and one for education. Here we will choose Analyis. Choose from one of the following:
• Numerical Summaries - Here you can get the:
1. Arithmetic mean
2. Median
3. Quartiles
4. Minimum and Maximum
5. Stem-and-leaf plot
6. Standard deviation and Variance
7. IQR
8. Cumulative frequencies
• Plot - a plot of two columns on the cartesian coordinate system
• Boxplot - a Boxplot (box-and-whisker plot) of a column.
• Correlation Coefficient - Compute the correlation coefficient between two columns.
• Cumulative Frequency Histogram - Display a cumulative frequency histogram
• Dotplot
• Hollow Histogram - Plot two columns on the same histogram with a different color for each column.
• Pie Chart
• Regression - Perform a simple linear regression and compute the p-value and regression line. Also plots the data with the regression line.
• Stem and Leaf Plots - Plot a one or two-sided stem-and-leaf plot from one or two columns respectively.
• Visual Summaries - plots the following:
1. Frequency Histogram
2. Relative Frequency Histogram
3. Cumulative Frequency Histogram
4. Boxplot (Box-and-whisker plot)
5. Dotplot
3. PDF - Check this box if you want to download a PDF of the output from the statistical analysis application.
4. HTML - Check this box if you want a link to the HTML page created with the application.
5. R File - Check this box if you want a link to download the R commands used to generate output from this statistical application. You should be able to copy the commands verbatim into R Studio or R to recreate the analysis.
###### How To Use Educational Applications with Picostat
1. Go to any dataset homepage. You can get a full list at the dashboard.
2. Near the top of the page there will be two drop downs. One for analysis and one for education. Here we will choose Education. Choose from one of the following:
• How To Create a Barplot - This will show you how to create a bar chart after selecting a column with the mouse.
• How To Create a Stacked Barplot - This application will show you how to create a stacked bar plot from a column vector.
• How To Create a Pie Chart - This application will show you how to create a pie chart from a column of data
• How To Compute the Mean - This application will show you how to compute the mean from a column vector
• How To Create a Plot - This app will show you how to plot two columns in the cartesian coordinate system.
• How To Compute the Media - This statisistical app will show you how to compute the median from a column vector.
3. PDF - Check this box if you want to download a PDF of the output from the education application.
4. HTML - Check this box if you want a link to the HTML page created with the application.
Recent Queries For This Dataset

No queries made on this dataset yet.

Title Authored on Content type
OpenIntro Statistics Dataset - gpa_study_hours August 9, 2020 - 12:25 PM Dataset
R Dataset / Package MASS / petrol March 9, 2018 - 1:06 PM Dataset
R Dataset / Package HistData / Snow.streets March 9, 2018 - 1:06 PM Dataset
R Dataset / Package datasets / WWWusage March 9, 2018 - 1:06 PM Dataset
R Dataset / Package DAAG / dewpoint March 9, 2018 - 1:06 PM Dataset