# The QUANTSELECT Procedure

### Example 84.2 Econometric Growth Data

This example shows how you can use the QUANTREG procedure to further analyze the final selected models from the QUANTSELECT procedure, and how you can find the set of observations for a specified range of conditional quantile levels. The data under investigation contain economic growth rate records for countries during two time periods: 1965–1975 and 1975–1985. This data set comes from a study by Barro and Lee (1994) and is also analyzed in the section Quantile Regression for Econometric Growth Data of Chapter 83: The QUANTREG Procedure.

The data set contains 161 observations and 16 variables. The variables, which are listed in Table 84.17, include the national GDP growth rates (GDPR), 14 covariates, and a name variable (Country) that identifies the countries in one of the two periods.

Table 84.17: Variables for Econometric Growth Data

Variable

Description

Country

Country’s name and time period

GDPR

Annual change of per capita GDP

lgdp2

Initial per capita GDP

mse2

Male secondary education

fse2

Female secondary education

fhe2

Female higher education

mhe2

Male higher education

lexp2

Life expectancy

lintr2

Human capital

gedy2

EducationGDP

Iy2

InvestmentGDP

gcony2

Public consumptionGDP

lblakp2

pol2

Political instability

ttrad2

period

Time period

The goal is to compare the effect of the covariates on GDPR at different quantile levels. The following statements perform effect selection at three quantile levels (): 0.1, 0.5, and 0.9.

data growth;
length Country\$ 22;
input Country GDPR lgdp2 mse2 fse2 fhe2 mhe2 lexp2 lintr2 gedy2
Iy2 gcony2 lblakp2 pol2 ttrad2 @@;
if(index(country,'75')) then period='65-75';
if(index(country,'85')) then period='75-85';
datalines;
Algeria75              .0415 7.330 .1320 .0670 .0050 .0220 3.880 .1138 .0382
.1898 .0601 .3823 .0833 .1001
Algeria85              .0244 7.745 .2760 .0740 .0070 .0370 3.978 -.107 .0437
.3057 .0850 .9386 .0000 .0657
Argentina75            .0187 8.220 .7850 .6200 .0740 .1660 4.181 .4060 .0221
.1505 .0596 .1924 .3575 -.011
Argentina85            -.014 8.407 .9360 .9020 .1320 .2030 4.211 .1914 .0243

... more lines ...

.0654 .1224 .9393 .7022 -.007
Zambia75               .0120 6.989 .3760 .1190 .0130 .0420 3.757 .4388 .0339
.3688 .2513 .3945 .0000 -.032
Zambia85               -.046 7.109 .4200 .2740 .0110 .0270 3.854 .8812 .0477
.1632 .2637 .6467 .0000 -.033
Zimbabwe75             .0320 6.860 .1450 .0170 .0080 .0450 3.833 .7156 .0337
.2276 .0246 .1997 .0000 -.040
Zimbabwe85             -.011 7.180 .2200 .0650 .0060 .0400 3.944 .9296 .0520
.1559 .0518 .7862 .7161 -.024
;

proc quantselect data=growth;
class period;
model GDPR = period lgdp2 mse2 fse2 fhe2 mhe2 lexp2
lintr2 gedy2 Iy2 gcony2 lblakp2 pol2 ttrad2
/ quantile=0.1 0.5 0.9 selection=backward(choose=sbc sh=5);
run;



The SELECTION=BACKWARD option specifies the BACKWARD method as the effect selection method, and the CHOOSE=SBC option specifies the Schwarz Bayesian information criterion for choosing the final selected effects. The estimates for the final selected effects are shown in Output 84.2.1 for , Output 84.2.2 for , and Output 84.2.3 for .

Output 84.2.1: Parameter Estimates at

The QUANTSELECT Procedure
Quantile Level = 0.1

Selected Effects: Intercept period lgdp2 mse2 lexp2 lintr2 Iy2 gcony2 lblakp2 pol2 ttrad2

Parameter Estimates
Parameter DF Estimate Standardized
Estimate
Intercept 1 0.048847 0
period 65-75 1 0.011861 0.238272
lgdp2 1 -0.024613 -0.947421
mse2 1 0.016031 0.554367
lexp2 1 0.033898 0.277298
lintr2 1 -0.001877 -0.192986
Iy2 1 0.067877 0.240002
gcony2 1 -0.176072 -0.438350
lblakp2 1 -0.026364 -0.326506
pol2 1 -0.022975 -0.223264

Output 84.2.2: Parameter Estimates at

Selected Effects: Intercept period lgdp2 mse2 lexp2 lintr2 Iy2 gcony2 lblakp2 pol2 ttrad2

Parameter Estimates
Parameter DF Estimate Standardized
Estimate
Intercept 1 -0.040264 0
period 65-75 1 0.008913 0.179063
lgdp2 1 -0.025823 -0.993996
mse2 1 0.014161 0.489697
lexp2 1 0.062163 0.508527
lintr2 1 -0.002688 -0.276345
Iy2 1 0.068294 0.241476
gcony2 1 -0.096543 -0.240354
lblakp2 1 -0.025265 -0.312892
pol2 1 -0.019387 -0.188396

Output 84.2.3: Parameter Estimates at

Selected Effects: Intercept lgdp2 mse2 lexp2 lintr2 Iy2 gcony2 lblakp2 ttrad2

Parameter Estimates
Parameter DF Estimate Standardized
Estimate
Intercept 1 -0.011162 0
lgdp2 1 -0.032753 -1.260735
mse2 1 0.016583 0.573447
lexp2 1 0.073326 0.599845
lintr2 1 -0.003334 -0.342843
Iy2 1 0.063929 0.226041
gcony2 1 -0.089998 -0.224060
lblakp2 1 -0.032253 -0.399439

Comparing the three quantile models, you can see that the final selected models for and have the same set of selected effects, but the final selected model for excludes the effects for time period and political instability. In other words, if a country’s annual change in per capita GDP represents the 90% quantile conditional on the explanatory effects, then its GDP growth rate seems consistent for both the 1965–1975 and 1975–1985 periods and resistant to political instability. In addition, if a country’s GDP growth rate represents the 50% or less quantile conditional on the explanatory effects, then the country’s 1975–1985 GDP growth rate seems lower than its 1965–1975 GDP growth rate, and the effect for political instability has a negative impact on its GDP growth rate.

To further investigate the impact of time period and political instability on GDP growth rate, you can use the QUANTREG procedure to test the final selected effects. In the previous statements, PROC QUANTSELECT creates a macro variable for the final selected model at each of the three quantile levels. For the current example, the macro variable _QRSINDT1 contains the final model at ; _QRSINDT2 contains the final model at ; and _QRSINDT3 contains the final model at . The following statements show how to use _QRSINDT2 to specify the model for the QUANTREG procedure at :

proc quantreg data=growth;
class period;
model GDPR =  &_qrsindt2 / quantile=0.5;
Time_Period: test  period;
Political_Instability: test  pol2;
run;


Output 84.2.4 shows more information for the final selected model at . Output 84.2.5 and Output 84.2.6 show the test results for the effects of time period and political instability on GDP growth rate. You can see that both time period and political instability are significant for the model.

Output 84.2.4: Parameter Estimates at

The QUANTREG Procedure

Parameter Estimates
Parameter   DF Estimate 95% Confidence Limits
Intercept   1 -0.0403 -0.1529 0.0453
period 65-75 1 0.0089 0.0060 0.0139
period 75-85 0 0.0000 0.0000 0.0000
lgdp2   1 -0.0258 -0.0324 -0.0212
mse2   1 0.0142 0.0068 0.0182
lexp2   1 0.0622 0.0400 0.1199
lintr2   1 -0.0027 -0.0045 -0.0011
Iy2   1 0.0683 0.0143 0.1077
gcony2   1 -0.0965 -0.1526 -0.0576
lblakp2   1 -0.0253 -0.0537 -0.0174
pol2   1 -0.0194 -0.0377 -0.0116

Output 84.2.5: Test Results at

Test Time_Period Results
Test Test Statistic DF Chi-Square Pr > ChiSq
Wald 13.9838 1 13.98 0.0002

Output 84.2.6: Test Results at

Test Political_Instability Results
Test Test Statistic DF Chi-Square Pr > ChiSq
Wald 11.0589 1 11.06 0.0009

As mentioned earlier, _QRSINDT1 and _QRSINDT2 are identical, and _QRSINDT3 excludes two effects from _QRSINDT2: time period and political instability. The following statements retest time period and political instability for the final selected model at :

proc quantreg data=growth;
class period;
model GDPR =  &_qrsindt2 / quantile=0.9;
Time_Period:           test period;
Political_Instability: test pol2;
Period_and_Political:  test period pol2;
run;


Output 84.2.7, Output 84.2.8, and Output 84.2.9 show the test results for the effects of time period and political instability on GDP growth rate at . You can see that time period, political instability, and their combination are all insignificant for the model.

Output 84.2.7: Test Results at

The QUANTREG Procedure

Test Time_Period Results
Test Test Statistic DF Chi-Square Pr > ChiSq
Wald 0.0001 1 0.00 0.9941

Output 84.2.8: Test Results at

Test Political_Instability Results
Test Test Statistic DF Chi-Square Pr > ChiSq
Wald 0.1238 1 0.12 0.7250

Output 84.2.9: Test Results at

Test Period_and_Political Results
Test Test Statistic DF Chi-Square Pr > ChiSq
Wald 0.1367 2 0.14 0.9339

Another interesting question for quantile regression is to find the observations for a certain range of conditional quantile levels. For example, you might want to know which countries are winners in terms of conditional GDP growth rate at the level. The following statements compute the quantile predictions and then search, sort, and print the list of winner countries:

proc quantselect data=growth;
class period;
model GDPR = period lgdp2 mse2 fse2 fhe2 mhe2 lexp2
lintr2 gedy2 Iy2 gcony2 lblakp2 pol2 ttrad2
/ quantile=0.9 selection=backward(choose=sbc sh=5);
output out=growth90Out p=Pred;
run;

data growth90;
set growth90Out;
drop lgdp2  mse2  fse2  fhe2  mhe2 lexp2   lintr2 gedy2   Iy2
where  GDPR-Pred >= -1E-4;
GdpDiff = GDPR-Pred;
run;

proc sort data=growth90;
by GdpDiff;
run;
proc print data=growth90;
run;


Output 84.2.10 lists the countries whose conditional GDP growth rates are equal to or higher than their quantile predictions.

Output 84.2.10: Countries with High Conditional GDP Growth Rates at Level

Obs Country GDPR pol2 period Pred GdpDiff
1 Canada75 0.0346 0.0047 65-75 0.034600 0.000000
2 Canada85 0.0240 0.0000 75-85 0.024000 0.000000
3 Congo75 0.0464 0.3385 65-75 0.046400 0.000000
4 Cyprus85 0.0709 0.6000 75-85 0.070900 0.000000
5 Finland75 0.0391 0.0000 65-75 0.039100 0.000000
6 Germany_West85 0.0214 0.0000 75-85 0.021400 0.000000
7 Ghana85 -0.0150 0.0500 75-85 -0.015000 0.000000
8 United_States75 0.0155 0.0015 65-75 0.015500 0.000000
9 Yemen85 0.0305 0.0730 75-85 0.030500 0.000000
10 Denmark85 0.0234 0.0000 75-85 0.023010 0.000390
11 Japan75 0.0636 0.0005 65-75 0.062519 0.001081
12 Jordan85 0.0593 0.5000 75-85 0.058201 0.001099
13 Sudan85 0.0007 0.7000 75-85 -0.000919 0.001619
14 Iran75 0.0538 0.0072 65-75 0.051880 0.001920
15 Spain75 0.0457 0.0014 65-75 0.043241 0.002459
16 Egypt85 0.0427 0.5500 75-85 0.038409 0.004291
17 Hong_Kong85 0.0649 0.0000 75-85 0.059040 0.005860
18 Bangladesh85 0.0133 0.6507 75-85 0.006816 0.006484
19 Rwanda75 0.0590 0.0500 65-75 0.050266 0.008734
20 Brazil75 0.0637 0.0011 65-75 0.050749 0.012951
21 Syria75 0.0601 0.2500 65-75 0.046072 0.014028
22 Botswana85 0.0512 0.0000 75-85 0.030626 0.020574