{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "tags": [ "remove_input" ] }, "outputs": [], "source": [ "path_data = '../../data/'\n", "\n", "import numpy as np\n", "import pandas as pd\n", "\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "plt.style.use('fivethirtyeight')\n", "\n", "import warnings\n", "warnings.filterwarnings('ignore')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# The Bootstrap\n", "A data scientist is using the data in a random sample to estimate an unknown parameter. She uses the sample to calculate the value of a statistic that she will use as her estimate. \n", "\n", "Once she has calculated the observed value of her statistic, she could just present it as her estimate and go on her merry way. But she's a data scientist. She knows that her random sample is just one of numerous possible random samples, and thus her estimate is just one of numerous plausible estimates. \n", "\n", "By how much could those estimates vary? To answer this, it appears as though she needs to draw another sample from the population, and compute a new estimate based on the new sample. But she doesn't have the resources to go back to the population and draw another sample.\n", "\n", "It looks as though the data scientist is stuck.\n", "\n", "Fortunately, a brilliant idea called *the bootstrap* can help her out. Since it is not feasible to generate new samples from the population, the bootstrap generates new random samples by a method called *resampling*: the new samples are drawn at random *from the original sample*." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this section, we will see how and why the bootstrap works. In the rest of the chapter, we will use the bootstrap for inference.\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Employee Compensation in the City of San Francisco\n", "[SF OpenData](https://data.sfgov.org) is a website where the City and County of San Francisco make some of their data publicly available. One of the data sets contains compensation data for employees of the City. These include medical professionals at City-run hospitals, police officers, fire fighters, transportation workers, elected officials, and all other employees of the City. \n", "\n", "Compensation data for the calendar year 2015 are in the table `sf2015`." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "sf2015 = pd.read_csv(path_data + 'san_francisco_2015.csv')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Year TypeYearOrganization Group CodeOrganization GroupDepartment CodeDepartmentUnion CodeUnionJob Family CodeJob Family...Employee IdentifierSalariesOvertimeOther SalariesTotal SalaryRetirementHealth/DentalOther BenefitsTotal BenefitsTotal Compensation
0Calendar20152Public Works, Transportation & CommerceWTRPUC Water Department21.0Prof & Tech Engineers - Miscellaneous, Local 212400Lab, Pharmacy & Med Techs...2153882146.040.000.0082146.0416942.2112340.886337.7335620.82117766.86
1Calendar20152Public Works, Transportation & CommerceDPWGeneral Services Agency - Public Works12.0Carpet, Linoleum and Soft Tile Workers, Local 127300Journeyman Trade...545932165.75973.19848.9633987.900.004587.512634.427221.9341209.83
2Calendar20154Community HealthDPHPublic Health790.0SEIU - Miscellaneous, Local 10211600Payroll, Billing & Accounting...4154171311.005757.980.0077068.9814697.5912424.506370.0633492.15110561.13
3Calendar20154Community HealthDPHPublic Health351.0Municipal Executive Association - Miscellaneous0900Management...2671828430.250.00763.0729193.320.004223.145208.519431.6538624.97
4Calendar20152Public Works, Transportation & CommerceMTAMunicipal Transportation Agency790.0SEIU - Miscellaneous, Local 10218200Protection & Apprehension...458107948.750.000.007948.750.002873.17616.243489.4111438.16
5Calendar20151Public ProtectionPOLPolice911.0Police Officers' AssociationQ000Police Services...329062235.000.000.002235.00490.36286.72176.57953.653188.65
6Calendar20154Community HealthDPHPublic Health791.0SEIU - Staff and Per Diem Nurses, Local 10212300Nursing...7506187247.000.0011704.06198951.0637683.6612424.5011221.7361329.89260280.95
7Calendar20152Public Works, Transportation & CommerceMTAMunicipal Transportation Agency253.0Transport Workers - Transit Operators, Local 2...9100Street Transit...3677366988.543512.882770.3973271.8119127.2213202.955455.1037785.27111057.08
8Calendar20156General Administration & FinanceCATCity Attorney311.0Municipal Attorneys' Association8100Legal & Court...12963135189.600.001562.50136752.1027501.8112424.5010102.9750029.28186781.38
9Calendar20153Human Welfare & Neighborhood DevelopmentDSSHuman Services535.0SEIU - Human Services, Local 10219700Community Development...3517970474.77147.281647.2472269.2914650.2810696.905993.1131340.29103609.58
\n", "

10 rows × 22 columns

\n", "
" ], "text/plain": [ " Year Type Year Organization Group Code \\\n", "0 Calendar 2015 2 \n", "1 Calendar 2015 2 \n", "2 Calendar 2015 4 \n", "3 Calendar 2015 4 \n", "4 Calendar 2015 2 \n", "5 Calendar 2015 1 \n", "6 Calendar 2015 4 \n", "7 Calendar 2015 2 \n", "8 Calendar 2015 6 \n", "9 Calendar 2015 3 \n", "\n", " Organization Group Department Code \\\n", "0 Public Works, Transportation & Commerce WTR \n", "1 Public Works, Transportation & Commerce DPW \n", "2 Community Health DPH \n", "3 Community Health DPH \n", "4 Public Works, Transportation & Commerce MTA \n", "5 Public Protection POL \n", "6 Community Health DPH \n", "7 Public Works, Transportation & Commerce MTA \n", "8 General Administration & Finance CAT \n", "9 Human Welfare & Neighborhood Development DSS \n", "\n", " Department Union Code \\\n", "0 PUC Water Department 21.0 \n", "1 General Services Agency - Public Works 12.0 \n", "2 Public Health 790.0 \n", "3 Public Health 351.0 \n", "4 Municipal Transportation Agency 790.0 \n", "5 Police 911.0 \n", "6 Public Health 791.0 \n", "7 Municipal Transportation Agency 253.0 \n", "8 City Attorney 311.0 \n", "9 Human Services 535.0 \n", "\n", " Union Job Family Code \\\n", "0 Prof & Tech Engineers - Miscellaneous, Local 21 2400 \n", "1 Carpet, Linoleum and Soft Tile Workers, Local 12 7300 \n", "2 SEIU - Miscellaneous, Local 1021 1600 \n", "3 Municipal Executive Association - Miscellaneous 0900 \n", "4 SEIU - Miscellaneous, Local 1021 8200 \n", "5 Police Officers' Association Q000 \n", "6 SEIU - Staff and Per Diem Nurses, Local 1021 2300 \n", "7 Transport Workers - Transit Operators, Local 2... 9100 \n", "8 Municipal Attorneys' Association 8100 \n", "9 SEIU - Human Services, Local 1021 9700 \n", "\n", " Job Family ... Employee Identifier Salaries \\\n", "0 Lab, Pharmacy & Med Techs ... 21538 82146.04 \n", "1 Journeyman Trade ... 5459 32165.75 \n", "2 Payroll, Billing & Accounting ... 41541 71311.00 \n", "3 Management ... 26718 28430.25 \n", "4 Protection & Apprehension ... 45810 7948.75 \n", "5 Police Services ... 32906 2235.00 \n", "6 Nursing ... 7506 187247.00 \n", "7 Street Transit ... 36773 66988.54 \n", "8 Legal & Court ... 12963 135189.60 \n", "9 Community Development ... 35179 70474.77 \n", "\n", " Overtime Other Salaries Total Salary Retirement Health/Dental \\\n", "0 0.00 0.00 82146.04 16942.21 12340.88 \n", "1 973.19 848.96 33987.90 0.00 4587.51 \n", "2 5757.98 0.00 77068.98 14697.59 12424.50 \n", "3 0.00 763.07 29193.32 0.00 4223.14 \n", "4 0.00 0.00 7948.75 0.00 2873.17 \n", "5 0.00 0.00 2235.00 490.36 286.72 \n", "6 0.00 11704.06 198951.06 37683.66 12424.50 \n", "7 3512.88 2770.39 73271.81 19127.22 13202.95 \n", "8 0.00 1562.50 136752.10 27501.81 12424.50 \n", "9 147.28 1647.24 72269.29 14650.28 10696.90 \n", "\n", " Other Benefits Total Benefits Total Compensation \n", "0 6337.73 35620.82 117766.86 \n", "1 2634.42 7221.93 41209.83 \n", "2 6370.06 33492.15 110561.13 \n", "3 5208.51 9431.65 38624.97 \n", "4 616.24 3489.41 11438.16 \n", "5 176.57 953.65 3188.65 \n", "6 11221.73 61329.89 260280.95 \n", "7 5455.10 37785.27 111057.08 \n", "8 10102.97 50029.28 186781.38 \n", "9 5993.11 31340.29 103609.58 \n", "\n", "[10 rows x 22 columns]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sf2015.head(10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There is one row for each of 42,979 employees. There are numerous columns containing information about City departmental affiliation and details of the different parts of the employee's compensation package. Here is the row correspoding to the late Edward Lee, the Mayor at that time." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Year TypeYearOrganization Group CodeOrganization GroupDepartment CodeDepartmentUnion CodeUnionJob Family CodeJob Family...Employee IdentifierSalariesOvertimeOther SalariesTotal SalaryRetirementHealth/DentalOther BenefitsTotal BenefitsTotal Compensation
3335Calendar20156General Administration & FinanceMYRMayor556.0Elected Officials1100Administrative & Mgmt (Unrep)...22433288963.550.00.0288963.5558117.0312424.520292.9590834.48379798.03
\n", "

1 rows × 22 columns

\n", "
" ], "text/plain": [ " Year Type Year Organization Group Code \\\n", "3335 Calendar 2015 6 \n", "\n", " Organization Group Department Code Department Union Code \\\n", "3335 General Administration & Finance MYR Mayor 556.0 \n", "\n", " Union Job Family Code Job Family ... \\\n", "3335 Elected Officials 1100 Administrative & Mgmt (Unrep) ... \n", "\n", " Employee Identifier Salaries Overtime Other Salaries Total Salary \\\n", "3335 22433 288963.55 0.0 0.0 288963.55 \n", "\n", " Retirement Health/Dental Other Benefits Total Benefits \\\n", "3335 58117.03 12424.5 20292.95 90834.48 \n", "\n", " Total Compensation \n", "3335 379798.03 \n", "\n", "[1 rows x 22 columns]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sf2015[sf2015['Job'] == 'Mayor']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We are going to study the final column, `Total Compensation`. That's the employee's salary plus the City's contribution towards his/her retirement and benefit plans.\n", "\n", "Financial packages in a calendar year can sometimes be hard to understand as they depend on the date of hire, whether the employee is changing jobs within the City, and so on. For example, the lowest values in the `Total Compensation` column look a little strange." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Year TypeYearOrganization Group CodeOrganization GroupDepartment CodeDepartmentUnion CodeUnionJob Family CodeJob Family...Employee IdentifierSalariesOvertimeOther SalariesTotal SalaryRetirementHealth/DentalOther BenefitsTotal BenefitsTotal Compensation
27308Calendar20151Public ProtectionFIRFire Department798.0Firefighters - Miscellaneous, Local 798H000Fire Services...438330.000.000.000.000.000.00-423.76-423.76-423.76
15746Calendar20154Community HealthDPHPublic Health790.0SEIU - Miscellaneous, Local 10219900Public Service Aide...27871-292.400.000.00-292.400.00-95.58-22.63-118.21-410.61
24576Calendar20151Public ProtectionJUVJuvenile Probation790.0SEIU - Miscellaneous, Local 10218300Correction & Detention...105170.000.000.000.000.000.00-159.12-159.12-159.12
42982Calendar20156General Administration & FinanceCPCCity Planning21.0Prof & Tech Engineers - Miscellaneous, Local 211000Information Systems...189610.000.000.000.000.000.00-26.53-26.53-26.53
23310Calendar20156General Administration & FinanceCPCCity Planning21.0Prof & Tech Engineers - Miscellaneous, Local 215200Professional Engineering...193870.000.000.000.000.000.00-9.51-9.51-9.51
..................................................................
5171Calendar20154Community HealthDPHPublic Health351.0Municipal Executive Association - Miscellaneous0900Management...1523256098.010.0082292.31338390.3251977.5311468.7720963.3284409.62422799.94
17805Calendar20152Public Works, Transportation & CommerceAIRAirport Commission351.0Municipal Executive Association - Miscellaneous0900Management...17356326764.010.000.00326764.0165806.3312424.5021691.2399922.06426686.07
499Calendar20156General Administration & FinanceADMGeneral Services Agency - City Admin164.0Physicians and Dentists - Miscellaneous2500Med Therapy & Auxiliary...13746279311.039046.9256742.56345100.5156211.6112424.5013482.6682118.77427219.28
13194Calendar20156General Administration & FinanceADMGeneral Services Agency - City Admin164.0Physicians and Dentists - Miscellaneous2500Med Therapy & Auxiliary...1016279311.103829.36114433.58397574.0456211.6412424.5014299.1082935.24480509.28
19177Calendar20156General Administration & FinanceRETRetirement System351.0Municipal Executive Association - Miscellaneous1100Administrative & Mgmt (Unrep)...46881507831.600.000.00507831.60105052.9812424.5023566.16141043.64648875.24
\n", "

42989 rows × 22 columns

\n", "
" ], "text/plain": [ " Year Type Year Organization Group Code \\\n", "27308 Calendar 2015 1 \n", "15746 Calendar 2015 4 \n", "24576 Calendar 2015 1 \n", "42982 Calendar 2015 6 \n", "23310 Calendar 2015 6 \n", "... ... ... ... \n", "5171 Calendar 2015 4 \n", "17805 Calendar 2015 2 \n", "499 Calendar 2015 6 \n", "13194 Calendar 2015 6 \n", "19177 Calendar 2015 6 \n", "\n", " Organization Group Department Code \\\n", "27308 Public Protection FIR \n", "15746 Community Health DPH \n", "24576 Public Protection JUV \n", "42982 General Administration & Finance CPC \n", "23310 General Administration & Finance CPC \n", "... ... ... \n", "5171 Community Health DPH \n", "17805 Public Works, Transportation & Commerce AIR \n", "499 General Administration & Finance ADM \n", "13194 General Administration & Finance ADM \n", "19177 General Administration & Finance RET \n", "\n", " Department Union Code \\\n", "27308 Fire Department 798.0 \n", "15746 Public Health 790.0 \n", "24576 Juvenile Probation 790.0 \n", "42982 City Planning 21.0 \n", "23310 City Planning 21.0 \n", "... ... ... \n", "5171 Public Health 351.0 \n", "17805 Airport Commission 351.0 \n", "499 General Services Agency - City Admin 164.0 \n", "13194 General Services Agency - City Admin 164.0 \n", "19177 Retirement System 351.0 \n", "\n", " Union Job Family Code \\\n", "27308 Firefighters - Miscellaneous, Local 798 H000 \n", "15746 SEIU - Miscellaneous, Local 1021 9900 \n", "24576 SEIU - Miscellaneous, Local 1021 8300 \n", "42982 Prof & Tech Engineers - Miscellaneous, Local 21 1000 \n", "23310 Prof & Tech Engineers - Miscellaneous, Local 21 5200 \n", "... ... ... \n", "5171 Municipal Executive Association - Miscellaneous 0900 \n", "17805 Municipal Executive Association - Miscellaneous 0900 \n", "499 Physicians and Dentists - Miscellaneous 2500 \n", "13194 Physicians and Dentists - Miscellaneous 2500 \n", "19177 Municipal Executive Association - Miscellaneous 1100 \n", "\n", " Job Family ... Employee Identifier Salaries \\\n", "27308 Fire Services ... 43833 0.00 \n", "15746 Public Service Aide ... 27871 -292.40 \n", "24576 Correction & Detention ... 10517 0.00 \n", "42982 Information Systems ... 18961 0.00 \n", "23310 Professional Engineering ... 19387 0.00 \n", "... ... ... ... ... \n", "5171 Management ... 1523 256098.01 \n", "17805 Management ... 17356 326764.01 \n", "499 Med Therapy & Auxiliary ... 13746 279311.03 \n", "13194 Med Therapy & Auxiliary ... 1016 279311.10 \n", "19177 Administrative & Mgmt (Unrep) ... 46881 507831.60 \n", "\n", " Overtime Other Salaries Total Salary Retirement Health/Dental \\\n", "27308 0.00 0.00 0.00 0.00 0.00 \n", "15746 0.00 0.00 -292.40 0.00 -95.58 \n", "24576 0.00 0.00 0.00 0.00 0.00 \n", "42982 0.00 0.00 0.00 0.00 0.00 \n", "23310 0.00 0.00 0.00 0.00 0.00 \n", "... ... ... ... ... ... \n", "5171 0.00 82292.31 338390.32 51977.53 11468.77 \n", "17805 0.00 0.00 326764.01 65806.33 12424.50 \n", "499 9046.92 56742.56 345100.51 56211.61 12424.50 \n", "13194 3829.36 114433.58 397574.04 56211.64 12424.50 \n", "19177 0.00 0.00 507831.60 105052.98 12424.50 \n", "\n", " Other Benefits Total Benefits Total Compensation \n", "27308 -423.76 -423.76 -423.76 \n", "15746 -22.63 -118.21 -410.61 \n", "24576 -159.12 -159.12 -159.12 \n", "42982 -26.53 -26.53 -26.53 \n", "23310 -9.51 -9.51 -9.51 \n", "... ... ... ... \n", "5171 20963.32 84409.62 422799.94 \n", "17805 21691.23 99922.06 426686.07 \n", "499 13482.66 82118.77 427219.28 \n", "13194 14299.10 82935.24 480509.28 \n", "19177 23566.16 141043.64 648875.24 \n", "\n", "[42989 rows x 22 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sf2015.sort_values(by=['Total Compensation'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For clarity of comparison, we will focus our attention on those who had at least the equivalent of a half-time job for the whole year. At a minimum wage of about \\$10 per hour, and 20 hours per week for 52 weeks, that's a salary of about \\$10,000." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "sf2015 = sf2015[sf2015['Salaries'] > 10000]" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "36569" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(sf2015)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Population and Parameter\n", "Let this table of just over 36,500 rows be our population. Here is a histogram of the total compensations." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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FMsAAACAFRTLAAAAgBUUywAAAIAVFMsAAACAFRTLAAAAgBUUywAAAIAVFMsAAACAFRTLAAAAgBUUywAAAIAVFMsAAACAFRTLAAAAgBUUywAAAIAVFMsAAACAFRTLAAAAgBUUywAAAIAVFMsAAACAFRTLAAAAgBUUywAAAIAVdi+WV65cqc6dO8vLy0shISHavXt3le0PHTqkQYMGydvbWwEBAYqPj1d5eblFm127dikkJEReXl7q0qWLkpKSKvSzadMmBQcHy9PTU8HBwdqyZUuFNtnZ2ZoyZYratm0rLy8vBQcHa9euXf/bCQMAAMBh2LVY3rBhg2JjYzVjxgylpqYqKChI4eHhOnPmTKXtCwsLNXz4cHl6emrHjh1asGCBFi9erCVLlpjbZGVlafTo0QoKClJqaqqefvppzZw5U5s2bTK3SU9P18SJExUeHq60tDSFh4drwoQJysjIMLcpKCjQwIEDVV5eruTkZO3du1cvv/yyPDw8am5CAAAAUKc0sOfgS5cu1bhx4zR+/HhJUkJCgrZv366kpCTNnTu3Qvv169fr0qVLSkxMlJubmzp27Khjx45p2bJlmjZtmkwmk1atWiVvb28lJCRIkvz9/ZWRkaElS5YoLCxMkpSYmKg+ffooJibG3CYtLU2JiYl66623JEmvv/66vL29tXz5cvP4fn5+NTkdAAAAqGPsViyXlJTowIEDmj59usX2/v37a+/evZUek56erl69esnNzc28LTQ0VC+++KJOnTolPz8/paenq3///hbHhYaGat26dbp8+bIaNmyoffv2adKkSRXarFixwvz5/fffV2hoqCIiIpSWliZvb289+uijevzxx2UymayeV2Zmps1z8L+qzbHqksJCPxUXu127YbU4qbi42OA+pcLCS8rMzDK8X0dRX3O0pjCfxmNOjcV8Gov5NF5lc9q+ffsqj7FbsZyfn6/S0tIKyxo8PDyUm5tb6TG5ublq0aJFhfZX9/n5+Sk3N1d9+/at0ObKlSvKz8+Xt7e3cnJyrjluVlaW3nrrLUVFRekPf/iDDh48qFmzZklShUL7l6414UbJzMystbHqmosXXeXi4mRwr1fk4uJicJ9SkyYN6u3PqT7naE1gPo3HnBqL+TQW82m83zqndl2GIanCXdry8vIq79xW1v7X239rm19uKysrU9euXc3LQbp06aITJ05o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CpSfn6/evXvrxx9/VGZmptXjqvLRRx+pc+fOFvPj7OysqVOn6scff9SuXbss2g8bNsxcKEtS586d1aRJk0rnEkDdx51lAPXW6dOnZTKZ1L59e4vtLi4uat26dYWCzpr3339fCQkJOnjwoEpLSy32FRYWVrru2JqrReEPP/xgU/vqnoOPj49FUSpJTZo0sSjuJOmGG27QjTfeqIKCggpjtm3b1uJzgwYN1Lp1a505c0aS9M0330iSpk+fXuldaUnKy8uTr6+v+XOrVq0s9l9dQ/zdd99Jkvz8/DRlyhS98cYbSk5OVnBwsAYOHKgxY8aoefPm5uO++OILvfDCC9q/f79KSkos+qzuP1yuOn36tIYMGVJhu7+/v3n/L/36XCSpadOm5nMB4FgolgGgEuXl5TKZTNdst2fPHv3ud79Tz5499dprr8nb21vOzs76+OOPtWzZMosvltnitttuU8OGDXX48OHfGrpZZefg5ORUadtfF9C/7OPXKpuXX7a7es7PP/+8AgMDK+23Xbt2NsX1y34XLFig8ePHa9u2bdqxY4eeffZZvfLKK3r//fcVEBCgrKwsDR8+XLfddpvi4uJ06623ysXFRf/61780d+7cav8srqWyubH1XAA4DoplAPWWr6+vysvLlZmZqTvuuMO8vaSkRKdPn1afPn3M26wVzu+9955cXV21ceNGi0eOpaWl/aaYGjVqpJCQEKWkpOj06dMWd1//13MwyvHjx9WvXz/z5ytXruj06dPmpRNt2rSR9PNSkr59+xo6dkBAgAICAvT000/r3//+t/r27avExES9/vrr+uCDD1RUVKR//OMfFvN26tSpCv3Y8g+hq3x9fXXs2LEK268u67jWzwiAY2PNMoB6a8CAAZKkpUuXWmxftWqVCgsLNXDgQPO2Ro0aVfprfCcnJ5lMJou7lgUFBfr73//+m+OaOXOmpJ+fqVxYWFhh/zfffGN++1x1zsEoq1atUnFxsfnzunXrdPHiRd1///2SpMDAQLVt21aLFy+udM7y8vKqPWZhYaGuXLlisc3f319ubm7mpSJX7+j+8g5ucXGxxRcfr7L286zMwIED9fXXXys1NdW87fLly3rjjTfUqFEj9e7du7qnA8CBcGcZQL3VqVMnRUREmAvLfv366T//+Y9WrVqlu+66S2PHjjW37dq1qzZv3qxZs2ape/fuuuGGGzRy5Eg98MADWrp0qYYPH64xY8bou+++0+rVq+Xp6amcnJzfFFdQUJBee+01PfXUU+rRo4fGjBmjdu3aqaioSHv37tXmzZv1yCOPVPscjDRkyBCNHDlSp0+f1ooVK9ShQweNGzdO0s9LOpYsWaKRI0eqZ8+eeuSRR+Tr66vs7Gzt27dPZ86c0Z49e6o13tVnOw8dOlTt27dXeXm5NmzYoO+//14jR46UJIWGhsrZ2VkPP/ywJkyYoJKSEv3jH/+odImJtZ9nZZ566ilt2LBBY8eO1eTJk+Xl5aWNGzdq3759eumll6q1Jh2A46FYBlCvvfrqq2rdurXWrFmjjz/+WM2bN9djjz2mP/3pTxbPJ540aZKOHDmi5ORkrVixQuXl5Ro5cqT69OmjxMREvfbaa5o9e7ZatGihSZMmyd3dXdOmTfvNcT366KO66667tGTJEm3YsEG5ublydXVVp06d9NJLL1k8Ds7WczDKggULtHnzZsXHx6u4uFgDBw5UQkKCxRMyevXqpe3bt+vll1/WX//6VxUWFsrDw0N33HGHZs+eXe0x77jjDt1333365JNPtGbNGrm4uCggIEBvv/22Bg8eLOnnddBvv/22XnjhBc2dO1fNmzfXww8/rN69e2v48OEW/Vn7eVamefPm+uijjzRv3jytWrVKP/30k9q1a6fExMQa+8cIgLrDVFBQwDcOAADX9Pbbbys6OlqffPKJevToYe9wAKBWsGYZAAAAsIJiGQAAALCCYhkAAACwgjXLAAAAgBXcWQYAAACsoFgGAAAArKBYBgAAAKygWAYAAACsoFgGAAAArPg/jo8hLk2fbdoAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sf_bins = np.arange(0, 700000, 25000)\n", "\n", "unit = ''\n", "\n", "fig, ax = plt.subplots(figsize=(10,5))\n", "\n", "ax.hist(sf2015['Total Compensation'], bins = sf_bins, density=True, color='blue', alpha=0.8, ec='white')\n", "\n", "#ax.scatter(observed_distance, 0, color='red', s=40, zorder=10).set_clip_on(False)\n", "\n", "y_vals = ax.get_yticks()\n", "\n", "y_label = 'Percent per ' + (unit if unit else 'unit')\n", "\n", "x_label = 'Total Compensation'\n", "\n", "ax.set_yticklabels(['{:g}'.format(x * 100) for x in y_vals])\n", "\n", "plt.ylabel(y_label)\n", "\n", "plt.xlabel(x_label)\n", "\n", "plt.xticks(rotation=90)\n", "\n", "plt.title('');\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "While most of the values are below \\\\$300,000, a few are quite a bit higher. For example, the total compensation of the Chief Investment Officer was almost \\\\$650,000. That is why the horizontal axis stretches to \\\\$700,000." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Year TypeYearOrganization Group CodeOrganization GroupDepartment CodeDepartmentUnion CodeUnionJob Family CodeJob Family...Employee IdentifierSalariesOvertimeOther SalariesTotal SalaryRetirementHealth/DentalOther BenefitsTotal BenefitsTotal Compensation
19177Calendar20156General Administration & FinanceRETRetirement System351.0Municipal Executive Association - Miscellaneous1100Administrative & Mgmt (Unrep)...46881507831.60.000.00507831.60105052.9812424.523566.16141043.64648875.24
13194Calendar20156General Administration & FinanceADMGeneral Services Agency - City Admin164.0Physicians and Dentists - Miscellaneous2500Med Therapy & Auxiliary...1016279311.13829.36114433.58397574.0456211.6412424.514299.1082935.24480509.28
\n", "

2 rows × 22 columns

\n", "
" ], "text/plain": [ " Year Type Year Organization Group Code \\\n", "19177 Calendar 2015 6 \n", "13194 Calendar 2015 6 \n", "\n", " Organization Group Department Code \\\n", "19177 General Administration & Finance RET \n", "13194 General Administration & Finance ADM \n", "\n", " Department Union Code \\\n", "19177 Retirement System 351.0 \n", "13194 General Services Agency - City Admin 164.0 \n", "\n", " Union Job Family Code \\\n", "19177 Municipal Executive Association - Miscellaneous 1100 \n", "13194 Physicians and Dentists - Miscellaneous 2500 \n", "\n", " Job Family ... Employee Identifier Salaries \\\n", "19177 Administrative & Mgmt (Unrep) ... 46881 507831.6 \n", "13194 Med Therapy & Auxiliary ... 1016 279311.1 \n", "\n", " Overtime Other Salaries Total Salary Retirement Health/Dental \\\n", "19177 0.00 0.00 507831.60 105052.98 12424.5 \n", "13194 3829.36 114433.58 397574.04 56211.64 12424.5 \n", "\n", " Other Benefits Total Benefits Total Compensation \n", "19177 23566.16 141043.64 648875.24 \n", "13194 14299.10 82935.24 480509.28 \n", "\n", "[2 rows x 22 columns]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sf2015.sort_values(by=['Total Compensation'], ascending=False).head(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let the parameter be the median of the total compensations.\n", "\n", "Since we have the luxury of having all of the data from the population, we can simply calculate the parameter:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "110305.79" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pop_median = np.percentile(sf2015['Total Compensation'], 50)\n", "pop_median" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The median total compensation of all employees was just over \\$110,300. \n", "\n", "From a practical perspective, there is no reason for us to draw a sample to estimate this parameter since we simply know its value. But in this section we are going to pretend we don't know the value, and see how well we can estimate it based on a random sample. \n", "\n", "In later sections, we will come down to earth and work in situations where the parameter is unknown. For now, we are all-knowing." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### A Random Sample and an Estimate\n", "Let us draw a sample of 500 employees at random without replacement, and let the median total compensation of the sampled employees serve as our estimate of the parameter." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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806ZTCbVqlVLgwYN0lNPPaUWLVrc8Hg0y6h0Vq9eXer6a1eWae5s88QTT6hKlSpasmSJfv75Z0VGRiolJUUbN25U48aNaZbLqGvXrnr44Yf14osv6sMPP9TkyZM1cuRIvfTSS5KkGTNmaM+ePVq3bp2dM3UMb775puLj47VgwQJ16tTJvPyuu+7Stm3beHHGDbjzzjt16NAhubm5aeTIkcrIyND777+v22+/Xbm5uRo6dKicnZ21cuVKe6fqEDw9PZWSkiJvb2916tRJ48aN05AhQ8zrP/roI82aNUu7du2yY5aO5c4779TXX3+tL774Qu+++66OHz+uBx54QEOHDlW/fv3K/IZJmmVUOnfeeaf5alJJCgsLlZubS3NnoyZNmmjjxo3y8/MzL5s2bZrWrVunjRs3qlatWjTLZeDt7a2tW7fqnnvuUWFhodzd3fXVV1/J399f0m+3aPTp00eHDh2yb6IOZNeuXRo9erT69u2rF154QU5OTjTLf8Lvm+VWrVrp7bffVlBQkHl9amqqhg4dqn379tkxS8fRpEkTffDBB/L395evr6/Wrl2r+++/37z+6NGjevDBB3kpSRn8vkYlacuWLVq5cqU2bdokZ2dn9e/fX0OHDjWfV6/ntnLMFaiQvLy8FBsbq5MnT5b432effWbvFB1Kfn5+sX94vP766+rTp4969OihgwcP2ikzx3XbbbeZ/9fZ2dnieaA1a9ZUTk6OnTJzTO3atdPWrVt19OhRPfLIIzp8+LC9U3J4137nr1y5Ym5IrnFzc9O5c+fskZZDevTRR7V06VJJUqdOnfTRRx9ZrF+7dq0aN25sh8xuHcHBwVq5cqX279+vyZMnKzk5uUzf/eA5y6h0WrVqpR9++EG9evUqcb3JZFJREX9wsVWTJk30/fffF7tCFxUVpcLCQj355JN2yswxNWjQQD/99JP5G9tffPGFxZelTp06JXd3dztl57hq166tFStWaOXKlXrsscdUWFho75QcWo8ePeTk5KSLFy8qLS1NzZs3N687efKk6tata8fsHMsrr7yibt266fHHH1ebNm20aNEibd++3XzPcmpqqt577z17p3lLuOuuu/TMM8/omWeeUXJyss3b0Syj0pk4caIuXbpkdf0999zDl33K4C9/+Ys+/PBDDR48uNi66OhoFRQUaPny5XbIzDENHz5c+fn55s+/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rV27Vj///LP69+8vSQoJCVG1atX0xBNPaNiwYcrPz9e///3vEm8xsfbzLMmzzz6rtWvXavDgwRozZow8PDy0bt067dq1S6+//nqZ7kkH4HholgFUam+++aYaNmyo+Ph4ffHFF6pbt65GjhypF1980eL5xKNHj9aBAweUkJCgpUuXqqioSP3791enTp0UGxurt956S88//7zq1aun0aNHy9XVVRMmTLjhvJ566ik98MADWrBggdauXavMzEw5OzurRYsWev311y0eB2frMRhl9uzZ2rBhg6Kjo5WXl6du3bopJibG4gkZHTp00ObNmzVnzhz985//VE5Ojtzc3HTffffp+eefL/M+77vvPj3yyCP68ssvFR8fr+rVq8vPz0/vvfeeevToIem3+6Dfe+89vfrqq5o+fbrq1q2rJ554Qh07dlTfvn0txrP28yxJ3bp19fnnn2vGjBlasWKFfv31VzVp0kSxsbHl9o8RABWHKTs7m28cAACu67333tP48eP15Zdfql27dvZOBwBuCu5ZBgAAAKygWQYAAACsoFkGAAAArOCeZQAAAMAKriwDAAAAVtAsAwAAAFbQLAMAAABW0CwDAAAAVtAsAwAAAFb8PwOeJqFpFj5jAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "our_sample = sf2015.sample(500, replace=False)\n", "\n", "unit = ''\n", "\n", "fig, ax = plt.subplots(figsize=(10,5))\n", "\n", "ax.hist(our_sample['Total Compensation'], bins = sf_bins, density=True, color='blue', alpha=0.8, ec='white')\n", "\n", "y_vals = ax.get_yticks()\n", "\n", "y_label = 'Percent per ' + (unit if unit else 'unit')\n", "\n", "x_label = 'Total Compensation'\n", "\n", "ax.set_yticklabels(['{:g}'.format(x * 100) for x in y_vals])\n", "\n", "plt.ylabel(y_label)\n", "\n", "plt.xlabel(x_label)\n", "\n", "plt.xticks(rotation=90)\n", "\n", "plt.title('');\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "106524.32" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "est_median = np.percentile(our_sample['Total Compensation'], 50)\n", "est_median" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The sample size is large. By the law of averages, the distribution of the sample resembles that of the population, and consequently the sample median is not very far from the population median (though of course it is not exactly the same).\n", "\n", "So now we have one estimate of the parameter. But had the sample come out differently, the estimate would have had a different value. We would like to be able to quantify the amount by which the estimate could vary across samples. That measure of variability will help us measure how accurately we can estimate the parameter.\n", "\n", "To see how different the estimate would be if the sample had come out differently, we could just draw another sample from the population, but that would be cheating. We are trying to mimic real life, in which we won't have all the population data at hand.\n", "\n", "Somehow, we have to get another random sample without sampling from the population." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The Bootstrap: Resampling from the Sample\n", "What we do have is a large random sample from the population. As we know, a large random sample is likely to resemble the population from which it is drawn. This observation allows data scientists to *lift themselves up by their own bootstraps*: the sampling procedure can be replicated by *sampling from the sample*. \n", "\n", "Here are the steps of *the bootstrap method* for generating another random sample that resembles the population:\n", "\n", "- **Treat the original sample as if it were the population.**\n", "- **Draw from the sample**, at random **with** replacement, **the same number of times as the original sample size**. \n", "\n", "It is important to resample the same number of times as the original sample size. The reason is that the variability of an estimate depends on the size of the sample. Since our original sample consisted of 500 employees, our sample median was based on 500 values. To see how different the sample could have been, we have to compare it to the median of other samples of size 500.\n", "\n", "If we drew 500 times at random *without* replacement from our sample of size 500, we would just get the same sample back. By drawing *with* replacement, we create the possibility for the new samples to be different from the original, because some employees might be drawn more than once and others not at all.\n", "\n", "Why is this a good idea? By the law of averages, the distribution of the original sample is likely to resemble the population, and the distributions of all the \"resamples\" are likely to resemble the original sample. So the distributions of all the resamples are likely to resemble the population as well. " ] }, { "cell_type": "markdown", "metadata": { "tags": [ "remove_input" ] }, "source": [ "![Bootstrap](../../images/bootstrap_pic.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### A Resampled Median\n", "Recall that when the `sample` method is used without specifying a sample size, by default the sample size equals the number of rows of the table from which the sample is drawn. That's perfect for the bootstrap! Here is one new sample drawn from the original sample, and the corresponding sample median." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Year TypeYearOrganization Group CodeOrganization GroupDepartment CodeDepartmentUnion CodeUnionJob Family CodeJob Family...Employee IdentifierSalariesOvertimeOther SalariesTotal SalaryRetirementHealth/DentalOther BenefitsTotal BenefitsTotal Compensation
8264Calendar20154Community HealthDPHPublic Health250.0SEIU - Health Workers, Local 10212700Housekeeping & Laundry...271256531.01621.292350.5359502.8311681.4512424.504730.1228836.0788338.90
4685Calendar20154Community HealthDPHPublic Health250.0SEIU - Health Workers, Local 10212300Nursing...3503517258.194907.161878.0324043.384554.884696.521919.1311170.5335213.91
12319Calendar20152Public Works, Transportation & CommerceDPWGeneral Services Agency - Public Works21.0Prof & Tech Engineers - Miscellaneous, Local 215200Professional Engineering...4931135421.010.000.00135421.0127253.5012424.5210116.8349794.85185215.86
23490Calendar20153Human Welfare & Neighborhood DevelopmentDSSHuman Services21.0Prof & Tech Engineers - Miscellaneous, Local 211200Personnel...4328092085.000.000.0092085.0018979.2112424.507567.9338971.64131056.64
15708Calendar20154Community HealthDPHPublic Health790.0SEIU - Miscellaneous, Local 10219900Public Service Aide...3549437494.700.000.0037494.708999.1612177.753055.9924232.9061727.60
..................................................................
23644Calendar20155Culture & RecreationFAMFine Arts Museum351.0Municipal Executive Association - Miscellaneous0900Management...35997118427.000.000.00118427.0023833.7412424.5024506.5860764.82179191.82
8710Calendar20154Community HealthDPHPublic Health791.0SEIU - Staff and Per Diem Nurses, Local 10212300Nursing...522517916.000.000.0017916.003248.161911.461416.066575.6824491.68
25486Calendar20151Public ProtectionPOLPolice911.0Police Officers' AssociationQ000Police Services...32237140578.7495.7310759.56151434.0328046.1712424.502569.9543040.62194474.65
11368Calendar20151Public ProtectionCRTSuperior Court195.0Court Unrepresented ProfessionalsSCRTSF Superior Court...4386768656.960.003000.0071656.9613250.877778.275949.3126978.4598635.41
25489Calendar20154Community HealthDPHPublic Health856.0Teamsters - Miscellaneous, Local 8562400Lab, Pharmacy & Med Techs...27976107416.030.000.00107416.0322139.0212424.508208.8342772.35150188.38
\n", "

500 rows × 22 columns

\n", "
" ], "text/plain": [ " Year Type Year Organization Group Code \\\n", "8264 Calendar 2015 4 \n", "4685 Calendar 2015 4 \n", "12319 Calendar 2015 2 \n", "23490 Calendar 2015 3 \n", "15708 Calendar 2015 4 \n", "... ... ... ... \n", "23644 Calendar 2015 5 \n", "8710 Calendar 2015 4 \n", "25486 Calendar 2015 1 \n", "11368 Calendar 2015 1 \n", "25489 Calendar 2015 4 \n", "\n", " Organization Group Department Code \\\n", "8264 Community Health DPH \n", "4685 Community Health DPH \n", "12319 Public Works, Transportation & Commerce DPW \n", "23490 Human Welfare & Neighborhood Development DSS \n", "15708 Community Health DPH \n", "... ... ... \n", "23644 Culture & Recreation FAM \n", "8710 Community Health DPH \n", "25486 Public Protection POL \n", "11368 Public Protection CRT \n", "25489 Community Health DPH \n", "\n", " Department Union Code \\\n", "8264 Public Health 250.0 \n", "4685 Public Health 250.0 \n", "12319 General Services Agency - Public Works 21.0 \n", "23490 Human Services 21.0 \n", "15708 Public Health 790.0 \n", "... ... ... \n", "23644 Fine Arts Museum 351.0 \n", "8710 Public Health 791.0 \n", "25486 Police 911.0 \n", "11368 Superior Court 195.0 \n", "25489 Public Health 856.0 \n", "\n", " Union Job Family Code \\\n", "8264 SEIU - Health Workers, Local 1021 2700 \n", "4685 SEIU - Health Workers, Local 1021 2300 \n", "12319 Prof & Tech Engineers - Miscellaneous, Local 21 5200 \n", "23490 Prof & Tech Engineers - Miscellaneous, Local 21 1200 \n", "15708 SEIU - Miscellaneous, Local 1021 9900 \n", "... ... ... \n", "23644 Municipal Executive Association - Miscellaneous 0900 \n", "8710 SEIU - Staff and Per Diem Nurses, Local 1021 2300 \n", "25486 Police Officers' Association Q000 \n", "11368 Court Unrepresented Professionals SCRT \n", "25489 Teamsters - Miscellaneous, Local 856 2400 \n", "\n", " Job Family ... Employee Identifier Salaries \\\n", "8264 Housekeeping & Laundry ... 2712 56531.01 \n", "4685 Nursing ... 35035 17258.19 \n", "12319 Professional Engineering ... 4931 135421.01 \n", "23490 Personnel ... 43280 92085.00 \n", "15708 Public Service Aide ... 35494 37494.70 \n", "... ... ... ... ... \n", "23644 Management ... 35997 118427.00 \n", "8710 Nursing ... 5225 17916.00 \n", "25486 Police Services ... 32237 140578.74 \n", "11368 SF Superior Court ... 43867 68656.96 \n", "25489 Lab, Pharmacy & Med Techs ... 27976 107416.03 \n", "\n", " Overtime Other Salaries Total Salary Retirement Health/Dental \\\n", "8264 621.29 2350.53 59502.83 11681.45 12424.50 \n", "4685 4907.16 1878.03 24043.38 4554.88 4696.52 \n", "12319 0.00 0.00 135421.01 27253.50 12424.52 \n", "23490 0.00 0.00 92085.00 18979.21 12424.50 \n", "15708 0.00 0.00 37494.70 8999.16 12177.75 \n", "... ... ... ... ... ... \n", "23644 0.00 0.00 118427.00 23833.74 12424.50 \n", "8710 0.00 0.00 17916.00 3248.16 1911.46 \n", "25486 95.73 10759.56 151434.03 28046.17 12424.50 \n", "11368 0.00 3000.00 71656.96 13250.87 7778.27 \n", "25489 0.00 0.00 107416.03 22139.02 12424.50 \n", "\n", " Other Benefits Total Benefits Total Compensation \n", "8264 4730.12 28836.07 88338.90 \n", "4685 1919.13 11170.53 35213.91 \n", "12319 10116.83 49794.85 185215.86 \n", "23490 7567.93 38971.64 131056.64 \n", "15708 3055.99 24232.90 61727.60 \n", "... ... ... ... \n", "23644 24506.58 60764.82 179191.82 \n", "8710 1416.06 6575.68 24491.68 \n", "25486 2569.95 43040.62 194474.65 \n", "11368 5949.31 26978.45 98635.41 \n", "25489 8208.83 42772.35 150188.38 \n", "\n", "[500 rows x 22 columns]" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "resample_1 = our_sample.sample(len(our_sample), replace=True)\n", "resample_1" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "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UT3yyCMym82WfS1atNDFixf117/+tUaSBAAAABzB7jXLf/jDH9SuXTtt27ZNly5dUlJSktX+fv366R//+IfhCQKoeTXxohNXVx7cDACo/+xulv/5z3/queeek6urq3744YcK+1u1aqW8vDxDkwNQO2riRScvvOBi6HgAADiC3cswbrrpJt10k+3wvLw8ubm5GZIUAAAAUBfY3Sx369ZNH330UaX7SktLtX79egUGBhqWGAAAAOBodjfLTz/9tNLS0jRjxgzt379fkpSbm6vPPvtMw4YN09GjRzVr1qwaSxQAAACobXavWR4wYIBWrlypZ555RsnJyZKkadOmyWw2q1mzZlq9erV69epVY4kCAAAAtc3uZlmSRo8ercGDBys1NVXffvutysvL1bZtW4WGhuqWW26pqRwBAAAAh6j2G/yaNGmiIUOG6IknntDvf/97hYWF/U+N8urVq9WlSxd5eXkpODhYu3btqjL+wIEDGjx4sLy9vRUQEKC4uDirZz5L0s6dOxUcHCwvLy917dpViYmJFcbZtGmTgoKC5OnpqaCgIG3ZssVq/5tvvql7771XrVu3VuvWrfXggw/q448//sXnCQAAgPrH7mb5ww8/1DPPPGNz/zPPPGPzC4C2bNiwQTExMZo1a5bS0tIUGBio8PBwnThxotL4oqIijRgxQp6entq+fbsWLVqkpUuXatmyZZaYnJwcjRkzRoGBgUpLS9PTTz+t2bNna9OmTZaYjIwMTZo0SeHh4UpPT1d4eLgmTpyorKwsS0zLli21YMECff7550pNTdX999+vRx99VP/+97+rdY4AAACov+xulpcuXVrp85WvKS4u1p///OdqHXz58uUaP368JkyYoA4dOig+Pl5eXl6V3gmWpPXr1+vy5ctKSEhQp06dFBYWpieffFIrVqyw3F1es2aNvL29FR8frw4dOmjChAkaN26cVUOdkJCgfv36KTo6Wh06dFB0dLT69u2rhIQES8yQIUP04IMP6s4771T79u31/PPP65ZbblFmZma1zhEAAAD1l91rlg8ePKiRI0fa3N+1a1e9//77dh+4tLRU+/bt08yZM622h4SEaM+ePZV+JiMjQ3369LF6nnNoaKhefvllHTt2TH5+fsrIyFBISIjV50JDQ7Vu3TpduXJFjRs3VmZmpiZPnlwhZtWqVZUet6ysTO+9954uXbp0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+eSTevLJJ5Wenm7352iW0eDMnDlTly5dsrn/zjvv5Ms+1fDrX/9a7777rsaNG1dhX1xcnMrKyvTWW285ILP6KSIiQqWlpZaff9qESD82z3379q3ttG4YEyZM0H333aeMjAy1bNnS0enUSz9/ss0tt9xi9fNHH32kPn361GZK9ZqXl5c+//xz/fnPf9aHH34os9msvXv36uTJk+rdu7defvllde/e3dFp1iutW7eWk5NTlTE//Q7D9bBmGQAAALCBNcsAAACADTTLAAAAgA00ywBQS4YMGaIhQ4Y4Og1ch7u7u2JjYx2dBoA6gmYZwA3L3d3drj/2fNP8H//4h1asWFELWf+/AwcOaNq0afrVr34lT09P+fr66uGHH9Ybb7yh4uLiWs3lRuOI3yeA+omnYQC4Ya1cudLq57/85S/KysrSsmXLrLYHBQVdd6yUlBQdPnxYUVFRhuZoy1//+lc99dRTat68ucaOHSt/f39dvnxZu3fv1nPPPaf//Oc/+vOf/1wrudyIqvp95ubmqlEj/u8RwI+4GgC4YY0dO9bq5x07duif//xnhe11TWZmpn7/+9+rR48eWr9+vZo1a2bZN2XKFB05ckSffPKJAzO8sbm6ujo6BQB1CMswADRo5eXlWrJkiXr06CFPT08FBATomWee0YULFywxQ4YM0bZt23TixAmr5RvXLF26VIMGDdKdd94pLy8v3XvvvUpKSvrFOcXFxUmS3nzzTatG+Zr27dtb3RG15xyunUevXr30zTffaOjQofLx8VGXLl2UkpIiSdq7d68eeugh+fj4qFu3bvrggw+sPv/222/L3d1daWlpeuaZZ3TnnXeqVatW+t3vfqfc3NwKeX711VcaO3asfH195e3trZCQkApvyLw25q5du/TSSy+pQ4cO8vb21ogRI5STk2MV+91332nixInq0KGDvLy81LlzZ02YMEGnT5+2Gi8sLEx33XWXPD091aNHDy1ZssTqJSTX+31Wtmb5xIkTevzxxy2/4759+2rdunVWMceOHZO7u7tee+01rVu3Tr169ZKnp6fuvfde7dixo8L8AKgfuLMMoEGbNWuW1qxZo4cfflhTp07Vf/7zH7311lvau3evPv74YzVu3FjR0dEqLCxUbm6u/vjHP1YYY8WKFXrggQc0fPhwmUwmvf/++3riiSdUXl6uiRMnViufH374QZ9/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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "unit = ''\n", "\n", "fig, ax = plt.subplots(figsize=(10,5))\n", "\n", "ax.hist(resample_1['Total Compensation'], bins = sf_bins, density=True, color='blue', alpha=0.8, ec='white')\n", "\n", "y_vals = ax.get_yticks()\n", "\n", "y_label = 'Percent per ' + (unit if unit else 'unit')\n", "\n", "x_label = 'Total Compensation'\n", "\n", "ax.set_yticklabels(['{:g}'.format(x * 100) for x in y_vals])\n", "\n", "plt.ylabel(y_label)\n", "\n", "plt.xlabel(x_label)\n", "\n", "plt.xticks(rotation=90)\n", "\n", "plt.title('');\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "111355.89" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "resampled_median_1 = np.percentile(resample_1['Total Compensation'], 50, interpolation='nearest')\n", "resampled_median_1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "By resampling, we have another estimate of the population median. By resampling again and again, we will get many such estimates, and hence an empirical distribution of the estimates." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "107778.0" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "resample_2 = our_sample.sample(len(our_sample), replace=True)\n", "resampled_median_2 = np.percentile(resample_2['Total Compensation'], 50, interpolation='nearest')\n", "resampled_median_2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Bootstrap Empirical Distribution of the Sample Median\n", "Let us define a function `bootstrap_median` that takes our original sample, the label of the column containing the variable, and the number of bootstrap samples we want to take, and returns an array of the corresponding resampled medians. \n", "\n", "Each time we resample and find the median, we *replicate* the bootstrap process. So the number of bootstrap samples will be called the number of replications." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "def bootstrap_median(original_sample, label, replications):\n", " \"\"\"Returns an array of bootstrapped sample medians:\n", " original_sample: table containing the original sample\n", " label: label of column containing the variable\n", " replications: number of bootstrap samples\n", " \"\"\"\n", " just_one_column = original_sample[label]\n", " medians = np.array([])\n", " for i in np.arange(replications):\n", " bootstrap_sample = just_one_column.sample(len(just_one_column), replace=True)\n", " resampled_median = np.percentile(bootstrap_sample, 50)\n", " medians = np.append(medians, resampled_median)\n", " \n", " return medians" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now replicate the bootstrap process 5,000 times. The array `bstrap_medians` contains the medians of all 5,000 bootstrap samples. Notice that the code takes longer to run than our previous code. It has a lot of resampling to do!" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "bstrap_medians = bootstrap_median(our_sample, 'Total Compensation', 5000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here is the histogram of the 5000 medians. The red dot is the population parameter: it is the median of the entire population, which we happen to know but did not use in the bootstrap process." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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BwAAAGBTFQbh9957T5L0wAMPyGAwmB5fzahRo6qnMgAAAMCKKgzCERERMhgMGj58uNzd3RUREXHVJzMYDARhAAAAOIQKg/B//vMfSZK7u7vZYwAAAMAZVBiEAwMDK30MAAAAODJuBQcAAACXZPGuEZK0fft2vfXWW0pLS9OZM2fK3HbZYDAoOTm5OusDAAAArMLiIBwXF6fZs2frhhtuUJcuXdS2bVtr1gUAAABYlcVBePny5erVq5fWr19v+gIdAAAA4KgsXiOck5OjYcOGEYIBAADgFCwOwsHBwTp+/Lg1awEAAABsxuIgvGDBAq1du1ZJSUnWrAcAAACwCYuD8MKFC9WwYUMNGTJEXbt21bBhwxQeHm7234gRI6pcwMqVK9WxY0c1btxYvXv31o4dOyrtf+DAAQ0YMED+/v5q27atFi9eXGb3im+++Ua9e/dW48aN1alTJ61atarM88TFxalr167y9/dXu3btFBUVpXPnzlW5fgAAADgmi78sd+jQIRkMBt10000qKirSL7/8UqaPwWCo0osnJCQoOjpaL730krp3766VK1cqPDxcu3btUtOmTcv0z8/P19ChQ9WzZ09t27ZNqampioyMVL169TRlyhRJUlpamkaMGKExY8bo9ddf165duzR16lT5+Pho8ODBkqR169Zpzpw5WrZsmXr06KG0tDRNmTJFhYWFio2NrdI1AAAAwDFZHIT3799f7S++fPlyjR49WmPHjpUkxcTEaOvWrVq1apXmzJlTpv+6detUUFCguLg4eXp6ql27djp8+LBWrFihyZMny2AwaPXq1fL391dMTIwkqXXr1vr+++8VGxtrCsJ79uxRly5d9MADD0iSmjVrpgceeECbN2+u9msEAABAzWS3O8tdvHhRycnJ6tevn9nxfv36affu3eWes2fPHvXo0UOenp6mY6GhoUpPT9exY8dMff78nKGhodq7d6+Ki4slSd27d9dPP/2k7777TpJ04sQJffbZZ/rLX/5SbdcHAACAms3iGeETJ05Y1K+8JQ3lycnJUUlJiXx9fc2O+/r6Kisrq9xzsrKy1KRJkzL9S9uCgoKUlZWlPn36lOlz6dIl5eTkyN/fX8OHD1dubq4GDBggo9GoS5cuaeTIkZo7d26lNaemplp0bag63lvHxxg6rvz8IBUVXZlgKCoqsnM11lFc7KaiohJ7l2FV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mf4FBQW6//77dezYMT388MNq3ry59u/fr9jYWB0+fFhr16419X3qqae0du1aDR48WHfeead+/PFHDR061KLlFlUdh1mzZsnT01NPP/20cnJyFBsbq0cffVRffPGFRe8DAMsQhAFY1fDhw80e16lTR6+88oruu+8+07GDBw9q9erVGjFihF5//XXT8VatWmnmzJl677339NBDD6m4uFizZ89Wy5YttWXLFl133XWSrnxRqm/fvnrhhRf0+uuv69Zbb1WHDh2UkJCg++67T82aNTM95yeffKIzZ84oISFBt912m+n4rFmzTP9/0KBBmjZtmtq3b6+RI0eWe10tW7bU22+/bXbsL3/5iwYPHmx2bOTIkerRo4fefvttRUVFmbX99ttv+u6770xrmO+8804NHjxYsbGx+tvf/lbhe/rXv/5Vy5cv1xNPPKFXX31Vd9xxh7p37667777bFPpLTZgwQVOmTDE7du+996p///7avHmzRowYYdbm4+OjhIQEGQwGSVdmuVeuXKnw8HDT2EyYMEHdunXTO++8UyagHjx4UJ9//rm6desmSRozZoxuv/12zZ07t9IQFx0drcaNGysxMdG0zGTChAkaN26cFi5cqLFjx5rGuzKBgYHq3r274uPjNWDAABUXF+ujjz5SZGRkuf1XrFih1NRUbd++3fSbAElq27atoqKitGPHDvXs2VMHDhzQ2rVr9eCDDyo2NtbU7+9//7tefvnlq9ZV1XGoV6+ePv74Y9WqdeUXt9dff71mzZqln3/+WW3btr3q6wGwDEsjAFjV4sWL9dFHH+mjjz7S66+/rr59+2rq1KlmazVLf3X+xBNPmJ07fvx4NWzY0NSenJyszMxMTZgwwSwUderUSX369NEXX3xR7o4Bf9SgQQNJ0pYtW8x+fV5VEyZMKHPsj+uEL1y4oNzcXHl5ealFixZKTk4u0/+BBx4w+yJf79691bZt26vO+t1www1KTEzU+PHjde7cOb311luaNGmSbrnlFs2cOdM0Q/3nms6dO6fc3Fzdcsst8vLyKremBx980BSCJalLly4yGo3661//atavc+fOOnr0aJnzb7vtNlMIlqRGjRopPDxce/bsqXAHj7y8PG3fvl1DhgxRQUGBcnJyTP/93//9n37//Xft3bu30vfkj8LDw7Vlyxbl5+fryy+/1JkzZypcj75hwwZ169ZNN9xwg9nr9unTR5KUlJQk6b9/Rv+4TZoki2eqqzoO48aNM4VgSabZdJZHANWLGWEAVnX77bebfVkuLCxMvXv31vTp09W/f3+5u7vr+PHjMhgMatWqldm5devWVbNmzXT8+HFJMv3vLbfcUuZ1WrdurW3btik/P99sjeyf3XnnnRo4cKAWL16sFStWqGfPnurfv7/CwsJUv359i68rKCiozLHCwkK98MILio+PV0ZGhlnbn2dqJalFixblHrNk27amTZvq5Zdf1ssvv6y0tDRt375dsbGxiouLU4MGDUwz3Hl5eXr++ee1ceNGnTlzxuw5ylt/fdNNN5k9btiwYYXHCwoKVFRUpLp16171miTpxIkT5e7gceTIERmNRi1evNi0W8efZWdnl3u8PEOGDNGMGTO0efNmffXVV+rWrZuaNWumY8eOlfvaP/30U7l1//F1T5w4IYPBoJYtW5q133DDDRbtSlLVcWjatKnZ49LX+PO5AP43BGEANlWrVi3dcccdiouL05EjR676a16j0Wg2Q1lZP0sYDAa9/fbb+uGHH7RlyxZt375dTz31lF566SVt3bpVfn5+Fj3Pn9d0Sld+vb9mzRo9+uij6t69uxo2bKhatWpp5syZunz5crm1XOt1/FFQUJAefvhhDR48WMHBwfrggw9MQXj8+PHasWOHJk+erI4dO6pBgwYyGAwaP358uTW5ubmV+xp/nJ2srN5ruabSOiIiInT33XeX26ddu3aVPscfNWrUSKGhoXrzzTf1008/af78+ZW+9l133aVnnnmm3PYmTZpIqvwaLBmz6hqHa/nzAaBiBGEANle628D58+cl/ffLX6mpqbr11ltN/S5evKjjx4+b9vINDAyUJB0+fFj9+vUze87U1FR5e3ubZjCvFp47d+6szp07a/bs2fryyy8VHh6uNWvWKCoqyqLgXZ6EhAQ98MADWrRokdnxvLy8cr/89ssvv5Q59uuvv5aZDbTU9ddfr+bNm5t2qcjLy9O2bdsUHR2t6OhoU7/CwsJrutGIJSq6JqnsLGep0tn12rVrm5Yk/K9GjBih8ePHq06dOhoyZEiF/Zo3b65z585d9XVL/4z+8ssvat++vel4dnZ2uTO6f2SPcQBgGdYIA7Cp4uJiJSYmyt3d3bTEoXQWcPny5WZ9V69erfz8fN1zzz2SZNp6atWqVSooKDD1279/vxITE3X33XebQmzpmsw/B428vLwys2qdOnUy61vRuVfj5uZW5rk//PDDCu/09v7775u9xtdff62ff/5Zf/nLXyp9ne+++06///57mePHjx9XSkqKaYlJ6Szun2tasWJFubOQ1WHv3r3as2eP6XFubq7WrVunrl27VriEwNfXV3fddZfefPPNMtuJSVVbFlGqf//+io6O1osvvljuspRSw4YN048//qhPP/20TFtBQYHOnTsn6b9/RuPi4sz6rFix4qq12GMcAFiGGWEAVrV161bTjOBvv/2mhIQE/fLLL3r66adNs7ft27fXuHHjTMG3b9+++vnnn7V69WrdfvvtGjVqlKQrO04sWLBAjzzyiO655x6NHDnStH1aw4YNzXZ+KN0RYt68eRo+fLjc3d111113ad26dVq5cqXuv/9+NW/eXAUFBXr33Xfl5uZm2vGhfv36atWqlRISEtSyZUs1atRIzZo1U5cuXSq91v79++v9999XgwYN1K5dO+3fv18JCQnlrieWrgTAe++9Vw8++KDOnj2rf/zjH/Lz89PkyZMrfZ34+Hh98MEHuu+++xQcHCxPT0+lpaXp3XffVVFRkWbOnCnpyjreO+64Q8uWLVNxcbGaNm2qnTt3XnV7tv9Fu3btNHLkSD366KOm7dN+//33SnfBkKSXX35Z99xzj3r16qWxY8eqRYsWysnJ0X/+8x9t27ZNJ06cqFIdnp6eZrOvFZkyZYq++OIL/fWvf9WIESPUuXNnFRUV6ZdfftGGDRtMIf7WW2/VyJEj9c477+j33383bZ+2ffv2SoO2ZJ9xAGAZgjAAq/rjMgEPDw+1atVKL7/8ssaNG2fW76WXXlKzZs20Zs0affHFF/Lx8dGECRP07LPPmt18IywsTJ6ennrppZc0b948ubu764477tDzzz9vFji7du2qZ599Vm+++aYiIyN1+fJlbd68Wb169dLevXu1YcMGZWVlqUGDBurYsaOWLFli9qW+5cuXa+bMmXr22WdVVFSkUaNGXTUIL1q0SHXq1NGGDRv0zjvvKDg4WOvXr9dzzz1Xbv+nnnpKqampio2NVV5enrp166YlS5ZcNVg9/PDDqlevnr7++mt98cUXOnv2rK6//np16dJFkydPNtuvd+XKlYqOjtbq1at16dIl9ezZU5s2bSqzzVt16datm+68804tWrRIaWlpatGihd55552r3qq6ZcuW2r59u5YsWaJ169YpOztbPj4+at26tebNm2eVWqUrgXnTpk169dVXlZCQoPXr1+u6665TUFCQJk2aZPYFztdee01+fn5677339OWXX6pr16766KOPymwRWB5bjwMAyxjy8vJYeQ8ANvTvf/9bAwcO1L/+9S+LQpSj8Pb21rhx4/TKK6/YuxQAsAhrhAEAAOCSCMIAAABwSQRhAAAAuCTWCAMAAMAlMSMMAAAAl0QQBgAAgEsiCAMAAMAlEYQBAADgkgjCAAAAcEn/D4H3ZwNh5Kf9AAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "resampled_medians = pd.DataFrame({'Bootstrap Sample Median':bstrap_medians})\n", "\n", "unit = ''\n", "\n", "fig, ax = plt.subplots(figsize=(10,5))\n", "\n", "ax.hist(resampled_medians, density=True, color='blue', alpha=0.8, ec='white')\n", "\n", "ax.scatter(pop_median, 0, color='red', s=40, zorder=10).set_clip_on(False)\n", "\n", "y_vals = ax.get_yticks()\n", "\n", "y_label = 'Percent per ' + (unit if unit else 'unit')\n", "\n", "x_label = 'Bootstrap Sample Median'\n", "\n", "ax.set_yticklabels(['{:g}'.format(x * 100) for x in y_vals])\n", "\n", "plt.ylabel(y_label)\n", "\n", "plt.xlabel(x_label)\n", "\n", "plt.xticks(rotation=90)\n", "\n", "plt.title('');\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is important to remember that the red dot is fixed: it is \\$110,305.79, the population median. The empirical histogram is the result of random draws, and will be situated randomly relative to the red dot. \n", "\n", "Remember also that the point of all these computations is to estimate the population median, which is the red dot. Our estimates are all the randomly generated sampled medians whose histogram you see above. We want those estimates to contain the parameter – it they don't, then they are off." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Do the Estimates Capture the Parameter?\n", "How often does the empirical histogram of the resampled medians sit firmly over the red dot, and not just brush the dot with its tails? To answer this, we must define \"sit firmly\". Let's take that to mean \"the middle 95% of the resampled medians contains the red dot\". \n", "\n", "Here are the two ends of the \"middle 95%\" interval of resampled medians:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "98658.98000000001" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "left = np.percentile(bstrap_medians, 2.5, interpolation='nearest')\n", "left" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "114416.98999999999" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "right = np.percentile(bstrap_medians, 97.5, interpolation='nearest')\n", "right" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The population median of \\$110,305 is between these two numbers. The interval and the population median are shown on the histogram below." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "image/png": "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ZswYbdq0qczgXiIpKUn9+/eXj4+PIiIi5OXlpS+//FKTJ09WXl5eqdcpT2hoqObNm6evvvpKAwcOlCStX79ebdq0UYcOHUr1z8/P1/3336/jx4/rkUceUfPmzXXgwAHFxMToyJEjWrdunanv008/rXXr1mnIkCG666679NNPP2no0KEWLbeo6jjMmjVLnp6eeuaZZ5SVlaWYmBg99thj+vLLLy16HwBYhiAMwKqGDx9u9rhOnTp65ZVXdN9995mOHTp0SGvWrNGIESP0+uuvm463atVKM2fO1HvvvaeHH35YRUVFmj17tlq2bKktW7bouuuuk3T1i1J9+vTRiy++qNdff1233nqrOnTooPj4eN13331q1qyZ6Tk//fRTnTt3TvHx8brttttMx2fNmmX6/4MHD9a0adPUvn17jRw5sszratmypd5++22zY3/96181ZMgQs2MjR45U9+7d9fbbbysyMtKs7ezZs/r+++9Na5jvuusuDRkyRDExMfr73/9e7nv6t7/9TStWrNCTTz6pV199VXfeeae6deume+65xxT6S0yYMEFTpkwxO3bvvfdqwIAB+vjjjzVixAizNh8fH8XHx8tgMEi6Osu9atUqhYWFmcZmwoQJ6tq1q955551SAfXQoUP64osv1LVrV0nSmDFjdPvtt2vu3LkVhrioqCg1btxYCQkJpmUmEyZM0Lhx47Rw4UKNHTvWNN4VCQwMVLdu3RQXF6eBAweqqKhIH330kSIiIsrsv3LlSiUnJ2v79u2m3wRIUtu2bRUZGamdO3eqR48eOnjwoNatW6eHHnpIMTExpn7/+Mc/tHTp0krrquo41KtXT5988olq1br6i9vrr79es2bN0i+//KK2bdtW+noALMPSCABWtXjxYn300Uf66KOP9Prrr6tPnz6aOnWq2VrNkl+dP/nkk2bnjh8/Xg0bNjS1JyYmKj09XRMmTDALRZ06dVLv3r315ZdflrljwB81aNBAkrRlyxazX59X1YQJE0od++M64YsXLyo7O1teXl5q0aKFEhMTS/V/8MEHzb7I16tXL7Vt27bSWb8bbrhBCQkJGj9+vM6fP6+33npLkyZN0i233KKZM2eaZqj/XNP58+eVnZ2tW265RV5eXmXW9NBDD5lCsCTdcccdMhqN+tvf/mbWr3Pnzjp27Fip82+77TZTCJakRo0aKSwsTHv3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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "resampled_medians = pd.DataFrame({'Bootstrap Sample Median':bstrap_medians})\n", "\n", "unit = ''\n", "\n", "fig, ax = plt.subplots(figsize=(10,5))\n", "\n", "ax.hist(resampled_medians, density=True, color='blue', alpha=0.8, ec='white', zorder=5)\n", "\n", "ax.plot(np.array([left, right]), np.array([0,0]), color='yellow', lw=8, zorder=10)\n", "\n", "ax.scatter(pop_median, 0, color='red', s=40, zorder=15).set_clip_on(False)\n", "\n", "y_vals = ax.get_yticks()\n", "\n", "y_label = 'Percent per ' + (unit if unit else 'unit')\n", "\n", "x_label = 'Bootstrap Sample Median'\n", "\n", "ax.set_yticklabels(['{:g}'.format(x * 100) for x in y_vals])\n", "\n", "plt.ylabel(y_label)\n", "\n", "plt.xlabel(x_label)\n", "\n", "plt.xticks(rotation=90)\n", "\n", "plt.title('');\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The \"middle 95%\" interval of estimates captured the parameter in our example. But was that a fluke? \n", "\n", "To see how frequently the interval contains the parameter, we have to run the entire process over and over again. Specifically, we will repeat the following process 100 times:\n", "\n", "- Draw an original sample of size 500 from the population.\n", "- Carry out 5,000 replications of the bootstrap process and generate the \"middle 95%\" interval of resampled medians.\n", "\n", "We will end up with 100 intervals, and count how many of them contain the population median.\n", "\n", "**Spoiler alert:** The statistical theory of the bootstrap says that the number should be around 95. It may be in the low 90s or high 90s, but not much farther off 95 than that." ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Total Compensation
0117766.86
141209.83
2110561.13
338624.97
6260280.95
......
4298361349.71
42984132788.81
4298673295.59
4298719973.37
4298855812.90
\n", "

36569 rows × 1 columns

\n", "
" ], "text/plain": [ " Total Compensation\n", "0 117766.86\n", "1 41209.83\n", "2 110561.13\n", "3 38624.97\n", "6 260280.95\n", "... ...\n", "42983 61349.71\n", "42984 132788.81\n", "42986 73295.59\n", "42987 19973.37\n", "42988 55812.90\n", "\n", "[36569 rows x 1 columns]" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "total_comps = sf2015[['Total Compensation']]\n", "total_comps" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "# THE BIG SIMULATION: This one takes several minutes.\n", "\n", "# Generate 100 intervals, in the table intervals\n", "\n", "left_ends = np.array([])\n", "right_ends = np.array([])\n", "\n", "total_comps = sf2015[['Total Compensation']]\n", "\n", "for i in np.arange(100):\n", " first_sample = total_comps.sample(500, replace=False)\n", " medians = bootstrap_median(first_sample, 'Total Compensation', 5000)\n", " left_ends = np.append(left_ends, np.percentile(medians, 2.5))\n", " right_ends = np.append(right_ends, np.percentile(medians, 97.5))\n", "\n", "intervals = pd.DataFrame(\n", " {'Left':left_ends,\n", " 'Right':right_ends}\n", ") " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For each of the 100 replications, we get one interval of estimates of the median." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
LeftRight
0100639.945000113009.80850
1103596.780000113549.15000
2106650.085125116872.21000
3101855.280000111880.11000
498633.755000113396.61500
.........
95103042.430000117401.49500
9697683.995000113182.87500
97111704.995000121917.01000
98105761.655000117376.24225
99104795.530000116920.50500
\n", "

100 rows × 2 columns

\n", "
" ], "text/plain": [ " Left Right\n", "0 100639.945000 113009.80850\n", "1 103596.780000 113549.15000\n", "2 106650.085125 116872.21000\n", "3 101855.280000 111880.11000\n", "4 98633.755000 113396.61500\n", ".. ... ...\n", "95 103042.430000 117401.49500\n", "96 97683.995000 113182.87500\n", "97 111704.995000 121917.01000\n", "98 105761.655000 117376.24225\n", "99 104795.530000 116920.50500\n", "\n", "[100 rows x 2 columns]" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "intervals" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The good intervals are those that contain the parameter we are trying to estimate. Typically the parameter is unknown, but in this section we happen to know what the parameter is." ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "110305.79" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pop_median" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "How many of the 100 intervals contain the population median? That's the number of intervals where the left end is below the population median and the right end is above." ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "95" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(\n", " intervals[\n", " (intervals['Left'] < pop_median) & \n", " (intervals['Right'] > pop_median)\n", " ]\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It takes a few minutes to construct all the intervals, but try it again if you have the patience. Most likely, about 95 of the 100 intervals will be good ones: they will contain the parameter.\n", "\n", "It's hard to show you all the intervals on the horizontal axis as they have large overlaps – after all, they are all trying to estimate the same parameter. The graphic below shows each interval on the same axes by stacking them vertically. The vertical axis is simply the number of the replication from which the interval was generated.\n", "\n", "The red line is where the parameter is. Good intervals cover the parameter; there are about 95 of these, typically. \n", "\n", "If an interval doesn't cover the parameter, it's a dud. The duds are the ones where you can see \"daylight\" around the red line. There are very few of them – about 5, typically – but they do happen. \n", "\n", "Any method based on sampling has the possibility of being off. The beauty of methods based on random sampling is that we can quantify how often they are likely to be off." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAIdCAYAAADBH1z+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAABWCklEQVR4nO3dd3yTVfvH8W8oqyA0lae0rLJahogg24KsIkNAZFcRAQUU8HGCFXkUBLWgIMsKKDhQBJnKFmTJhgeBKq4KgghYZtmb+/cHT/MjTUqTJm3Su5/368VLe98nyZWTk7tXz7lyYklOTjYEAABgErl8HQAAAIA3kdwAAABTIbkBAACmQnIDAABMheQGAACYCskNAAAwFZIbOIiLi5PVatX69esz9XFat24tq9WaqY9hBimvx4wZM+yOV61aVVWrVvVRVP5p/fr1slqt6tevn69DMYUZM2Y4HXu+snfvXj322GOqVKmSgoOD/f76YbVa1bp1a1+HkSOR3HiZ1Wq1+3fnnXeqdOnSatmypT755BNdv37d1yFmmZTk5cCBA74OxWUpiYTValWfPn3SbLdlyxZbuwoVKmRhhPCmAwcOyGq1eiVJTCsJhXdcv35d3bp105IlS9SwYUMNGjRIsbGx6d4u9TXZ2b/FixdnKCZvjZ2slFPGaW5fB2BWKW+669ev688//9TixYu1ZcsWrV27Vp999pmPo/MPkydP1sWLF30dhlO5c+fWwoUL9c477yg4ONjh/GeffabcuXPr2rVrPojupoULF/rssYGsduDAAf3666+Kjo7Whx9+6Pbtb5cIZdYfKNu2bVNgYGCm3Dduj+QmkwwePNju5z179qhZs2b65ptvtGnTJkVFRfkoMv9RqlQpX4eQphYtWmjJkiWaNWuWwxLH6dOn9c0336hly5YZ/ovPG8qWLeuzxway2pEjRyRJRYsWzdDtU1+TswKzur7DslQWqVKliurXry9J2rFjh+14UlKSBg0apGrVqqlo0aIqW7asunTpog0bNjjcx631BL///rseeeQRlSlTRsWLF1erVq20du1ah9ukVz/jzprw4sWL1adPH9WoUUPFixdXiRIl1LBhQ33wwQcOy21Wq1UbN26UJFWrVs02/XvrFG5aNTeGYejTTz9VdHS0SpYsqWLFiqlBgwaaOHGirly54tC+atWqslqtunbtmsaMGaMaNWqoaNGiqlKlil577TVdvnzZped3qyZNmqhUqVKaPn26w7k5c+bowoUL6tGjx23v4/vvv1dMTIzKly+vkJAQ3X333XrppZeUlJTktP2uXbvUsWNHlSxZUqVKlVK7du20devWNO/fWc3N6dOnNX78eLVp00aVK1dWSEiIypcvr5iYmDTvK+V1uXDhgl577TXdfffdKlq0qO69916NHTtWhuH6N7Ts2rVLL7/8sqKiolS6dGmFhoaqRo0aevXVV3Xq1CmH9ik1HXFxcUpISFCXLl0UHh6uYsWKqVWrVtqyZYvTxzl69KieeeYZRUZGKiwsTA0aNPDqNPut77UDBw7oiSeeULly5RQaGqpGjRpp6dKldu1bt26tUaNGSZIGDBhgt+Rx67LsjRs3NH36dLVo0ULh4eEKDQ3Vfffdp/fee8/p2E55bZKTkzVo0CBVqVJFRYoU0QcffKCOHTvKarVq165dTp/Dd999J6vVqr59+9qOufv6pGX37t168sknVbVqVYWGhqpcuXKKiorSSy+9pNOnT7t8P99//706d+6ssmXLqmjRoqpWrZpiY2N17Ngxh35IuU7NnDnT1rdxcXEuP5arLl++rA8++EANGzZUmTJlFBYWprvvvludOnWyzZamjA9JOnjwoN3rfesfQ86ur7cuC61Zs0atWrVSiRIlVL58efXv31/JycmSpJ07d6pz584qXbq0SpQooZiYGKdL/O68ppk1TtevX6+uXbuqSpUqKlq0qCIiItS4cWMNGTLEreuHNzFz40MHDhxQq1atdPjwYdWvX18dOnTQP//8o6+//lrfffedxo0bp8cff9zp7R544AFVqVJFvXr10uHDh/X111+rQ4cO+uSTT9SuXbtMifeNN95Qrly5VKtWLRUvXlynT5/WunXr9Oqrr+qHH37Q1KlTbW1jY2P15Zdf6uDBg3r66acVFBQkSbb/3k7fvn01Z84cFS9eXI8++qjy5Mmj5cuX67XXXtN3332nefPmKXdux6Hbu3dvbd68Wc2aNVOhQoW0cuVKTZw4UceOHdPkyZPdeq65cuVS9+7d9fbbb2v79u2qXbu27dxnn32mkiVLKjo6Os3bjxs3TsOGDVNwcLCaN2+u0NBQ7dmzR9OmTdOyZcu0cuVKlShRwtZ+69atevjhh3X58mW1bdtW5cuX1549e9S2bVs1bNjQ5bh///13vfnmm4qKilKLFi1ktVp18OBBLV26VCtXrtTMmTPVvHlzh9tdu3bNNv6aNWum3Llza8mSJXrjjTd08eJFvfrqqy49/meffabFixerfv36atKkia5fv65du3bpgw8+0MqVK7V69WoVKlTI4Xa7du3ShAkTVLduXT3++OP6+++/tXDhQrVr107ff/+9KlasaGt78uRJNW/eXPv371fdunUVFRWlf/75RwMHDlSjRo1c7itXHDx4UNHR0Spbtqy6du2qU6dOacGCBerWrZu+/vpr2+M9+uijkqSNGzfqwQcftEs6U8b8tWvX9Nhjj2n58uWKiIhQx44dlS9fPm3cuFHDhw/XunXrnI7tK1eu6KGHHtKZM2fUvHlz5c2b1/beWLVqlWbMmKHq1as7xD5z5kxJUrdu3WzHMvr63CohIUHNmzeXxWJRy5YtVbZsWZ07d05//fWXvvzySw0YMMCl9/knn3yiF198UYGBgWrXrp3CwsK0detWTZkyRUuWLNGyZctss7uxsbH666+/NHPmTN199922hKFBgwbpPo67nn76aS1YsECVKlVSly5dVLBgQR05ckQ//PCDFi9erIceekjh4eGKjY3VqFGjVLhwYbuExtUanJTrQKtWrdSzZ0+tW7dOX375pfbv36+hQ4fq4YcfVsOGDdW9e3ft2LFDy5cv1/79+7Vp0yblyvX/8xLuvKaZMU5XrFihrl27qlChQrZELTk5WXv37tWUKVP0xhtvOL1eZ7rk5GSDf977J8mQ5HB88+bNRmBgoCHJWLJkiZGcnGw0bdrUkGS88sordm03btxoBAYGGvny5TN++ukn2/FFixbZ7v/f//633W2+++47IyAgwAgODjb+/vtv2/HY2FhDkrFo0aI0461fv77dsbRus3PnTofbnzx50ujSpYshyVi5cqXdufr16xuSjN27dzt97JTztx6bOnWqIcmoUqWK8ddff9mOHz161GjYsKEhyRg+fLjdbUqVKmVIMu69915j//79tuOHDh0yypYta+TKlcv49ddfXXr9Up77e++9Z/z8889GQECA8dhjj9nOr1mzxu41k2QULVrU7j6WLFliWCwWo3bt2nbxJCcnG5MnTzYkGW3atLEdO3XqlBEZGWlIMj777DO79u+++67tNY+Pj3d43qVKlbI7duDAAWPv3r0OzyshIcEoWrSoERkZmeaYbdGihfHPP//YjicmJhqFCxc2ChcubBw7dsyl/ktISDBOnDjhcHzs2LGGJGPo0KF2x+Pj422PP2XKFKe3eeKJJ+yO9+jRw5Bk9OnTx+74unXrjDx58hiSjEceecSleHfv3m1IcujHW99rQ4YMsTs3b948Q5LRrFkzp2Mn9euU8m/IkCG2uG/to5MnT9qe08iRI52+No0aNTIOHz5sd+6ff/4xgoKCjDvvvNM4evSowzjInz+/UbJkSePkyZMevz63Pqf+/fsbkozPP//c4X4OHjxoJCUluTRO8ubNaxQsWNDYvHmz3bmBAwcakozmzZs7fU1cfW1T92FsbGya/27tN4vFYlSrVs04fvy4w32lfm85Gzupz6d1fc2TJ4/dNfPo0aPGXXfdZUgyChcubNe/p06dMqKjow1JxowZMzx6z3l7nLZp08aQZKxbt87hvvbt2+fWa+XNfyxLZZK4uDjFxcXpzTffVJ8+fdSkSRNdvHhRbdq0Uf369XXo0CGtXr1axYsX14svvmh32ypVquiJJ57Q5cuX9dVXXzncd+HChfXyyy/bHatVq5bat2+vU6dOOUyZe4uzGo9cuXKpf//+kqTVq1d7/BhffPGFJGno0KEqXLiw7XjevHn19ttvS1KaBdnDhg2zW+YqWLCgunTpohs3bqQ5dX87xYsXV7NmzbRgwQKdPXvW9ti5cuXSY489lubtJk+eLMMwNHbsWIdlt5iYGN1zzz1atmyZzpw5I+nmrE1iYqLq1q3rMOv25JNPqly5ci7HHBQUpCJFijgcDw8PV7t27ZSYmKiDBw86ve2oUaOUP39+288hISFq3bq1zpw5o8TERJcePzw8XAEBAQ7He/bsqcKFC6c5Ru677z517drV7thjjz2m3Llz64cffrAdu3r1qubMmaOCBQtqyJAhdu2rVaumLl26uBSnq8LDwx3en9HR0SpVqpRdXOm5ceOGJk+erJCQEMXFxdn1Ua5cuTR8+HBZLBan73dJGjFihAoUKGB3LH/+/OrYsaNOnjyp5cuX251bsGCBLl26pJiYGLu/8jP6+twq5f5SxyNJhQoVUr58+dK9j9mzZ+vKlSt68sknVblyZbtzgwYNUrFixbRixQodPnw43fty1ahRo9L8lyJXrlwyDEP58uVz2k/O3lsZ1blzZ7sZ4bx58+rhhx+WdHMst23b1nbOYrGoc+fOkqQff/zR7n688ZqmyMg4vd14uPPOO11+bG9jWSqTpLxhLBaLChUqpGrVqqlz587q2bOnpJtTu5JUr1495c2b1+H2jRs3Vnx8vHbv3u1wrlq1ak6njuvXr6+5c+faahe87eTJk5owYYJWrFihAwcO6Pz583bnUwr+PJHyfO+//36Hc3fffbdCQkK0d+9enTt3TnfccYfdeWdT8ylLP8n/W8d2V48ePfTtt99q7ty56ty5s+bNm6dmzZqpZMmSad5m69atyp07txYtWqRFixY5nL9y5YquX7+uffv2qXr16rbnnFKTdatcuXKpXr162rdvn8sxb9myRZMnT9b27dt17NgxhzXyI0eOOBRzBwUFqUyZMg735W7/Xb16VZ988onmz5+vX375RWfPntWNGzfsHtsZZ69dnjx5VLRoUbvH/v3333XhwgXVqVPHab1W/fr1vVp7U7VqVae/OEqUKKFt27a5fD9//PGHTpw4obJly+rdd9912iYwMNBpEpkvX740lzoeffRRffzxx/ryyy/10EMP2Y6nLEmlLEOkyOjrc6uOHTtq8uTJ6tatmx566CE1bNhQderUcat4NmXMO1tyzZcvn+rVq6cFCxYoISFBxYsXd/l+b8eVMVyoUCE9+OCDWrp0qerXr682bdrovvvuU+3atR2uN5665557HI6FhYVJcr60lXIudcLnjdc0RUbGaZcuXbRw4UJFR0erffv2uv/++1W7dm2VLl3a5cfNDCQ3mSS9N1LKX+1pVf6HhobatbtVWrcJCQlJ8zaeSk5OVpMmTXTgwAHVrFlTMTExCg4OVkBAgE6fPq3JkydnqHA3tTNnzqhw4cJpfnwyNDRUx44d05kzZxwuNs7W+VN+MWV0f6EWLVqoePHimj59ugICAnT27FmndVC3OnnypK5du2b3F6Ez586dk/T/r1fK65eaO58OWbRokXr06KH8+fOrSZMmKlOmjAoUKKBcuXJpw4YN2rhxo9PX6dZZslu523+9evXS4sWLVaZMGbVu3VqhoaG25H3SpElpjpHbPf6tj+3NvnLF7eK69RdIek6ePClJ+vPPP9MdF6mFhITIYrE4PVerVi1VqlRJ3333nY4dO6aQkBDt27dPW7du1X333ecw65fR1+dW9957r7799luNHj1aixcv1uzZsyXdnEF4/vnn9cQTT6R7H55c/zLbxx9/rIkTJ2rOnDl65513JN1MtFu2bKk333zTa7+0nf2BmvJ+u925q1ev2h33xmuaIiPjtE2bNpo3b54mTpyomTNn2mbW77rrLsXGxmZaDWh6SG58JOWiefToUafnUz5R4+zimtZtUj5hcOttUqYMnf1ycmc24/PPP9eBAwcUGxvr8JHKbdu2uV2wm5bChQvr1KlTunjxotME53b9khkCAgL06KOPavTo0Tp69KjCwsLUsmXL296mcOHCunr1aprLP87aS3L4hEiKtF5vZ95++23lzZtXa9assSvClaTnn3/e9gm2zLBz504tXrxYjRo10ty5c5UnTx7buRs3bmjChAkeP4Y3+yorpcTdsmVLzZo1y63bppXYpHjkkUc0dOhQffXVV3rmmWf05Zdf2o7fypuvT82aNTVz5kxduXJFCQkJWr16tT766CO9+OKLKlCggGJiYm57e0+uf5ktf/78GjRokAYNGqQjR45o8+bNmj17thYtWqRff/1VmzZtsus7X/L2ey6j4zQ6OlrR0dG6ePGiduzYoe+++07Tpk1Tz549tWjRokwp/E4PNTc+kjIluXXrVqcfrVu3bp0k59P1u3fvttWA3CrlF9et050pU/d///23Q/udO3e6HG/KssitU9+pHze1lL803PkLt1q1apLk9KPwP//8s44dO6aIiAivTxHfTvfu3WWxWHTo0CF169Yt3cr/2rVr6+zZsw5r42lJec7O+vHGjRtpfhzamX379qlixYoOiY2795MRKWPkwQcfdLj479ixwysbNlaoUEEFChTQnj17nCbnmZm8ped2s1wVKlRQUFCQduzY4fT97omuXbsqICBAM2fOlGEYmjVrlgoUKKD27dvbtcuM1ydv3ryqVauWXn75ZU2ZMkWSXNr7KWXMO9ui4vLly7ZtC1La+UqxYsXUoUMHzZo1S3Xq1FFiYqJ+++032/lcuXK5dX3ztoy8ppk5TgMDA9WgQQMNGzZMI0aMkGEYmVYDmh6SGx8pUaKEoqOjdejQIY0fP97u3C+//KKPP/5Y+fLlc1o7c+bMGdt0aYr//ve/WrBggaxWqx588EHb8ZSCtS+++MJuOvPEiRN67bXXXI43PDxckuPFaPfu3Ro7dqzT26QU37k6gyHdTCQkafjw4bZlG+nmVGxKAWl6y0LeVrp0aS1YsEBffPGFS99ZNGDAAEk3Z0oOHTrkcP7SpUvavHmz7ee6desqMjJSW7du1TfffGPXdtq0aW7V24SHh2vfvn126/KGYWjkyJH69ddfXb6fjEgZI6kT02PHjmngwIFeeYw8efKoc+fOOn/+vN566y27c7t377YtkfhCynh39odE7ty59fTTT9v64sKFCw5tTpw4YavFc0dYWJiio6O1Z88evf/++/r777/Vpk0bh6UNb70+mzZtcppYpsy23FqUnpYuXboob968mjZtmn7//Xe7c++9954OHz6s5s2bq1ixYi7H5Q3Hjx/X9u3bHY5fvnzZtn/Prc+vSJEiOn78uM92Ws/Ia+rtcbp27Vqn7dwZD5mBZSkfeu+999SyZUu99dZb+v7771W7dm3bPjcXL17U+PHjnRauRkVFafr06dqxY4fq1aunw4cPa8GCBTIMQ+PHj7eb1ahRo4YaNWqkdevWqXHjxmrcuLFOnTqlFStWqFGjRvrpp59cijUmJkYTJkzQq6++qg0bNqh8+fLau3evvv32W7Vt21bz5893uE2TJk20YMECPffcc2rXrp0KFiyooKAgu03FUuvYsaOWL1+uOXPmqF69emrdurVtn5s//vhDjRo18smXIjZu3Njltg0bNtSIESM0dOhQ1axZUw888IDKlCmjS5cu6eDBg9q0aZPCw8NtFySLxaKJEyeqffv26tWrl90+N2vWrFGzZs303XffufTY/fv31wsvvKBGjRrpoYceUu7cubV161b99ttvatmypcOnarypRo0aqlevnhYtWqTmzZurXr16Onr0qL777jtFRkZ67RfV66+/rnXr1umjjz5SQkKCoqKilJSUpAULFqhZs2ZatmyZVx7HXY0aNVKuXLk0efJknTp1ylZP0rdvXwUFBWnQoEH6+eefNX36dK1YsUINGzZUiRIldPz4cf3555/asmWLevfu7bTQND2PPvqoVqxYoeHDh0uy39smhbden/fff1+rV69WgwYNVKZMGRUqVEh//PGHvv32WwUGBrr0/gwPD9eoUaP04osvqkmTJnr44YcVGhqqrVu3auPGjSpRooTGjBnjXiek43Yb/jVr1ky1a9fW4cOH9cADDygyMlLVq1dXiRIldP78ea1evVp79+5V27ZtFRERYbtdkyZNNHv2bHXs2FFRUVHKly+f7r77brVq1cqrsaclI6+pt8fpf/7zH/3111+qX7++wsPDlT9/fu3Zs0erVq3SnXfeme5mp5mF5MaHSpcurbVr12r06NFavny5tmzZooIFC6p+/fp69tlnnX5iKOV248aN09ChQzVt2jRduXJFNWrUUGxsrNNfwp9//rneeOMNLV68WB999JHCw8P173//W88884zmzZvnUqzFihXTsmXLNGzYMG3ZskWrV69WZGSkxowZo0aNGjlNbh577DEdOnRIs2fPVnx8vK5evapSpUrdNrmRpClTpigqKkqff/65Pv/8c924cUPly5fX8OHD9fTTT/vNevft/Pvf/1a9evU0efJkbd68WcuXL9cdd9yhYsWKqXPnzurQoYNd+3r16mnZsmUaMWKEVq1apVWrVqlmzZpavHixVq1a5XJy06tXL+XNm1eTJk3SzJkzlT9/ft13332Kj4/XwoULMzW5SVkaefPNN7VixQpNmTJFxYoV0+OPP66BAweqbt26XnmcIkWK6Ntvv9Xw4cO1fPly7d69WxERERo9erTCw8N9ltxERERo2rRpGj9+vL744gvbX/NdunRRUFCQcufOrenTp2vevHmaMWOGVq5cqXPnzunOO+9UqVKl9MILL6Rbq5KWVq1aKTg4WKdOnVLJkiWdXju89fr07t1bwcHB2rFjh7Zt26arV6+qWLFiiomJ0TPPPOPyp6Z69eqlcuXKaeLEiVqyZInOnz+vYsWKqW/fvho4cKDXi8NvVyAbFBSk2rVrKzw8XK+++qrWr1+vjRs36vjx4woKClK5cuX03HPPOXz6bOTIkcqVK5fWrFmjrVu36vr163rkkUeyLLnJyGvq7XH60ksvacmSJdq5c6dtZr948eLq16+f+vfvf9tPlmYmy/82GkI2sH79erVt21aPPPKIJk2a5OtwAADwS9TcAAAAUyG5AQAApkJyAwAATIWaGwAAYCrM3AAAAFMhuQEAAKZCcgMAAEyF5MbEbv1aemQMfegZ+s8z9J/n6EPPZNf+I7kBAACmQnIDAABMheQGAACYCskNAAAwFZIbAABgKiQ3AADAVEhuAACAqZDcAAAAUyG5AQAApkJyAwAATIXkBgAAmArJDQAAMBWSGwAAYCokNwAAwFR8mtxs3LhRMTExqly5sqxWq2bMmGF33jAMxcXFqVKlSgoLC1Pr1q31yy+/2LW5fPmyBg0apHLlyql48eKKiYnRoUOHsvJpAAAAP+LT5Ob8+fO66667NHLkSAUG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9O677+rjjz/Wzz//LIvFktVd5iAjfSjd/Kvlrrvu0rvvvuv0fnNKH6buv1udOHFC5cuX16JFi3T//ffbjjMG/19G+k9i/KW4Xf+l+PXXX1WvXj1t3LhRVapUYfylkpE+lMw7Bpm58UMHDhxQUlKSmjZtajsWGBioqKgobd26VZK0a9cuXb161a5NyZIlVbFiRVubbdu26Y477lDdunVtberVq6eCBQvatalYsaJtQEpSdHS0Ll++rF27dtna3HfffXZ/GURHR+vIkSM6cOCA9zvAC1zpwxTz5s1TuXLlVK9ePf3nP/+xm9nJyX2YHsagdzD+XJPSL1arVRLjLyNS92EKM47B3F6/R3gsKSlJkhQSEmJ3PCQkREeOHJEkHT16VAEBASpSpIhDm6NHj9raFClSxC4jtlgs+te//mXXJvXjFClSRAEBAXZtihcv7vA4KefKlCnjydPNFK70oSR17txZpUqVUlhYmH799Ve98cYb+umnn/T1119Lytl9mB7GoOcYf665cuWK/vOf/6hly5YqUaKEJMafu5z1oWTeMUhy48dST9MZhpHu1F3qNs7au9Im9XFnsdzutv4ivT7s2bOn7f+rVKmiMmXKKDo6Wrt27VL16tWd3oez+zFzH7qLMeg6xl/6rl27pr59++r06dOaOXNmuu0Zf45u14dmHYMsS/mh0NBQSbJlvCmOHz9uy3SLFi2q69ev68SJE7dtc/z4cbtqdMMwdOLECbs2qR/nxIkTun79+m3bHD9+XJLjzIi/cKUPnbn33nsVEBCgffv2ScrZfZgexqD3Mf7sXbt2TU8++aT27Nmjb775RnfeeaftHOPPNbfrQ2fMMgZJbvxQ6dKlFRoaqjVr1tiOXbp0SZs3b7ate1avXl158uSxa3Po0CFb8Zck1alTR+fOndO2bdtsbbZt26bz58/btfntt9/sPj65Zs0a5cuXz5a116lTR5s3b9alS5fs2hQrVkylS5f2fgd4gSt96MyePXt0/fp1W3KUk/swPYxB72P8/b+rV6+qV69e2rNnjxYtWmTrkxSMv/Sl14fOmGUMktz4yLlz55SQkKCEhATduHFDf//9txISEnTw4EFZLBb169dP48aN08KFC/Xzzz+rf//+KliwoDp16iRJCgoKUvfu3fX6669r7dq12r17t5566ilVqVJFjRs3liRVrFhRzZo10wsvvKDt27dr27ZteuGFF9SiRQtFRkZKkpo2barKlSvr6aef1u7du7V27Vq9/vrrevzxx1W4cGFJUqdOnRQYGKj+/fvr559/1sKFCzVu3Dj179/fp1Oynvbhn3/+qVGjRmnnzp06cOCAVqxYoSeffFL33HOP7VMBZu7D2/WfJJ06dUoJCQn6+eefJd3sr4SEBFs9U04fg572H+Mv7f67du2aevToof/+97+aOnWqLBaLkpKSlJSUpIsXL0pi/Eme96Gpx2BycrLBv6z/t2jRIkOSw79HHnnESE5ONk6dOmXExsYaoaGhRr58+YyoqChj06ZNdvfxzz//GH369DGCg4ONwMBAo0WLFsZPP/1k1+bPP/80unTpYhQqVMgoVKiQ0aVLF2P//v12bX788UejRYsWRmBgoBEcHGz06dPHSEpKsmuzceNG47777jPy5ctnhIaGGq+88opx6tSpbN2HP/30kxEVFWUEBwcbefPmNcqWLWs89dRTxp9//pkj+jC9/ouPj3d6PjY2ljHohf5j/KXdf7t373Z6TpIRHx/P+PNSH5p5DLLPDQAAMBWWpQAAgKmQ3AAAAFMhuQEAAKZCcgMAAEyF5AYAAJgKyQ0AADAVkhsAHouLi3P4puGqVauqX79+vglIN7eIb9iwoUaMGJFu2/Xr18tqtWr9+vVuP86MGTNktVrtvtm4X79+qlq1qtv35akrV66ocuXKmjZtWpY/NuBPSG4Ak0j5JWu1WvX99987bdO0aVNZrVbVrl07i6PLel9//bX++OMPnyZYWS1v3rzq37+/Ro8ebduFFsiJSG4Ak8mfP7/mzJnjcHzv3r364YcflD9//iyJ47///a8mTJiQJY/lzIQJE/TQQw/pX//6l89i8IXu3bvr+PHjTscAkFOQ3AAm07x5c33zzTe6fPmy3fGvvvpKRYsW1b333pslceTLl0958uTJksdKbc+ePdq5c6c6duzok8f3tgsXLrjc1mq1qkmTJvryyy8zMSLAv5HcACbTsWNHnTt3TsuXL7c7PnfuXHXo0EG5cjl/28+bN0/R0dEqVqyYwsPD1bVrV/36668O7b799lvVr19foaGhqlmzpqZPn+70/lLX3Fy5ckVvvfWWGjdurNKlSyssLEzR0dFaunSpw22tVqteeOEFrVy5Uvfff79CQ0NVo0YNzZ0716U+WLx4sXLnzq0GDRo4nEtMTFSHDh1UrFgxVahQQa+99pquXr3q9H6WLl1q65PSpUurW7du+v33312KIbUZM2aoXbt2qlChgooWLaqaNWtq3LhxunHjhl271q1bq3bt2vrpp5/Utm1bFS9eXC+99JIkad++ferZs6cqVqyo0NBQValSRT169NDhw4ft7qNRo0basmWLjh07lqFYgewut68DAOBdxYsXV/369TVnzhy1a9dO0s0lon379qlLly768ccfHW4zbtw4DRs2TG3btlVMTIzOnz+vqVOnqkWLFlq3bp3KlCkjSVq3bp0effRRlStXTkOGDNGlS5c0YsQIhYaGphvX2bNn9cknn6h9+/Z67LHHdPHiRc2ZM0fdunXT3LlzFR0dbdd++/btWrJkiXr16qXu3btr+vTp6tu3r6pWraqKFSve9rG2bNmiihUrKjAw0O74sWPH1Lp1a128eFEDBgzQnXfeqVmzZmnNmjUO9zF37lz16dNHd999t4YMGaIzZ87oww8/VPPmzbV27Vpbn7jqo48+UmRkpJo1a6bAwECtWbNGw4YN05kzZ/T666/btT19+rQ6dOigtm3bqmPHjgoKCtLVq1fVoUMHXbp0Sb1791ZoaKiSkpK0evVqHT58WMWLF7fdvkaNGrZ+aNu2rVtxAmZAcgOYUOfOnTVw4EAlJyfLarXqq6++Uvny5W2/9G518OBBvfnmm4qNjdXgwYNtx2NiYlSnTh2NHj1a77//viTp9ddfl9Vq1YoVKxQcHCxJateunaKiotKNyWq1as+ePcqXL5/t2FNPPaX7779fEydOdEhufv31V23cuNGWyDz88MO6++679cUXX6T7CajExETdc889DsfHjRuno0ePaunSpbaYe/bs6TDDc/XqVQ0ZMkQRERFavny5ChYsKOnmrEqTJk309ttv68MPP0z3Od9q6dKlKlCggO3n3r1769///remTJmi2NhYu345evSoRo4cqaefftp27Mcff9T+/fv12Wef2ZJWSRo0aJDDY6UkXhmdZQKyO5alABNq166dLBaLvvnmG127dk1ff/21Onfu7LTtokWLdO3aNXXs2FEnTpyw/cuTJ49q1apl++RVUlKSdu/erZiYGFtiI0kVK1Z0SEycCQgIsP0Cv3Llik6dOqWzZ8+qfv362rVrl0P7+++/326GpmjRooqMjNT+/fvTfawTJ044fDRdurmkVq1aNbtkrECBAurZs6ddu127dikpKUlPPvmkLbGRpGrVqqlx48ZasWKFDMNIN45bpSQ2169fV3Jysk6cOKEGDRro/PnzSkxMtGubO3duh5gKFSokSVq1apXOnz9/28dKeX1OnDjhVoyAWTBzA5hQUFCQmjdvrtmzZ6t48eI6duxYmsnN3r17JUl16tRxej7ll/Jff/0lSYqMjHRoExERoRUrVqQb1/Tp0/XBBx/ot99+s0sOLBaLQ9tSpUo5HLNarTp16lS6jyPJafJx8OBBp8s0ERERdj+nPNcKFSo4tK1YsaJWr16tM2fOKCgoyKVYJGnz5s0aPny4duzYoStXrtidO336tN3PYWFhDp9qK1OmjJ5++mlNnjxZs2fPVt26ddWiRQt17dpVRYoUsWub8tyd9SuQE5DcACbVuXNn9ejRQ5JUs2ZNlS9f3mm7lILWuXPnKndux0tCSgHy7X5hujKLMXfuXD377LNq1aqVnnvuOYWEhCh37tyaMWOG048tBwQEOL0fVx6rSJEiSk5Odnouo/FnpG2K/fv3q3379ipXrpzi4uJUsmRJ5cuXT7t379bQoUMdiopT1wqlGDlypHr06KFly5Zp9erVeu211zR69GgtWbJElStXtrVLee6pkx4gpyC5AUyqRYsWKly4sDZu3KiRI0em2a5s2bKSpJIlS6pSpUpptitdurQk53UcKbM/tzN//nyVKVNGX375pV2CMWPGjHRv664KFSrY7RicolSpUi7FHx4eLunmc23atKnducTERFmtVhUuXNjleJYuXapLly5p1qxZtvuW5DTG9FSuXFmVK1fWiy++qJ9++kmNGzfWpEmT7PYU+vPPPyU5n3kCcgJqbgCTypcvn8aMGaPY2Fh16tQpzXYPPfSQcufOrbi4OIcZBEk6fvy4JCk0NFT33HOPZs2aZbc09Ntvv2nVqlXpxpMyE3PrzMf+/fu1ePFil5+Tq+rWravffvvNYX+Y5s2ba/fu3dq0aZPt2IULF/Tpp5/atatevbpCQ0P18ccf2+30++OPP2rNmjVq3ry5W0s+zp775cuX3SpKPnPmjK5du2Z3LOUTYalnqX744QdJN/sByImYuQFM7HZJTYoyZcrojTfe0JAhQ9SsWTO1bdtWwcHBOnjwoFasWKFatWpp7NixkqQ33nhDHTt2VPPmzfX444/r4sWL+uijj1S5cmX99NNPt32cVq1aadGiRXrkkUfUqlUrHT58WNOmTVP58uXTva27Wrdurbi4OK1fv14tWrSwHX/++ec1e/ZsxcTEqG/fvraPgt/6KSZJypMnj9566y316dPHVteS8lHwwoUL69VXX3UrnujoaOXNm1cxMTHq2bOnrly5olmzZqW555Az33//vQYNGqSHHnpIkZGRMgxD8+fP19mzZx02K1y7dq3q1KmjkJAQt+IEzILkBoAGDBigiIgITZw4Ue+9956uXbumYsWKqV69eurevbutXZMmTTRjxgyNGDFCI0aMUKlSpfTaa6/p0KFD6SYojz76qI4fP65p06Zp7dq1KleunN5++23t27fP68nN3XffrerVq2vevHl2yU3RokW1ZMkSxcbG6v3331ehQoXUtWtXNW3aVB06dLC7j06dOikwMFBjxozRiBEjlDdvXjVo0EDDhg1ze4+biIgIzZgxQ8OHD9fQoUNVpEgRxcTEqEGDBmrfvr3Lz6lZs2ZauXKlpk+frnz58qly5cqaMWOGWrdubWt36tQprVu3TqNHj3YrRsBMLMnJye5XxwGAn5s/f74GDBighISEHDWDMXHiRMXHx2vnzp1pFiYDZkfNDQBTat++vSIjIzVp0iRfh5Jlrly5og8++EADBw4ksUGOxswNAAAwFWZuAACAqZDcAAAAUyG5AQAApkJyAwAATIXkBgAAmArJDQAAMBWSGwAAYCokNwAAwFT+D9mOh01n9LNNAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "replication_number = np.arange(1, 101)\n", "\n", "replication_number = replication_number.astype(str)\n", "\n", "intervals2 = pd.DataFrame(np.array([left_ends, right_ends]), columns=[replication_number])\n", "\n", "intervals2\n", "\n", "plt.figure(figsize=(8,8))\n", "for i in np.arange(100):\n", " ends = intervals2.iloc[:,i]\n", " plt.plot(ends, np.array([i+1, i+1]), color='gold')\n", "plt.plot(np.array([pop_median, pop_median]), np.array([0, 100]), color='red', lw=2)\n", "plt.xlabel('Median (dollars)')\n", "plt.ylabel('Replication')\n", "plt.title('Population Median and Intervals of Estimates');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To summarize what the simulation shows, suppose you are estimating the population median by the following process: \n", "\n", "- Draw a large random sample from the population.\n", "- Bootstrap your random sample and get an estimate from the new random sample. \n", "- Repeat the above step thousands of times, and get thousands of estimates.\n", "- Pick off the \"middle 95%\" interval of all the estimates.\n", "\n", "That gives you one interval of estimates. Now if you repeat **the entire process** 100 times, ending up with 100 intervals, then about 95 of those 100 intervals will contain the population parameter.\n", "\n", "In other words, this process of estimation captures the parameter about 95% of the time. \n", "\n", "You can replace 95% by a different value, as long as it's not 100. Suppose you replace 95% by 80% and keep the sample size fixed at 500. Then your intervals of estimates will be shorter than those we simulated here, because the \"middle 80%\" is a smaller range than the \"middle 95%\". Only about 80% of your intervals will contain the parameter." ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.12" } }, "nbformat": 4, "nbformat_minor": 2 }