Go to the MLX, M, PDF, or HTML version of this file. Go back to fan’s MEconTools Toolbox (bookdown), Matlab Code Examples Repository (bookdown), or Math for Econ with Matlab Repository (bookdown).
Examples](https://fanwangecon.github.io/M4Econ/), or** Dynamic Asset This is the example vignette for function: ff_summ_nd_array from the MEconTools Package. This function summarizes policy and value functions over states.
Call the function with defaults.
ff_summ_nd_array();
xxx Summ over (a,z), condi age as cols, kids/marriage as rows xxxxxxxxxxxxxxxxxxxxxxxxxxx
group marry kids mean_age_18 mean_age_19 mean_age_20 mean_age_21
_____ _____ ____ ___________ ___________ ___________ ___________
1 0 1 0.53448 0.44448 0.5053 0.52914
2 1 1 0.4564 0.44512 0.44998 0.51775
3 0 2 0.52415 0.49903 0.48403 0.44429
4 1 2 0.49235 0.43684 0.44717 0.45226
5 0 3 0.4668 0.52676 0.49386 0.51855
6 1 3 0.47097 0.60345 0.58319 0.46238
7 0 4 0.55484 0.53601 0.53069 0.49323
8 1 4 0.5283 0.44091 0.53317 0.51062
Summarize over 6 dimensional array, iteratively change how many dimensions to group over.
First, generate matrix:
st_title = "Random 2D dimensional Array Testing Summarizing";
rng(123)
mn_polval = rand(5,4);
bl_print_table = true;
ar_st_stats = ["mean"];
cl_mp_datasetdesc = {};
cl_mp_datasetdesc{1} = containers.Map({'name', 'labval'}, ...
{'a', linspace(0,1,size(mn_polval,1))});
cl_mp_datasetdesc{2} = containers.Map({'name', 'labval'}, ...
{'z', linspace(-1,1,size(mn_polval,2))});
disp(mn_polval);
0.6965 0.4231 0.3432 0.7380
0.2861 0.9808 0.7290 0.1825
0.2269 0.6848 0.4386 0.1755
0.5513 0.4809 0.0597 0.5316
0.7195 0.3921 0.3980 0.5318
Second, show the entire matrix (no labels):
it_aggd = 0;
bl_row = 1;
ff_summ_nd_array(st_title, mn_polval, bl_print_table, ar_st_stats, it_aggd, bl_row);
xxx Random 2D dimensional Array Testing Summarizing xxxxxxxxxxxxxxxxxxxxxxxxxxx
group vardim2 mean_vardim1_1 mean_vardim1_2 mean_vardim1_3 mean_vardim1_4 mean_vardim1_5
_____ _______ ______________ ______________ ______________ ______________ ______________
1 1 0.69647 0.28614 0.22685 0.55131 0.71947
2 2 0.42311 0.98076 0.68483 0.48093 0.39212
3 3 0.34318 0.72905 0.43857 0.059678 0.39804
4 4 0.738 0.18249 0.17545 0.53155 0.53183
Third, rotate row and column, and now with labels:
it_aggd = 0;
bl_row = 1;
ar_permute = [2,1];
ff_summ_nd_array(st_title, mn_polval, bl_print_table, ar_st_stats, it_aggd, bl_row, ...
cl_mp_datasetdesc, ar_permute);
xxx Random 2D dimensional Array Testing Summarizing xxxxxxxxxxxxxxxxxxxxxxxxxxx
group a mean_z__1 mean_z__0_33333 mean_z_0_33333 mean_z_1
_____ ____ _________ _______________ ______________ ________
1 0 0.69647 0.42311 0.34318 0.738
2 0.25 0.28614 0.98076 0.72905 0.18249
3 0.5 0.22685 0.68483 0.43857 0.17545
4 0.75 0.55131 0.48093 0.059678 0.53155
5 1 0.71947 0.39212 0.39804 0.53183
Fourth, dimension one as columns, average over dim 2:
it_aggd = 1;
bl_row = 1;
ff_summ_nd_array(st_title, mn_polval, bl_print_table, ar_st_stats, it_aggd, bl_row, ...
cl_mp_datasetdesc);
xxx Random 2D dimensional Array Testing Summarizing xxxxxxxxxxxxxxxxxxxxxxxxxxx
group x mean_z__1 mean_z__0_33333 mean_z_0_33333 mean_z_1
_____ _ _________ _______________ ______________ ________
1 1 0.49605 0.59235 0.3937 0.43186
Fifth, dimension one as rows, average over dim 2:
it_aggd = 1;
bl_row = 0;
ff_summ_nd_array(st_title, mn_polval, bl_print_table, ar_st_stats, it_aggd, bl_row, ...
cl_mp_datasetdesc);
xxx Random 2D dimensional Array Testing Summarizing xxxxxxxxxxxxxxxxxxxxxxxxxxx
group z sum mean std coefvari min max
_____ ________ ______ _______ _______ ________ ________ _______
1 -1 2.4802 0.49605 0.22895 2.1666 0.22685 0.71947
2 -0.33333 2.9617 0.59235 0.24524 2.4154 0.39212 0.98076
3 0.33333 1.9685 0.3937 0.23907 1.6468 0.059678 0.72905
4 1 2.1593 0.43186 0.24575 1.7573 0.17545 0.738
Sixth, dimension two as rows, average over dim 1:
ar_permute = [2,1];
it_aggd = 1;
bl_row = 0;
ff_summ_nd_array(st_title, mn_polval, bl_print_table, ar_st_stats, it_aggd, bl_row, ...
cl_mp_datasetdesc, ar_permute);
xxx Random 2D dimensional Array Testing Summarizing xxxxxxxxxxxxxxxxxxxxxxxxxxx
group a sum mean std coefvari min max
_____ ____ ______ _______ _______ ________ ________ _______
1 0 2.2007 0.55019 0.19636 2.8019 0.34318 0.738
2 0.25 2.1784 0.54461 0.37514 1.4518 0.18249 0.98076
3 0.5 1.5257 0.38143 0.23212 1.6432 0.17545 0.68483
4 0.75 1.6235 0.40587 0.23269 1.7443 0.059678 0.55131
5 1 2.0415 0.51036 0.15361 3.3226 0.39212 0.71947
Summarize over 6 dimensional array, iteratively change how many dimensions to group over.
First, generate matrix:
st_title = "Random ND dimensional Array Testing Summarizing";
rng(123)
mn_polval = rand(8,7,6,5,4,3);
bl_print_table = true;
ar_st_stats = ["mean"];
Second, summarize over the first four dimensions, row group others:
it_aggd = 4;
bl_row = 0;
ff_summ_nd_array(st_title, mn_polval, bl_print_table, ar_st_stats, it_aggd, bl_row);
xxx Random ND dimensional Array Testing Summarizing xxxxxxxxxxxxxxxxxxxxxxxxxxx
group vardim5 vardim6 sum mean std coefvari min max
_____ _______ _______ ______ _______ _______ ________ __________ _______
1 1 1 836.78 0.49808 0.29255 1.7026 8.1888e-05 0.99964
2 2 1 842.15 0.50128 0.28968 1.7305 6.7838e-05 0.99936
3 3 1 831.45 0.49491 0.28851 1.7154 0.00091373 0.99989
4 4 1 843.9 0.50232 0.28154 1.7842 0.00012471 0.99731
5 1 2 838.99 0.4994 0.2911 1.7156 0.00029749 0.99938
6 2 2 830.81 0.49453 0.28634 1.7271 0.00027113 0.9992
7 3 2 832.59 0.49559 0.28682 1.7279 0.00035994 0.99936
8 4 2 820.42 0.48835 0.29032 1.6821 0.00096259 0.99896
9 1 3 870.56 0.51819 0.29111 1.7801 0.0010616 0.99951
10 2 3 854.68 0.50874 0.28458 1.7877 0.001884 0.99965
11 3 3 838.29 0.49898 0.2891 1.726 0.0019192 0.99945
12 4 3 842.83 0.50169 0.2877 1.7438 0.00016871 0.99963
Third, summarize over the first four dimensions, column group 5th, and row group others:
it_aggd = 4;
bl_row = 1;
ff_summ_nd_array(st_title, mn_polval, bl_print_table, ["sum"], it_aggd, bl_row);
xxx Random ND dimensional Array Testing Summarizing xxxxxxxxxxxxxxxxxxxxxxxxxxx
group vardim6 sum_vardim5_1 sum_vardim5_2 sum_vardim5_3 sum_vardim5_4
_____ _______ _____________ _____________ _____________ _____________
1 1 836.78 842.15 831.45 843.9
2 2 838.99 830.81 832.59 820.42
3 3 870.56 854.68 838.29 842.83
Fourth, summarize over the first five dimensions, column group 6th, no row groups:
it_aggd = 5;
bl_row = 1;
ff_summ_nd_array(st_title, mn_polval, bl_print_table, ["mean", "std"], it_aggd, bl_row);
xxx Random ND dimensional Array Testing Summarizing xxxxxxxxxxxxxxxxxxxxxxxxxxx
group x mean_vardim6_1 mean_vardim6_2 mean_vardim6_3 std_vardim6_1 std_vardim6_2 std_vardim6_3
_____ _ ______________ ______________ ______________ _____________ _____________ _____________
1 1 0.49915 0.49447 0.5069 0.28805 0.28862 0.28816
Fifth, summarize over all six dimensions, summary statistics over the entire dataframe:
it_aggd = 6;
bl_row = 0;
ff_summ_nd_array(st_title, mn_polval, bl_print_table, ar_st_stats, it_aggd, bl_row);
xxx Random ND dimensional Array Testing Summarizing xxxxxxxxxxxxxxxxxxxxxxxxxxx
group x sum mean std coefvari min max
_____ _ _____ _______ _______ ________ __________ _______
1 1 10083 0.50017 0.28831 1.7349 6.7838e-05 0.99989
Given a random seven dimensional matrix, average over the 2nd, 4th and 5th dimensionals. Show as row groups the 3, 6 and 7th dimensions, and row groups the 1st dimension. Show Coefficient of Variation only.
st_title = "avg VALUE 2+4+5th dims. groups 3+6+7th dims, and row groups the 1st dim.";
rng(123)
mn_polval = rand(3,10,2,10,10,2,3);
ar_permute = [2,4,5,1,3,6,7];
bl_print_table = true;
ar_st_stats = ["coefvari"];
it_aggd = 3; % mean over 3 dims
bl_row = 1; % one var for row group
cl_mp_datasetdesc = {};
cl_mp_datasetdesc{1} = containers.Map({'name', 'labval'}, ...
{'age', [18, 19, 20]});
cl_mp_datasetdesc{2} = containers.Map({'name', 'labval'}, ...
{'savings', linspace(0,1,10)});
cl_mp_datasetdesc{3} = containers.Map({'name', 'labval'}, ...
{'borrsave', [-1,+1]});
cl_mp_datasetdesc{4} = containers.Map({'name', 'labval'}, ...
{'shocka', linspace(-5,5,10)});
cl_mp_datasetdesc{5} = containers.Map({'name', 'labval'}, ...
{'shockb', linspace(-5,5,10)});
cl_mp_datasetdesc{6} = containers.Map({'name', 'labval'}, ...
{'marry', [0,1]});
cl_mp_datasetdesc{7} = containers.Map({'name', 'labval'}, ...
{'region', [1,2,3]});
% call function
ff_summ_nd_array(st_title, mn_polval, bl_print_table, ar_st_stats, it_aggd, bl_row, cl_mp_datasetdesc, ar_permute);
xxx avg VALUE 2+4+5th dims. groups 3+6+7th dims, and row groups the 1st dim. xxxxxxxxxxxxxxxxxxxxxxxxxxx
group borrsave marry region cv_age_18 cv_age_19 cv_age_20
_____ ________ _____ ______ _________ _________ _________
1 -1 0 1 1.7607 1.7534 1.7065
2 1 0 1 1.6566 1.7501 1.7042
3 -1 1 1 1.6608 1.7658 1.7291
4 1 1 1 1.756 1.7479 1.7606
5 -1 0 2 1.7314 1.7506 1.786
6 1 0 2 1.7347 1.728 1.738
7 -1 1 2 1.7811 1.755 1.7568
8 1 1 2 1.7445 1.7398 1.7746
9 -1 0 3 1.7025 1.7286 1.69
10 1 0 3 1.74 1.7549 1.7356
11 -1 1 3 1.7147 1.7287 1.7341
12 1 1 3 1.7919 1.7313 1.7452