Data Preparation

준비한 자료는 E. Saez 교수의 홈페이지에 있는 TabFig2017prel.xlsTax Foundation에서 제공하는 자료를 손봐서 불러들인 것이다.

선형변환에 사용할 함수 작성 q = x로 하면 변수의 관찰값 전체를 변환. q는 그 중 일부의 변환된 값을 보고자 할 때 입력

z <- function(x, q, a = min(x), b = max(x)) {
  (q - a) / (b - a)
}
#> 0애서 1사이의 범위로 변환
top_income_tax$P99_100_z <- top_income_tax$P99_100 %>%
  z(., .)
top_income_tax$Marginal_z <- top_income_tax$Marginal %>%
  z(., .)
kable(top_income_tax)
Year P99_100 Lowest Marginal P99_100_z Marginal_z
1913 18.0 1.0 7 0.60 0.00
1914 18.2 1.0 7 0.62 0.00
1915 17.6 1.0 7 0.58 0.00
1916 19.3 2.0 15 0.69 0.09
1917 17.7 2.0 67 0.59 0.69
1918 16.0 6.0 77 0.47 0.80
1919 16.4 4.0 73 0.50 0.76
1920 14.8 4.0 73 0.40 0.76
1921 15.6 4.0 73 0.45 0.76
1922 17.1 4.0 58 0.54 0.59
1923 15.6 4.0 58 0.45 0.59
1924 17.4 2.0 46 0.57 0.45
1925 20.2 1.5 25 0.75 0.21
1926 19.9 1.5 25 0.73 0.21
1927 21.0 1.5 25 0.81 0.21
1928 23.9 1.5 25 1.00 0.21
1929 22.4 1.5 25 0.89 0.21
1930 17.2 1.5 25 0.55 0.21
1931 15.5 1.5 25 0.44 0.21
1932 15.6 4.0 63 0.44 0.64
1933 16.5 4.0 63 0.50 0.64
1934 16.4 4.0 63 0.50 0.64
1935 16.7 4.0 63 0.52 0.64
1936 19.3 4.0 79 0.69 0.83
1937 17.1 4.0 79 0.55 0.83
1938 15.8 4.0 79 0.46 0.83
1939 16.2 4.0 79 0.49 0.83
1940 16.5 4.0 79 0.51 0.83
1941 15.8 10.0 81 0.46 0.85
1942 13.4 19.0 88 0.30 0.93
1943 12.3 19.0 88 0.23 0.93
1944 11.3 23.0 94 0.16 1.00
1945 12.5 23.0 94 0.24 1.00
1946 13.3 20.0 91 0.29 0.97
1947 12.0 20.0 91 0.21 0.97
1948 12.2 20.0 91 0.22 0.97
1949 11.7 20.0 91 0.19 0.97
1950 12.8 20.0 91 0.26 0.97
1951 11.8 20.4 91 0.19 0.97
1952 10.8 22.2 92 0.13 0.98
1953 9.9 22.2 92 0.07 0.98
1954 10.8 20.0 91 0.13 0.97
1955 11.1 20.0 91 0.15 0.97
1956 10.7 20.0 91 0.12 0.97
1957 10.2 20.0 91 0.09 0.97
1958 10.2 20.0 91 0.09 0.97
1959 10.7 20.0 91 0.12 0.97
1960 10.0 20.0 91 0.08 0.97
1961 10.6 20.0 91 0.12 0.97
1962 9.9 20.0 91 0.07 0.97
1963 9.9 20.0 91 0.07 0.97
1964 10.5 16.0 77 0.11 0.80
1965 10.9 14.0 70 0.13 0.72
1966 10.2 14.0 70 0.09 0.72
1967 10.7 14.0 70 0.12 0.72
1968 11.2 14.0 70 0.16 0.72
1969 10.3 14.0 70 0.10 0.72
1970 9.0 14.0 70 0.01 0.72
1971 9.4 14.0 70 0.04 0.72
1972 9.6 14.0 70 0.05 0.72
1973 9.2 14.0 70 0.02 0.72
1974 9.1 14.0 70 0.02 0.72
1975 8.9 14.0 70 0.00 0.72
1976 8.9 14.0 70 0.00 0.72
1977 9.0 0.0 70 0.01 0.72
1978 8.9 0.0 70 0.01 0.72
1979 10.0 0.0 70 0.07 0.72
1980 10.0 0.0 70 0.08 0.72
1981 10.0 0.0 70 0.08 0.72
1982 10.8 0.0 50 0.13 0.49
1983 11.6 0.0 50 0.18 0.49
1984 12.0 0.0 50 0.21 0.49
1985 12.7 0.0 50 0.25 0.49
1986 15.9 0.0 50 0.47 0.49
1987 12.7 11.0 38 0.25 0.36
1988 15.5 15.0 28 0.44 0.24
1989 14.5 15.0 28 0.37 0.24
1990 14.3 15.0 28 0.36 0.24
1991 13.4 15.0 31 0.30 0.28
1992 14.7 15.0 31 0.39 0.28
1993 14.2 15.0 31 0.36 0.28
1994 14.2 15.0 40 0.36 0.37
1995 15.2 15.0 40 0.42 0.37
1996 16.7 15.0 40 0.52 0.37
1997 18.0 15.0 40 0.61 0.37
1998 19.1 15.0 40 0.68 0.37
1999 20.0 15.0 40 0.74 0.37
2000 21.5 15.0 40 0.84 0.37
2001 18.2 15.0 39 0.62 0.37
2002 16.9 10.0 39 0.53 0.36
2003 17.5 10.0 35 0.57 0.32
2004 19.8 10.0 35 0.72 0.32
2005 21.9 10.0 35 0.87 0.32
2006 22.8 10.0 35 0.93 0.32
2007 23.5 10.0 35 0.97 0.32
2008 20.9 10.0 35 0.80 0.32
2009 18.1 10.0 35 0.61 0.32
2010 19.9 10.0 35 0.73 0.32
2011 19.6 10.0 35 0.72 0.32
2012 22.8 10.0 35 0.93 0.32
2013 20.0 10.0 40 0.74 0.37
2014 21.5 10.0 40 0.84 0.37
2015 21.6 10.0 40 0.84 0.37
2016 20.7 10/0 40 0.79 0.37
2017 21.5 10.0 37 0.84 0.34
M_tbl <- top_income_tax %>%
  select(c("Year", "P99_100_z", "Marginal_z")) %>%
  as_tibble %>%
  gather(key = "Variables", value = "Values", -Year) %>%
  mutate(Variables = factor(Variables, levels = c("P99_100_z", "Marginal_z")))
str(M_tbl)
## Classes 'tbl_df', 'tbl' and 'data.frame':    210 obs. of  3 variables:
##  $ Year     : int  1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 ...
##  $ Variables: Factor w/ 2 levels "P99_100_z","Marginal_z": 1 1 1 1 1 1 1 1 1 1 ...
##  $ Values   : num  0.603 0.617 0.578 0.693 0.589 ...
M_melt <- melt(data.frame(top_income_tax[c("Year", "P99_100_z", "Marginal_z")]),
       id.vars = "Year", 
       measure.vars = c("P99_100_z", "Marginal_z"),
       variable.name = c("Variables"),
       value.name = "Values")
str(M_melt)
## 'data.frame':    210 obs. of  3 variables:
##  $ Year     : int  1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 ...
##  $ Variables: Factor w/ 2 levels "P99_100_z","Marginal_z": 1 1 1 1 1 1 1 1 1 1 ...
##  $ Values   : num  0.603 0.617 0.578 0.693 0.589 ...

Save

save.image(file = "US_top_income_shares_vs_tax_rates_2017.RData")