/***************************************************************************** FILE: RS2005l.pgm This version: December 13, 2005. RS, Small Businesses, and Banking Deregulation. For JF-revision. ASY-method. From rs2005k.pgm organizing size categories Notes: DC, DE, SD always out *************************************************************************** GLOBALS **************************************************************************/ new ; cls; yuliya=0 ; charlotte=0 ; bent=0 ; if yuliya==1 ; load path=i:\work\work\data\DOS_2005; output file=i:\work\work\data\dos\output\rs2005o.out reset; elseif charlotte==1 ; load path=c:\bent\pgm\fmt ; output file=c:\bent\pgm\rs2005o.out reset; elseif bent==1 ; load path=c:\zbent\BankRs\dos_2005; output file=c:\zbent\BankRs\dos_2005\output\rs2005o.out reset; else ; save path=d:\BankRs; load path=d:\BankRs\dos_2005; output file=d:\BankRs\rsmulta.out reset; endif ; "output file : " ;; "rs2005o.out" ; /****************************************************************************/ /* Set interaction (dummy) variable */ _dereg=1 ; _RemoveStateAve=0 ; @remove state spec ave for all deregs if --1 @ if (_dereg==8) or (_dereg==9) ; _sizedistribution = 1 ; /* choose measure of bank size */ else ; /* 1 is assets below 5 m, 2 is 5-10, 3 is 10-15 */ /* 4 is 15-25, 5 is 25-50, 6 is 50-100, 7 is 100-200 */ _sizedistribution = 0 ;@keep at 0@ /* 8 is 200-300, 9 is 300-500 */ endif ; /* 10 is 500-1 bn 11 is 1bn+ */ _DropSmallBanks = 6; @no drop for value 1, groups w. number smaller are dropped@ _DropLargeBanks = 9; @no drop for value 11, groupsw larger number are dropped @ if _DropSmallBanks > _DropLargeBanks; "no banks left in group, program stops" ; stop ; endif ; _smpl_split_smb=1 ; /* split by smb or proprietors */ if (_dereg== 0) ; _banksample = 0 ; else ; _banksample = 1 ; endif ; _SBsample = 1 - _banksample ; _deregdummy=1 ; if _dereg==0 ; if _deregdummy==1 ; "deregulation is intra " ; elseif _deregdummy==2 ; "deregulation is inter*intra " ; elseif _deregdummy==3 ; "deregulation is inter " ; else ; "invalid value for deregulation dummy " ; endif ; endif ; _show_small_large=1 ; _smpl_split3=1 ; @=1: split in 3 groups, otherwise split in 2@ _permkilldummy = 0; /* kills permant differences in state levels for intra, inter, and inter*intra. Perm differences are always killed for other deregulation variables */ @_fixfax=0 ;@ @if one: fixfaxes integration interaction terms except when dereg=0 this variable has no effect if _permkilldummy=1 @ /* Choice variables for panel regression: */ _sample69 = 1 ; _timehetero = 0 ; _alaska_in = 0 ; _alaskaout =1-_alaska_in ; if _alaskaout==0 ; "Alaska, Wyoming in (DE,SD,DC out)" ; else ; "Alaska Wyoming out (DE,SD,DC out)" ; endif ; _RSpropinc = 0 ; /* Choose risk sharing measure: gsp or components of income */ if (_RSpropinc==1); "SMOOTHING OF PROPRIETPRS INCOME"; endif ; _RSdir = 0 ; if (_RSdir==1); "SMOOTHING OF DIR"; endif ; _RSwage = 0 ; if (_RSwage==1); "SMOOTHING OF WAGES"; endif ; _RSrent=0 ; if (_RSrent==1); "SMOOTHING OF rental income"; endif ; _RSintinc=0 ; if (_RSintinc==1); "SMOOTHING OF interest income "; endif ; _RSdiv=0 ; if (_RSdiv==1); "SMOOTHING OF dividends income "; endif ; _timfix2 = 1 ; /* time fixed effects */ _crsfix2 = 1 ; /* cross section fixed effects */ if (_timfix2==1); "time fixed eff"; endif ; if (_crsfix2==1); "cross section fixed eff"; endif ; @NOTE, when Alaska is left out, these need to be zero@ _SB20 = 0; /* this pgm version doesn't allow for SB20 */ _SB50 = 0 ; /* Small businesses defined by less than 50 employees */ _SB100 = 1 ; _groupon = 1 ; /* Sample split and regressions in subgroups */ /* this program version only runs with SB employment in 78 */ _SBemploy78 = 0 ; /* SB employment in 1978 */ _estab1978 = 0 ; /* Number of SB establishments in 1978 */ _avgfirms8801 = 0 ; /* Avg. no of SB firms 1988-2001 */ _firms88 = 0 ; /* Number of SB firms in 1978 */ if _show_small_large==1 ; if _smpl_split_smb==1 ; if (_SBemploy78==1); "Sample split: SB employement in 1978"; endif ; if (_estab1978==1); "Sample split: SB establishments in 1978"; endif ; if (_avgfirms8801==1); "Sample split: Avg. no. of SB firms 1988-2001"; endif ; if (_firms88==1); "Sample split: No. of SB firms in 1988"; endif ; else ; "Sample split by fraction of proprietors in 1978 " ; endif ; endif ; _FW = 0 ; if _fw==1 ; " Frisch-waugh orthogonalization of interaction term applied " ; endif ; test1=0 ; help=0 ; @declare global variable used for debugging@ trunchelp=0 ; xhelp=0 ; yhelp=0 ; varvar=0 ; format /m1 /rd 8,2 ; /****************************************************************************/ if _sample69==1 ; sample1=1969; else ; sample1=1977; endif ; if _SBsample==1 ; sample2=2001 ; smpl1=sample1-1962 ; smpl2=sample2-1962 ; "sample: " sample1 " -- " sample2 ; "No time obs: " ;; smpl2-smpl1+1; elseif _banksample == 1 ; sample2=1994 ; if (_dereg == 4) or (_dereg==5) ; sample1=1975 ; /* set one year prior to sample start for strahan variable, that year is removed below */ elseif _dereg >= 6 ; sample1=1971 ; /* set one year prior to sample start, that year is removed below */ endif ; smpl1=sample1-1962 ; smpl2=sample2-1962 ; "sample: " sample1 " -- " sample2 ; "No time obs: " ;; smpl2-smpl1+1; endif ; @"-------------------------------------------------- " ; @ output off ; load stat7894 ; stat7894=stat7894[1]|"Alaska"|stat7894[2:6]|stat7894[8:9]|"Hawaii"|stat7894[10:48] ; load pinc_pc6302[51,40]=pinc_pc6302.dat ; @51 states@ load ngsp6301[51,39]=ngsp6301.dat ; @51 states@ load npropr6902[51,34]=npropr6902.dat ; @number of proprietors@ load propr_inc6902[51,34]=propr_inc6902.dat ; @ proprietors' income@ load dir6901[51,33]=dir6901.dat ; load wage6901[51,33]=wage6901.dat ; load div2900[51,72]=div2900.dat ; load intinc2900[51,72]=intinc2900.dat ; load rent2900[51,72]=rent2900.dat ; load gove6901,selfe6901,farme6901,totale6901 ; gove6301=miss(ones(51,6),ones(51,6))~gove6901[1:51,.] ; selfe6301=miss(ones(51,6),ones(51,6))~selfe6901[1:51,.] ; farme6301=miss(ones(51,6),ones(51,6))~farme6901[1:51,.] ; totale6301=miss(ones(51,6),ones(51,6))~totale6901[1:51,.] ; rent6301=rent2900[.,34:cols(rent2900)-1]~miss(ones(51,1),ones(51,1)) ; intinc6301=intinc2900[.,34:cols(intinc2900)-1]~miss(ones(51,1),ones(51,1)) ; div6301=div2900[.,34:cols(div2900)-1]~miss(ones(51,1),ones(51,1)) ; govsh6301=gove6301./totale6301 ; farmsh6301=farme6301./totale6301 ; selfsh6301=selfe6301./totale6301 ; load intra6301[49,39]=intra6301.dat ; @49 states - No delaware and DC@ @add dummy lines for DE, DC for easy change of included states @ intra6301=intra6301[1:7,.]|9999*ones(2,cols(intra6301))|intra6301[8:49,.] ; load inter7701[49,25]=inter7701.dat ; @49 states - No delaware and DC@ inter7701=inter7701[1:7,.]|9999*ones(2,cols(inter7701))|inter7701[8:49,.] ; inter6301 = zeros(51,14)~inter7701 ; /* set bank structure variables to constant value from 1969- date of first observation */ load otherass7694[49,19]=otherass7694.dat ; /* Strahan's data, no DE, SD*/ load interass7694[49,19]=interass7694.dat ; otherass7694=otherass7694[1:7,.]|zeros(1,19)|otherass7694[8:40,.]|zeros(1,19)|otherass7694[41:49,.] ; /* 51 states now*/ interass7694=interass7694[1:7,.]|zeros(1,19)|interass7694[8:40,.]|zeros(1,19)|interass7694[41:49,.] ; /* 51 states now*/ otherass6301=miss(ones(51,6),ones(51,6))~otherass7694[.,1]~otherass7694[.,1]~otherass7694[.,1] ~otherass7694[.,1]~otherass7694[.,1]~otherass7694[.,1]~otherass7694[.,1]~otherass7694~miss(ones(51,7),ones(51,7)) ; interass6301=miss(ones(51,6),ones(51,6))~interass7694[.,1]~interass7694[.,1]~interass7694[.,1] ~interass7694[.,1]~interass7694[.,1]~interass7694[.,1]~interass7694[.,1]~interass7694~miss(ones(51,7),ones(51,7)) ; load bhcass7994[51,16]=bhcass7994.dat ; bhcass6301=miss(ones(51,6),ones(51,6))~bhcass7994[.,1]~bhcass7994[.,1]~bhcass7994[.,1] ~bhcass7994[.,1]~bhcass7994[.,1]~bhcass7994[.,1]~bhcass7994[.,1]~bhcass7994[.,1]~bhcass7994[.,1] ~bhcass7994[.,1]~bhcass7994~miss(ones(51,7),ones(51,7)) ; load medass7201[51,30]=medass7201.asc ; /* in thousand dollars */ medass6301=miss(ones(51,9),ones(51,9))~medass7201 ; load meanass7201[51,30]=meanass7201.asc ; /* in thousand dollars */ meanass6301=miss(ones(51,9),ones(51,9))~meanass7201 ; load per25_7201[51,30]=per25_7201.asc ; /* in thousand dollars */ per25_6301=miss(ones(51,9),ones(51,9))~per25_7201 ; load per33_7201[51,30]=per33_7201.asc ; /* in thousand dollars */ per33_6301=miss(ones(51,9),ones(51,9))~per33_7201 ; load meanass7201[51,30]=meanass7201.asc ; /* in thousand dollars */ meanass6301=miss(ones(51,9),ones(51,9))~meanass7201 ; load bankemp6603 ; @ bank employment @ load MBS6901_cuml[33,1]=MBS6901_cuml.txt ; @ in billions @ if _sizedistribution== 0 ; assclass7201 = medass7201 ; totalass7201 = medass7201 ; endif ; totalass6301 = miss(ones(51,9),ones(51,9))~totalass7201 ; assclass6301 = miss(ones(51,9),ones(51,9))~assclass7201 ; load acqassets6094[51,35]=acqassets6094.dat ; @ CB09: assets acquired, 51 states @ load acqassets_cuml6094[51,35]=acqassets_cuml6094.dat ; @CB09: cumulative assets acquired@ load assets6602 ; @CB09: total assets@ load cpi6301[49,39]=cpi6301.dat ; @49 states, aggregate CPI, all columns are the same@ cpi6301=cpi6301[1:7,.]|9999*ones(2,cols(cpi6301))|cpi6301[8:49,.] ; load population6901[51,33]=population6901.dat ; @51 states@ load pop6396; load nbanks6602 ; @ CB04: number of banks @ load netinc6602 ; @ CB04: net (total) income of banks @ load net_intinc6602 ; @ CB04: net interest income of banks @ load bloss6602 ; @ CB09: provision for loan and lease losses - data starts from 1967, 1966 is . @ load alw_loss6602 ; @ CB09: alowance for losses loans and leases @ load net_loans6602 ; @ CB09: net loans and leases @ @load prov6796 ; @ pop6396=pop6396*1000; @to make consistent with units in the new data set @ pop6369=pop6396[.,1:7]; @ cut out 70-96 years from the old data set@ popul6901=population6901; pop6369=pop6369.*popul6901[.,1]./pop6369[.,7]; @to account for a possible breaks due to differet data sourses@ pop6368=pop6369[.,1:6]; popul6301=pop6368~popul6901; @save popul6301;@ load sh_emp7797_1_99 ; load sh_emp7797_1_49 ; sh100= sh_emp7797_1_99[.,2] ; @ 51 x 1 @ sh50= sh_emp7797_1_49[.,2] ; load empl8801_0_4 ; load empl8801_5_9 ; load empl8801_10_19 ; load empl8801_20_99 ; load empl8801_100_499 ; load empl8801_500; load empl8801_tot ; firmsh100=(empl8801_0_4+empl8801_5_9+empl8801_10_19+empl8801_20_99) ; firmsh100=firmsh100[.,1]./empl8801_tot[.,1] ; if (_firms88==1); sh100=firmsh100 ; endif ; npropr78=npropr6902[.,2]./popul6901[.,2] ; ; @number of proprietors in 78@ @ -----------units of measurement ---------------- @ ngsp6301=ngsp6301.*10^6; @pinc_pc6302 -- personal income per capita@ netinc6602=netinc6602*10^6; nbanks6602=nbanks6602.*10^6; net_intinc6602=net_intinc6602.*10^6; bloss6602=bloss6602.*10^6; alw_loss6602=alw_loss6602.*10^6; net_loans6602=net_loans6602.*10^6; acqassets6094=acqassets6094.*10^6; acqassets_cuml6094=acqassets_cuml6094.*10^6; assets6602=assets6602.*10^6; propr_inc6902=propr_inc6902.*10^3; @ in thousands@ wage6901=wage6901.*10^3 ; dir6901=dir6901.*10^3 ; rent6301=rent6301.*10^3 ; intinc6301=intinc6301.*10^3 ; div6301=div6301.*10^3 ; MBS6901_cuml = MBS6901_cuml.*10^3 ; npropr6902=npropr6902; @ number of jobs@ netinc6301=miss(ones(51,3),ones(51,3))~netinc6602[1:51,1:cols(netinc6602)-1] ; nbanks6301=miss(ones(51,3),ones(51,3))~nbanks6602[1:51,1:cols(nbanks6602)-1] ; pinc_pc6301=pinc_pc6302[.,1:cols(pinc_pc6302)-1] ; net_intinc6301=miss(ones(51,3),ones(51,3))~net_intinc6602[1:51,1:cols(net_intinc6602)-1] ; bloss6301=miss(ones(51,3),ones(51,3))~bloss6602[1:51,1:cols(bloss6602)-1] ; alw_loss6301=miss(ones(51,3),ones(51,3))~alw_loss6602[1:51,1:cols(alw_loss6602)-1] ; net_loans6301=miss(ones(51,3),ones(51,3))~net_loans6602[1:51,1:cols(net_loans6602)-1] ; acqassets6301=acqassets6094[.,4:cols(acqassets6094)]~miss(ones(51,7),ones(51,7)) ; acqassets_cuml6301=acqassets_cuml6094[.,4:cols(acqassets_cuml6094)]~miss(ones(51,7),ones(51,7)) ; assets6301=miss(ones(51,3),ones(51,3))~assets6602[.,1:cols(assets6602)-1] ; propr_inc6301=miss(ones(51,6),ones(51,6))~propr_inc6902[.,1:cols(propr_inc6902)-1] ; npropr6301=miss(ones(51,6),ones(51,6))~npropr6902[.,1:cols(npropr6902)-1] ; dir6301=miss(ones(51,6),ones(51,6))~dir6901 ; wage6301=miss(ones(51,6),ones(51,6))~wage6901 ; bankemp6301=miss(ones(51,3),ones(51,3))~bankemp6603[.,1:cols(bankemp6603)-2] ; MBS6301_cuml = miss(ones(6,1),ones(6,1))'~MBS6901_cuml' ; @ ----------No DC, South Dakota, and Delaware-------------- @ if _alaskaout==0 ; stsmpl=1|2|seqa(3,1,5)|seqa(10,1,32)|seqa(43,1,9) ; else ; stsmpl=1|seqa(3,1,5)|seqa(10,1,32)|seqa(43,1,8) ; endif ; popul6301=popul6301[stsmpl,.] ; pinc_pc6301=pinc_pc6301[stsmpl,.] ; ngsp6301=ngsp6301[stsmpl,.] ; netinc6301=netinc6301[stsmpl,.] ; nbanks6301=nbanks6301[stsmpl,.] ; net_intinc6301=net_intinc6301[stsmpl,.] ; bloss6301=bloss6301[stsmpl,.] ; alw_loss6301=alw_loss6301[stsmpl,.] ; net_loans6301=net_loans6301[stsmpl,.] ; acqassets6301=acqassets6301[stsmpl,.] ; acqassets_cuml6301=acqassets_cuml6301[stsmpl,.] ; assets6301=assets6301[stsmpl,.] ; propr_inc6301 = propr_inc6301[stsmpl,.] ; dir6301=dir6301[stsmpl,.] ; wage6301=wage6301[stsmpl,.] ; npropr6301 = npropr6301[stsmpl,.] ; govsh6301=govsh6301[stsmpl,.] ; selfsh6301=selfsh6301[stsmpl,.] ; farmsh6301=farmsh6301[stsmpl,.] ; rent6301=rent6301[stsmpl,.] ; intinc6301=intinc6301[stsmpl,.] ; div6301=div6301[stsmpl,.] ; bhcass6301=bhcass6301[stsmpl,.] ; sh100= sh100[stsmpl,.] ; firmsh100= firmsh100[stsmpl,.] ; sh50= sh50[stsmpl,.] ; npropr78=npropr78[stsmpl,.] ; bankemp6301=bankemp6301[stsmpl,.] ; otherass6301=otherass6301[stsmpl,.] ; interass6301=interass6301[stsmpl,.] ; medass6301=medass6301[stsmpl,.] ; meanass6301=meanass6301[stsmpl,.] ; assclass6301=assclass6301[stsmpl,.] ; totalass6301=totalass6301[stsmpl,.] ; per25_6301=per25_6301[stsmpl,.] ; per33_6301=per33_6301[stsmpl,.] ; mbs_cuml = MBS6301_cuml[.,smpl1:smpl2] ; ptiles={.333,.666} ; emp100=sh100 .ge median(sh100) ; sh100_quant=quantile(sh100,ptiles) ; emp100_1=sh100 .< sh100_quant[1] ; emp100_3=sh100 .ge sh100_quant[2] ; emp100_2=1-emp100_1-emp100_3 ; emp50=sh50 .ge median(sh50) ; sh50_quant=quantile(sh50,ptiles) ; emp50_1=sh50 .< sh50_quant[1] ; emp50_3=sh50 .ge sh50_quant[2] ; emp50_2=1-emp50_1-emp50_3 ; dnpropr=npropr78 .ge median(npropr78) ; prop_quant=quantile(npropr78,ptiles) ; dnpropr_1=npropr78 .< prop_quant[1] ; dnpropr_3=npropr78 .ge prop_quant[2] ; dnpropr_2=1-dnpropr_1-dnpropr_3 ; @ ----------Correction of time series lenght. Input format is1963-2001-------------- @ ngsp=ngsp6301[.,smpl1:smpl2] ; pinc_pc=pinc_pc6301[.,smpl1:smpl2] ; netinc=netinc6301[.,smpl1:smpl2] ; nbanks=nbanks6301[.,smpl1:smpl2] ; popul=popul6301[.,smpl1:smpl2] ; cpi=cpi6301[stsmpl,smpl1:smpl2] ; intra=intra6301[stsmpl,smpl1:smpl2] ; inter=inter6301[stsmpl,smpl1:smpl2] ; net_intinc=net_intinc6301[.,smpl1:smpl2] ; bloss=bloss6301[.,smpl1:smpl2] ; alw_loss=alw_loss6301[.,smpl1:smpl2] ; net_loans=net_loans6301[.,smpl1:smpl2] ; acqassets=acqassets6301[.,smpl1:smpl2] ; acqassets_cuml=acqassets_cuml6301[.,smpl1:smpl2] ; assets=assets6301[.,smpl1:smpl2] ; propr_inc=propr_inc6301[.,smpl1:smpl2] ; npropr=npropr6301[.,smpl1:smpl2] ; govsh=govsh6301[.,smpl1:smpl2] ; selfsh=selfsh6301[.,smpl1:smpl2] ; farmsh=farmsh6301[.,smpl1:smpl2] ; dir=dir6301[.,smpl1:smpl2] ; wage=wage6301[.,smpl1:smpl2] ; rent=rent6301[.,smpl1:smpl2] ; intinc=intinc6301[.,smpl1:smpl2] ; div=div6301[.,smpl1:smpl2] ; bhcass=bhcass6301[.,smpl1:smpl2] ; bankemp=bankemp6301[.,smpl1:smpl2] ; otherass=otherass6301[.,smpl1:smpl2] ; interass=interass6301[.,smpl1:smpl2] ; medass=medass6301[.,smpl1:smpl2] ; meanass=meanass6301[.,smpl1:smpl2] ; assclass=assclass6301[.,smpl1:smpl2] ; totalass=totalass6301[.,smpl1:smpl2] ; per25=per25_6301[.,smpl1:smpl2] ; per33=per33_6301[.,smpl1:smpl2] ; @-------- per capita -------------@ ngsp_p = ngsp./popul ; propr_p =propr_inc./npropr ; @pinc_pc is already per capita@ dir_p=dir./popul ; wage_p=wage./popul ; rent_p=rent./popul ; intinc_p=intinc./popul ; div_p=div./popul ; @-------- real terms -----------@ gsp_r=ngsp./cpi ; ngsp_r=ngsp_p./cpi ; pinc_r=pinc_pc./cpi; propr_r=propr_p./cpi ; dir_r=dir_p./cpi; wage_r=wage_p./cpi; rent_r=rent_p./cpi ; intinc_r=intinc_p./cpi ; div_r=div_p./cpi ; acqassets=acqassets ; acqassets_cuml=acqassets_cuml ; assets=assets; medass=medass./cpi ; meanass=meanass./cpi ; if _dereg==8 ; assclass=assclass ; totalass=totalass ; else ; assclass=assclass./cpi ; totalass=totalass./cpi ; endif ; per25=per25./cpi ; per33=per33./cpi ; N=rows(popul); nobs=cols(popul); nobst=nobs-1 ; p=1; @------------------logs -----------@ ngsp_l = ln(ngsp_r) ; pinc_l = ln(pinc_r) ; @princ_l = ln(propr_r) ;@ @--------------if using log difference -----------------@ ngsp_d=delta(ngsp_l,p,nobs) ; pinc_d=delta(pinc_l,p,nobs) ; ncols=cols(ngsp_r) ; ngsp_d=(ngsp_r[.,2:ncols]-ngsp_r[.,1:ncols-1])./ngsp_r[.,1:ncols-1] ; pinc_d=(pinc_r[.,2:ncols]-pinc_r[.,1:ncols-1])./pinc_r[.,1:ncols-1] ; princ_d=(propr_r[.,2:ncols]-propr_r[.,1:ncols-1])./propr_r[.,1:ncols-1] ; dir_d=(dir_r[.,2:ncols]-dir_r[.,1:ncols-1])./dir_r[.,1:ncols-1] ; wage_d=(wage_r[.,2:ncols]-wage_r[.,1:ncols-1])./wage_r[.,1:ncols-1] ; rent_d=(rent_r[.,2:ncols]-rent_r[.,1:ncols-1])./rent_r[.,1:ncols-1] ; intinc_d=(intinc_r[.,2:ncols]-intinc_r[.,1:ncols-1])./intinc_r[.,1:ncols-1] ; div_d=(div_r[.,2:ncols]-div_r[.,1:ncols-1])./div_r[.,1:ncols-1] ; if _RSpropinc==1 ; pinc_d = princ_d; elseif _RSwage==1; pinc_d = wage_d ; elseif _RSdir==1; pinc_d = dir_d; endif ; /**************************************************************************************** FIXFAX AND RISK SHARING MEASURE ****************************************************************************************/ N=rows(ngsp_d); T=cols(ngsp_d); one_w=ones(N,T); net_intinc=net_intinc./popul/10^3 ; bloss_y=(bloss./ngsp).*100 ; bloss_y=bloss_y[.,2:nobs] ; bloss_a=bloss./assets ; bloss_a=bloss_a[.,2:nobs] ; bloss_y1=(bloss./ngsp).*100 ; bloss_y1=bloss_y1[.,1:nobs-1] ; bloss_a1=bloss./assets ; bloss_a1=bloss_a1[.,1:nobs-1] ; alw_loss=alw_loss./10^10 ; netloans_y=net_loans./ngsp ; netloans_y=netloans_y[.,2:nobs] ; netloans_r = net_loans./cpi ; @netloans_r=netloans_r[.,2:nobs] ;@ acq_y = (acqassets./10^9)./ngsp ; acq_y = (acqassets./ngsp*100) ; acq_a = (acqassets./assets*100) ; acq_cy = (acqassets_cuml./ngsp*100) ; acq_ca = (acqassets_cuml./assets)*100 ; /* cass_y=ln(1+acq_cy) ; cass_a=ln(1+acq_ca) ; @ _timfix = 1 ; _crsfix = 1 ; {cass_y,cass_a}=fixfax(cass_y,cass_a,ones(rows(cass_y),cols(cass_y))) ; @ cass_y=reshape( cass_y,46*26,1 ) ; cass_a=reshape( cass_a,46*26,1) ; corrx(cass_a~cass_y) ; stop ; */ trend=seqa(1,1,smpl2-smpl1); trend=ones(rows(ngsp_d),1).*.trend' ; mbs_trend = mbs_cuml'./sumc(gsp_r) ; mbs_trend = mbs_trend.*10^6 ; mbs_trend=ones(rows(ngsp_d),1).*.mbs_trend' ; mbs_trend = mbs_trend[.,2:cols(mbs_trend)] ; trend=trend-meanc(trend') ; mbs_trend=mbs_trend-meanc(mbs_trend') ; trend2=trend.*trend ; trend2=trend2-meanc(trend2') ; @efficiency=gsp_r./bankemp/1000 ; @ efficiency=netloans_r./bankemp @/1000@ ; efficiency=log(efficiency[.,2:nobs] ) ; efficiency=efficiency-meanc(meanc(efficiency')) ; dsmb=ones(rows(intra),1); if _smpl_split_smb==1 ; if _SB50 == 1 ; "SB is 50 employees" ; dsmb = emp50.*.ones(1,cols(intra)-1) ; dsmb1 = emp50_1.*.ones(1,cols(intra)-1) ; dsmb2 = emp50_2.*.ones(1,cols(intra)-1) ; dsmb3 = emp50_3.*.ones(1,cols(intra)-1) ; elseif _SB100==1 ; "SB is 100 employees" ; dsmb = emp100.*.ones(1,cols(intra)-1) ; dsmb1 = emp100_1.*.ones(1,cols(intra)-1) ; dsmb2 = emp100_2.*.ones(1,cols(intra)-1) ; dsmb3 = emp100_3.*.ones(1,cols(intra)-1) ; endif ; endif ; dnpropr=dnpropr.*.ones(1,cols(intra)-1) ; dnpropr1=dnpropr_1.*.ones(1,cols(intra)-1) ; dnpropr2=dnpropr_2.*.ones(1,cols(intra)-1) ; dnpropr3=dnpropr_3.*.ones(1,cols(intra)-1) ; const = ones(rows(intra),cols(intra)-1) ; dereg1 = intra[.,2:nobs] ; dereg2 = inter[.,2:nobs].*intra[.,2:nobs] ; dereg3 = inter[.,2:nobs] ; dereg4 = otherass ; " dereg is Strahan's other-assets " ; dereg5 = interass*10 ; " dereg is Strahan's inter-assets " ; dereg6 = ln(medass)*10 ; " dereg is median bank size " ; dereg7 = ln(meanass)*10 ; " dereg is avg. bank size " ; dereg4 = dereg4[.,2:nobs] ; dereg4=dereg4-meanc(meanc(dereg4')) ; dereg5 = dereg5[.,2:nobs] ; dereg5=dereg5-meanc(meanc(dereg5')) ; dereg6 = dereg6[.,2:nobs] ; dereg6=dereg6-meanc(meanc(dereg6')) ; dereg7 = dereg7[.,2:nobs] ; dereg7=dereg7-meanc(meanc(dereg7')) ; _timfix = 0 ; @temporary change for fixfaxing interactions@ _crsfix = 1 ; /* create state-specific variables by fixfaxing */ if _RemoveStateAve==1 ; " Permanent differences in state level of deregulation variable removed " ; {dereg1,dereg2}=fixfax(dereg1,dereg2,one_w) ; {dereg3,dereg4}=fixfax(dereg3,dereg4,one_w) ; {dereg5,dereg6}=fixfax(dereg5,dereg6,one_w) ; {dereg7,junk}=fixfax(dereg7,dereg2,one_w) ; endif ; dereg01 = dereg1 ; dereg02 = dereg2 ; dereg03 = dereg3 ; dereg04 = dereg4 ; dereg05 = dereg5 ; dereg06 = dereg6 ; dereg07 = dereg7 ; {junk,efficiency}=fixfax(dereg1,efficiency,one_w) ; _timfix = _timfix2 ; /* time fixed effects */ _crsfix = _crsfix2 ; /* cross section fixed effects */ {princ_d,rent_d}=fixfax(princ_d,rent_d,one_w) ; {intinc_d,div_d}=fixfax(intinc_d,div_d,one_w) ; {dir_d,wage_d}=fixfax(dir_d,wage_d,one_w) ; {ngsp_d,pinc_d}=fixfax(ngsp_d,pinc_d,one_w) ; /* fixfax interacted terms to keep constant term unchanged */ {gsp_x_dereg1,gsp_x_dereg2}=fixfax(ngsp_d.*dereg01,ngsp_d.*dereg02,one_w) ; {gsp_x_dereg3,gsp_x_dereg4}=fixfax(ngsp_d.*dereg03,ngsp_d.*dereg04,one_w) ; {gsp_x_dereg5,gsp_x_dereg6}=fixfax(ngsp_d.*dereg05,ngsp_d.*dereg06,one_w) ; {gsp_x_dereg7,junk}=fixfax(ngsp_d.*dereg07,dereg02,one_w) ; {gsp_x_mbstrend,gsp_x_trend}=fixfax(ngsp_d.*mbs_trend,ngsp_d.*trend,one_w) ; {gsp_x_trend2,gsp_x_dsmb}=fixfax(ngsp_d.*(trend2),dsmb.*ngsp_d,one_w) ; {gsp_x_eff,gsp_x_propr}=fixfax(ngsp_d.*efficiency,dnpropr.*ngsp_d,one_w) ; {dereg1fx,dereg2fx}=fixfax(dereg1,dereg2,one_w) ; {dereg3fx,dereg4fx}=fixfax(dereg3,dereg4,one_w) ; {dereg5fx,dereg6fx}=fixfax(dereg5,dereg6,one_w) ; {dereg7fx,junk}=fixfax(dereg7,dereg2,one_w) ; /**************************************************************************************** REGRESSIONS ****************************************************************************************/ output on ; library pgraph ; " " ; output on; "---------------------------------------------------------------------------------------------------"; ""; {gls, glsdv,glsdva}= pest2(ngsp_d~dereg1fx~dereg4fx~gsp_x_dereg1~gsp_x_dereg4,ngsp_d-pinc_d) ; "total sample, with 3 interaction terms: dereg1, dereg4, interactions: dereg1,dereg4"; "gls_1 :" ;; gls[1]*100; "clusdv_1 :" ;; glsdv[1]*100; "gls_2 :" ;; gls[2]*100; "clusdv_2 :" ;; glsdv[2]*100; "gls_3 :" ;; gls[3]*100; "clusdv_3 :" ;; glsdv[3]*100; "gls_4 :" ;; gls[4]*100; "clusdv_4 :" ;; glsdv[4]*100; "gls_5 :" ;; gls[5]*100; "clusdv_5 :" ;; glsdv[5]*100; ""; ""; {gls, glsdv,glsdva}= pest2(ngsp_d~dereg1fx~dereg4fx~gsp_x_dereg1~gsp_x_dereg4~gsp_x_trend~gsp_x_trend2,ngsp_d-pinc_d) ; "total sample, with 3 interaction terms: dereg1, dereg4, interactions: dereg1,dereg4,trend, trend2"; "gls_1 :" ;; gls[1]*100; "clusdv_1 :" ;; glsdv[1]*100; "gls_2 :" ;; gls[2]*100; "clusdv_2 :" ;; glsdv[2]*100; "gls_3 :" ;; gls[3]*100; "clusdv_3 :" ;; glsdv[3]*100; "gls_4 :" ;; gls[4]*100; "clusdv_4 :" ;; glsdv[4]*100; "gls_5 :" ;; gls[5]*100; "clusdv_5 :" ;; glsdv[5]*100; "gls_6 :" ;; gls[6]*100; "clusdv_6 :" ;; glsdv[6]*100; "gls_7 :" ;; gls[7]*100; "clusdv_7 :" ;; glsdv[7]*100; ""; output off ; /**************************************************************************************** PROCEDURES ****************************************************************************************/ @------------------differencing procedure-----------------------@ proc(1)=delta(xxx,diflen,lastyear) ; local s,dx,i,k ; k = floor( (lastyear-1)/diflen ) ; s=0 ; i=0 ; dx=zeros(rows(xxx),k ) ; do while s<(lastyear-diflen ) ; dx[.,k-i]= xxx[.,lastyear-s] - xxx[.,lastyear-s-diflen] ; s=s+diflen ; i=i+1 ; endo ; retp(dx) ; endp ; @------------------substitution-----------------------@ proc(1)=subst(xx,eps) ; local i,j ; i=1 ; do while i<(rows(xx)+1) ; j = 1 ; do while j<(cols(xx)+1) ; if abs(xx[i,j]) > eps ; else ; xx[i,j]=eps.*abs(xx[i,j])/xx[i,j] ; endif ; j=j+1 ; endo ; i=i+1 ; endo ; retp(xx) ; endp ; end; @------------- fixed effects removal-------------------------------@ proc(2)=fixfax(y,x1,het_w) ; local hetvec,yvec,xvec,TT,NN,nobs,x1vec,yNs,x1Ns,yTs,x1Ts ; local olsest,xx,madest,stdev,resid,sighat,olsdv ; /***** Note: No diff in treatment of x and y ***************/ NN=rows(y) ; TT=cols(y) ; Nobs=TT*NN ; /***** heteroskedasticity ****** Heteroskedasticity weigths (inverse of the std devs) *****/ hetvec=reshape(het_w,Nobs,1); /***** left side variable ******/ yvec=reshape(y,Nobs,1); /***** regressors ******/ x1vec=reshape(x1,Nobs,1); /******* demean ********/ yvec= yvec- hetvec.*(hetvec'yvec)/(hetvec'hetvec) ; y = reshape(yvec,NN,TT) ; x1vec= x1vec- hetvec.*(hetvec'x1vec)/(hetvec'hetvec) ; x1 = reshape(x1vec,NN,TT) ; if _timfix==1 ; yNs = sumc(y.*het_w)./sumc(het_w^2) ; @yNs: TTx1 - for each t sum over n@ y = y - het_w.*(ones(NN,1).*.yNs') ; @time fixed effect@ x1Ns = sumc(x1.*het_w)./sumc(het_w^2) ; @yNs: TTx1 - for each t sum over n@ x1 = x1 - het_w.*(ones(NN,1).*.x1Ns') ; @time fixed effect@ endif ; if _crsfix==1 ; yTs = sumc((y.*het_w)')./sumc(het_w'^2); @yTs: NNx1 - for each n sum over t@ y = y - het_w.*(yTs.*.ones(1,TT)) ; @cross fixed effect@ x1Ts = sumc((x1.*het_w)')./sumc(het_w'^2); @yTs: NNx1 - for each n sum over t@ x1 = x1 - het_w.*(x1Ts.*.ones(1,TT)) ; @cross fixed effect@ endif ; retp(y,x1) ; endp ; @ -------------------- Preis Whinsten autocorrelation-----------------@ proc(1)=pw(x,n,t,rr) ; x[.,1]=x[.,1]*sqrt(1-rr^2) ; x[.,2:t]=x[.,2:t]-rr*x[.,1:t-1] ; retp(x) ; endp ; @ -------------------- Kernel smoother (normal distribution) -----------------@ proc(1)=kersm(rsx,sigma) ; local km5,rsy,i,t,s ; km5=zeros(cols(rsx),1) ; rsy=ones(rows(rsx),cols(rsx)) ; i=1 ; do while i < rows(rsx)+1 ; t=1 ; do while t < cols(rsx)+1 ; s=1 ; do while s < cols(rsx)+1 ; km5[s]=exp(-(s-t)^2/(2*sigma^2)) ; s=s+1 ; endo; rsy[i,t]=km5'rsx[i,.]'/sumc(km5) ; t=t+1 ; endo; i=i+1 ; endo ; retp(rsy) ; endp ; proc(1)=truncrs(xxx,low,high) ; local i,t; i=1 ; do while i < (rows(xxx)+1) ; t=1 ; do while t < (cols(xxx)+1) ; if xxx[i,t]>high ; xxx[i,t]=high; elseif xxx[i,t]< low ; xxx[i,t]=low ; endif ; t=t+1 ; endo ; i=i+1 ; endo ; retp(xxx) ; endp ; proc(1)=detrendx(xyz) ; local trend2,i,const,temp,x,t,detrender; t=cols(xyz) ; const=ones(t,1) ; trend2=seqa(1,1,t) ; x=const~trend2 ; detrender = eye(t)-x*inv(x'x)*x'; i=1 ; do while i< rows(xyz)+1 ; temp=detrender*xyz[i,.]' ; xyz[i,.]=temp' ; i=i+1 ; endo ; retp(xyz) ; endp ; /*** panel estimation with k regressors */ proc(3)=pest2(xx,yy) ; local TT,NN,nobs,k,i,x2,cluster,w,j ; local x1vec,x2vec,y1vec,y2vec ; local res1,resNT1,vari1,varihat1,ols,res2; local gls,glsdv,sighat1,sighat2,one_w,olsdv,olsdva ; local het_w, yNs, yTs, xx1,res3,glsdva ; NN=rows(yy) ; TT=cols(yy) ; het_w=ones(NN,TT) ; Nobs=TT*NN ; k = cols(xx)./TT ; y1vec=reshape(yy,Nobs,1); /* **** regressors ******/ i = 1 ; xx1=xx[.,1:i*TT]; x1vec = reshape(xx1,nobs,1) ; do until i >= k ; i = i+1 ; xx1= xx[.,(TT*(i-1))+1:i*TT] ; x2 = reshape(xx1,nobs,1) ; x1vec = x1vec~x2 ; endo ; ols = inv(x1vec'x1vec)*x1vec'y1vec ; "ols " ols'.*100 ; res1 = y1vec - x1vec*ols ; sighat1 = res1'res1/(rows(y1vec)-1) ; @ "10^4*sighat1" 10^4*sighat1 ;@ olsdv = sighat1*inv(x1vec'x1vec) ; olsdva = sqrt(diag(olsdv)) ; "ols std err" ;; 100*olsdva' ; test1=res1 ; resNT1 = reshape(res1,NN,TT); resNT1 = resNT1' ; vari1 = 1/sqrt( meanc(resNT1.^2) ) ; varihat1 = vari1.*.(ones(1,TT)) ; varihat1 = reshape(varihat1,nobs,1) ; y2vec = y1vec.*varihat1 ; x2vec = x1vec.*varihat1 ; gls = inv(x2vec'x2vec)*x2vec'y2vec ; res2 = y2vec - x2vec*gls ; sighat2 = res2'res2/(rows(y2vec)-1) ; @ "10^4*sighat2" 10^4*sighat2 ;@ glsdv = sighat2*inv(x2vec'x2vec) ; glsdva = sqrt(diag(glsdv)) ; @"gls std err" ;; 100*glsdva' ; @ @ "sighat2 " sighat2 ; @ @if white==0;"no hetero"; glsdv = sqrt(diag(glsdv)) ; elseif white==1;@ "clustering. nobs: ";; nobs; W=0 ; i= 1 ; j= 1 ; do while i < (NN+1) ; clear cluster ; t=1 ; do while t < (TT+1) ; cluster = cluster+res2[j]*x2vec[j,.] ; t=t+1 ; j= j+1 ; endo ; @"cluster" cluster ; @ W = W+cluster'.*.cluster ; @ "W " W ; @ i=i+1 ; endo ; W=W*nn*(nn*tt-1)/( (NN*TT-cols(x2vec))*(NN-1) ) ; glsdv= sqrt(diag(inv(x2vec'x2vec)*W*inv(x2vec'x2vec))); @vari1;@ retp(gls,glsdv,glsdva) ; endp ; proc(1)=pw(x,n,t,rr) ; x[.,1]=x[.,1]*sqrt(1-rr^2) ; x[.,2:t]=x[.,2:t]-rr*x[.,1:t-1] ; retp(x) ; endp ; @ -------------------- GLS panel estimation with k regressors and auto-----------------@ proc(2)=pestautk(xx,yy) ; local TT,NN,nobs,k,i,x2,xx1,y1 ; local x1vec,x2vec,y1vec,y2vec ; local res1,resNT1,vari1,varihat1,ols,res2; local gls,glsdv,sighat1,sighat2,one_w ; local het_w, yNs, yTs,res3, rhohat, zz ; NN=rows(yy) ; TT=cols(yy) ; het_w=ones(NN,TT) ; Nobs=TT*NN ; k = cols(xx)./TT ; y1vec=reshape(yy,Nobs,1); /* **** regressors ******/ i = 1 ; xx1=xx[.,1:i*TT]; x1vec = reshape(xx1,nobs,1) ; do until i >= k ; i = i+1 ; xx1= xx[.,(TT*(i-1))+1:i*TT] ; x2 = reshape(xx1,nobs,1) ; x1vec = x1vec~x2 ; endo ; ols = inv(x1vec'x1vec)*x1vec'y1vec ; "ols " ols'.*100 ; res1 = y1vec - x1vec*ols ; test1=res1 ; resNT1 = reshape(res1,NN,TT); resNT1 = resNT1' ; vari1 = 1/sqrt( meanc(resNT1.^2) ) ; varvar=vari1 ; varihat1 = vari1.*.(ones(1,TT)) ; varihat1 = reshape(varihat1,nobs,1) ; y1vec = y1vec.*varihat1 ; x1vec = x1vec.*varihat1 ; gls = inv(x1vec'x1vec)*x1vec'y1vec ; "ols2 " gls'.*100 ; res1 = y1vec - x1vec*gls ; resNT1 = reshape(res1,NN,TT); rhohat=zeros(nn,1) ; i=1 ; do while i<(NN+1) ; zz = resNT1[i,1:TT-1]' ; y1 = resNT1[i,2:TT]' ; rhohat[i] = inv(zz'zz)*zz'y1 ; i=i+1 ; endo ; rhohat=meanc(rhohat) ; "rhohat: " rhohat ; y1 = reshape(y1vec,NN,TT) ; y1= pw(y1,NN,TT,rhohat) ; y2vec=reshape(y1,Nobs,1); x2vec=zeros(rows(x1vec),cols(x1vec)) ; i = 1 ; xx1 = reshape(x1vec[.,1],NN,TT) ; xx1= pw(xx1,NN,TT,rhohat) ; x2vec[.,1] = reshape(xx1,nobs,1) ; do until i >= k ; i = i+1 ; xx1 = reshape(x1vec[.,i],,NN,TT) ; xx1= pw(xx1,NN,TT,rhohat) ; x2vec[.,i] = reshape(xx1,nobs,1) ; endo ; gls = inv(x2vec'x2vec)*x2vec'y2vec ; res2 = y2vec - x2vec*gls ; sighat2 = res2'res2/(rows(y2vec)-1) ; glsdv = sighat2*inv(x2vec'x2vec) ; glsdv = sqrt(diag(glsdv)) ; @vari1;@ retp(gls,glsdv) ; endp ; proc(1)=FrischWaugh(yy,xx) ; local nn,tt,nobs,k,y1vec,xx1,x1vec,x2,i,olsest,res1 ; NN=rows(yy) ; TT=cols(yy) ; Nobs=TT*NN ; k = cols(xx)./TT ; y1vec=reshape(yy,Nobs,1); /* **** regressors ******/ i = 1 ; xx1=xx[.,1:i*TT]; x1vec = reshape(xx1,nobs,1) ; do until i >= k ; i = i+1 ; xx1= xx[.,(TT*(i-1))+1:i*TT] ; x2 = reshape(xx1,nobs,1) ; x1vec = x1vec~x2 ; endo ; olsest = inv(x1vec'x1vec)*x1vec'y1vec ; @ "ols " ols'.*100 ; @ res1 = y1vec - x1vec*olsest ; res1=reshape(res1,nn,tt) ; retp(res1) ; endp ; /* Calculate size distribution of banks */ proc(4) = sumcategories(_cutoff) ; local sz1_7201, sz2_7201, sz3_7201, sz4_7201, sz5_7201, sz6_7201, sz7_7201, sz8_7201 ; local s1, s2, s3, s4, s5, s6, s7, s8, s01, s001, s0001 ; local total, gr, ii, frac, small ; local label1, label2, label3, label4, label5, label6, labelsmall, label ; local sizes,included ; /* NUMBER OF BANKS IN ASSET GROUPS */ sizes= zeros(11,1530) ; /* GROUP 0001 : [0-5m] */ if _dereg==8 ; load sz1_7201[51,30] = asscat7201real_5m.asc ; elseif _dereg==9 ; load sz1_7201[51,30] = nbanks7201_25m.asc ; endif ; s0001 = sz1_7201 ; sizes[1,.]=reshape(s0001,1,1530) ; /* GROUP 001 : [5-10m] */ if _dereg==8 ; load sz1_7201[51,30] = asscat7201real_10m.asc ; elseif _dereg==9 ; load sz1_7201[51,30] = nbanks7201_25m.asc ; endif ; s001 = sz1_7201 ; sizes[2,.]=reshape(s001,1,1530) ; /* GROUP 01 : [10-15m] */ if _dereg==8 ; load sz1_7201[51,30] = asscat7201real_15m.asc ; elseif _dereg==9 ; load sz1_7201[51,30] = nbanks7201_25m.asc ; endif ; s01 = sz1_7201 ; sizes[3,.]=reshape(s01,1,1530) ; /* GROUP 1 : [15-25m] */ if _dereg==8 ; load sz1_7201[51,30] = asscat7201real_25m.asc ; elseif _dereg==9 ; load sz1_7201[51,30] = nbanks7201_25m.asc ; endif ; s1 = sz1_7201 ; sizes[4,.]=reshape(s1,1,1530) ; /* GROUP 2 : (25 - 50m] */ if _dereg==8 ; load sz2_7201[51,30] = asscat7201real_50m.asc ; elseif _dereg==9 ; load sz2_7201[51,30] = nbanks7201_50m.asc ; endif ; s2 = sz2_7201 ; sizes[5,.]=reshape(s2,1,1530) ; /* GROUP 3 : (50 - 100m] */ if _dereg==8 ; load sz3_7201[51,30] = asscat7201real_100m.asc ; elseif _dereg==9 ; load sz3_7201[51,30] = nbanks7201_100m.asc ; endif ; s3 = sz3_7201 ; sizes[6,.]=reshape(s3,1,1530) ; /* GROUP 4 : (100 - 200m] */ if _dereg==8 ; load sz4_7201[51,30] = asscat7201real_200m.asc ; elseif _dereg==9 ; load sz4_7201[51,30] = nbanks7201_500m.asc ; endif ; s4 = sz4_7201 ; sizes[7,.]=reshape(s4,1,1530) ; /* GROUP 5 : (200 - 300m] */ if _dereg==8 ; load sz5_7201[51,30] = asscat7201real_300m.asc ; elseif _dereg==9 ; load sz5_7201[51,30] = nbanks7201_500m.asc ; endif ; s5 = sz5_7201 ; sizes[8,.]=reshape(s5,1,1530) ; /* GROUP 6 : (300 - 500m] */ if _dereg==8 ; load sz6_7201[51,30] = asscat7201real_500m.asc ; elseif _dereg==9 ; load sz6_7201[51,30] = nbanks7201_500m.asc ; endif ; s6 = sz6_7201 ; sizes[9,.]=reshape(s6,1,1530) ; /* GROUP 7 :(500 - 1b] */ if _dereg==8 ; load sz7_7201[51,30] = asscat7201real_1b.asc ; elseif _dereg==9 ; load sz5_7201[51,30] = nbanks7201_1b.asc ; endif ; s7 = sz7_7201 ; sizes[10,.]=reshape(s7,1,1530) ; /* GROUP 8 : 1b and over */ if _dereg==8 ; load sz6_7201[51,30] = asscat7201real_1b+.asc ; elseif _dereg==9 ; load sz6_7201[51,30] = nbanks7201real_1b+.asc ; endif ; s8 = sz6_7201 ; sizes[11,.]=reshape(s8,1,1530) ; total = zeros(51,cols(s1)) ; ii = 1 ; do until ii > 51 ; total[ii,.] = s0001[ii,.]+ s001[ii,.]+ s01[ii,.]+ s1[ii,.]+s2[ii,.]+s3[ii,.]+s4[ii,.] +s5[ii,.]+s6[ii,.]+s7[ii,.]+s8[ii,.] ; ii = ii + 1 ; endo ; gr=total ; label= "infinity" ; @gr = zeros(51,cols(s1)) ;@ if _Droplargebanks == 5 ; label = "50m]" ; elseif _Droplargebanks == 6 ; label = "100m]" ; elseif _Droplargebanks == 7 ; label = "200m]" ; elseif _Droplargebanks == 8 ; label = "300m]" ; elseif _Droplargebanks == 9 ; label = "500m]" ; elseif _Droplargebanks == 10 ; label = "1b]" ; elseif _Droplargebanks == 11 ; label = "infinity[" ; endif ; small = zeros(51,cols(s1)) ; if _DropSmallBanks==1 ; labelsmall = "[0m-" ; elseif _DropSmallBanks==2 ; labelsmall = "[5m-" ; elseif _DropSmallBanks==3 ; labelsmall = "[10m-" ; elseif _DropSmallBanks==4 ; labelsmall = "[15m-" ; elseif _DropSmallBanks==5 ; labelsmall = "[25m-" ; elseif _DropSmallBanks==6 ; labelsmall = "[50m-" ; elseif _DropSmallBanks==7 ; labelsmall = "[100m-" ; elseif _DropSmallBanks==8 ; labelsmall = "[200m-" ; elseif _DropSmallBanks==9 ; labelsmall = "[300m-" ; elseif _DropSmallBanks==10 ; labelsmall = "[500m-" ; endif ; included=sumc(sizes[_DropSmallBanks:_Droplargebanks,.]) ; gr=reshape(included,51,30) ; frac = gr./total ; retp(total,gr,label,labelsmall) ; endp ; fn tstat(a,b,c,d) =(a-b)/sqrt(c^2+d^2) ; end;