diff --git a/.gitignore b/.gitignore index 4bf4938b..fcec7c90 100644 --- a/.gitignore +++ b/.gitignore @@ -38,3 +38,5 @@ coverage/ # Temporary files tmp/ temp/ +*.pyc +__pycache__/ diff --git a/data/analysis/p7/p7_descriptives.csv b/data/analysis/p7/p7_descriptives.csv new file mode 100644 index 00000000..dfdaa653 --- /dev/null +++ b/data/analysis/p7/p7_descriptives.csv @@ -0,0 +1,7 @@ +country,year,icrv,n,lnlp_mean,lnlp_sd,lnlp_median,fsts_mean,fsts_sd,fsts_median,TCI_thin_mean,TCI_thin_sd,TCI_thin_median,DAI_thin_mean,DAI_thin_sd,DAI_thin_median,log_emp_mean,log_emp_sd,log_emp_median,firm_age_mean,firm_age_sd,firm_age_median,fdi10_mean,fdi10_sd,fdi10_median,exporter_pct +CHN,2012,R2_Upper_Middle,2691,12.5218,1.1104,12.4292,0.1089,0.2466,0.0,0.4712,0.4086,0.5,0.565,0.3961,0.5,4.1534,1.3671,4.0943,1.8677,0.3389,2.0,0.06,0.2375,0.0,24.0 +CHN,2024,R2_Upper_Middle,1950,13.0175,1.3023,13.0548,0.0908,0.2371,0.0,0.218,0.2896,0.0,0.2397,0.2876,0.0,3.6024,1.58,3.3322,1.7349,0.4415,2.0,0.0607,0.2388,0.0,21.2 +SGP,2023,R1_Adv_Innovation,623,11.3486,1.0325,11.2616,0.0714,0.1944,0.0,0.191,0.3034,0.0,0.4069,0.3248,0.5,3.1643,1.1178,2.9957,1.8748,0.3312,2.0,0.3146,0.4647,0.0,17.8 +VNM,2009,R3_Emerging,999,19.4212,1.2735,19.417,0.2337,0.3825,0.0,0.1704,0.3065,0.0,0.3043,0.3752,0.0,4.0707,1.4952,3.912,1.8959,0.3055,2.0,0.1335,0.3403,0.0,37.3 +VNM,2015,R3_Emerging,969,20.0542,1.4228,19.9478,0.1795,0.3404,0.0,0.1411,0.2941,0.0,0.3605,0.398,0.5,3.6421,1.4905,3.2958,1.9174,0.2754,2.0,0.0837,0.277,0.0,29.2 +VNM,2023,R3_Emerging,1021,20.547,1.4354,20.6051,0.1616,0.3386,0.0,0.1466,0.2773,0.0,0.3056,0.3157,0.5,3.5815,1.5437,3.2581,1.9589,0.1987,2.0,0.1223,0.3278,0.0,23.8 diff --git a/data/analysis/p7/p7_grand_table.csv b/data/analysis/p7/p7_grand_table.csv new file mode 100644 index 00000000..adba943d --- /dev/null +++ b/data/analysis/p7/p7_grand_table.csv @@ -0,0 +1,289 @@ +sample,model,variable,coef,se,p,stars,n +FULL,M3_cubic,fsts_c,0.3264,0.1581,0.039,**,8229 +FULL,M3_cubic,fsts_c2,0.6186,0.8355,0.459,,8229 +FULL,M3_cubic,fsts_c3,-1.7925,0.8313,0.0311,**,8229 +FULL,M4_TCI,fsts_c,0.2041,0.1612,0.2056,,8202 +FULL,M4_TCI,fsts_c2,1.1085,0.8252,0.1792,,8202 +FULL,M4_TCI,fsts_c3,-2.1554,0.8168,0.0083,***,8202 +FULL,M4_TCI,tci_z,0.1939,0.019,0.0,***,8202 +FULL,M4_TCI,fsts_x_tci,-0.152,0.1096,0.1653,,8202 +FULL,M4_TCI,fsts2_x_tci,0.1102,0.1725,0.5231,,8202 +FULL,M5_DAI,fsts_c,0.312,0.1584,0.0489,**,8228 +FULL,M5_DAI,fsts_c2,0.6276,0.8319,0.4506,,8228 +FULL,M5_DAI,fsts_c3,-1.7725,0.8272,0.0321,**,8228 +FULL,M5_DAI,dai_z,0.1195,0.0199,0.0,***,8228 +FULL,M5_DAI,fsts_x_dai,-0.1826,0.1172,0.1192,,8228 +FULL,M5_DAI,fsts2_x_dai,0.2852,0.1903,0.1338,,8228 +FULL,M7_full,fsts_c,0.2219,0.1606,0.1669,,8201 +FULL,M7_full,fsts_c2,1.058,0.8248,0.1996,,8201 +FULL,M7_full,fsts_c3,-2.1114,0.8169,0.0098,***,8201 +FULL,M7_full,tci_z,0.1818,0.0228,0.0,***,8201 +FULL,M7_full,fsts_x_tci,-0.0089,0.1334,0.9469,,8201 +FULL,M7_full,fsts2_x_tci,-0.1302,0.2064,0.5283,,8201 +FULL,M7_full,dai_z,0.0339,0.0241,0.1589,,8201 +FULL,M7_full,fsts_x_dai,-0.3206,0.1437,0.0257,**,8201 +FULL,M7_full,fsts2_x_dai,0.5108,0.2279,0.025,**,8201 +CHN_2012,M3_cubic,fsts_c,1.1934,0.3059,0.0001,***,2684 +CHN_2012,M3_cubic,fsts_c2,-3.7721,1.5805,0.017,**,2684 +CHN_2012,M3_cubic,fsts_c3,2.4586,1.4907,0.0991,*,2684 +CHN_2012,M4_TCI,fsts_c,1.24,0.3026,0.0,***,2670 +CHN_2012,M4_TCI,fsts_c2,-3.6981,1.5618,0.0179,**,2670 +CHN_2012,M4_TCI,fsts_c3,2.2138,1.4701,0.1321,,2670 +CHN_2012,M4_TCI,tci_z,0.044,0.0325,0.1751,,2670 +CHN_2012,M4_TCI,fsts_x_tci,-0.5798,0.2367,0.0143,**,2670 +CHN_2012,M4_TCI,fsts2_x_tci,0.922,0.353,0.009,***,2670 +CHN_2012,M5_DAI,fsts_c,1.2281,0.2997,0.0,***,2684 +CHN_2012,M5_DAI,fsts_c2,-3.9984,1.5936,0.0121,**,2684 +CHN_2012,M5_DAI,fsts_c3,2.6169,1.5037,0.0818,*,2684 +CHN_2012,M5_DAI,dai_z,0.019,0.0324,0.5583,,2684 +CHN_2012,M5_DAI,fsts_x_dai,-0.2923,0.241,0.2252,,2684 +CHN_2012,M5_DAI,fsts2_x_dai,0.6725,0.3647,0.0651,*,2684 +CHN_2012,M7_full,fsts_c,1.2518,0.3062,0.0,***,2670 +CHN_2012,M7_full,fsts_c2,-3.9243,1.5931,0.0138,**,2670 +CHN_2012,M7_full,fsts_c3,2.4626,1.4954,0.0996,*,2670 +CHN_2012,M7_full,tci_z,0.042,0.0362,0.2464,,2670 +CHN_2012,M7_full,fsts_x_tci,-0.5492,0.2681,0.0405,**,2670 +CHN_2012,M7_full,fsts2_x_tci,0.7389,0.3974,0.063,*,2670 +CHN_2012,M7_full,dai_z,0.0104,0.0359,0.7723,,2670 +CHN_2012,M7_full,fsts_x_dai,-0.0297,0.2703,0.9124,,2670 +CHN_2012,M7_full,fsts2_x_dai,0.2771,0.4084,0.4974,,2670 +CHN_2024,M3_cubic,fsts_c,1.3127,0.4785,0.0061,***,1944 +CHN_2024,M3_cubic,fsts_c2,-2.8994,2.0481,0.1569,,1944 +CHN_2024,M3_cubic,fsts_c3,1.4447,1.8426,0.433,,1944 +CHN_2024,M4_TCI,fsts_c,0.7805,0.5457,0.1527,,1941 +CHN_2024,M4_TCI,fsts_c2,-0.5872,2.1378,0.7835,,1941 +CHN_2024,M4_TCI,fsts_c3,-0.4099,1.8594,0.8255,,1941 +CHN_2024,M4_TCI,tci_z,0.2944,0.0394,0.0,***,1941 +CHN_2024,M4_TCI,fsts_x_tci,-0.5368,0.3108,0.0842,*,1941 +CHN_2024,M4_TCI,fsts2_x_tci,0.3176,0.4714,0.5005,,1941 +CHN_2024,M5_DAI,fsts_c,0.8972,0.4968,0.0709,*,1944 +CHN_2024,M5_DAI,fsts_c2,-1.4651,2.0697,0.479,,1944 +CHN_2024,M5_DAI,fsts_c3,0.4577,1.8413,0.8037,,1944 +CHN_2024,M5_DAI,dai_z,0.1869,0.038,0.0,***,1944 +CHN_2024,M5_DAI,fsts_x_dai,0.1942,0.3043,0.5232,,1944 +CHN_2024,M5_DAI,fsts2_x_dai,-0.5702,0.4873,0.242,,1944 +CHN_2024,M7_full,fsts_c,0.7053,0.5321,0.185,,1941 +CHN_2024,M7_full,fsts_c2,-0.2637,2.1171,0.9009,,1941 +CHN_2024,M7_full,fsts_c3,-0.6704,1.8501,0.7171,,1941 +CHN_2024,M7_full,tci_z,0.2289,0.0494,0.0,***,1941 +CHN_2024,M7_full,fsts_x_tci,-0.9656,0.4521,0.0327,**,1941 +CHN_2024,M7_full,fsts2_x_tci,0.9961,0.6171,0.1065,,1941 +CHN_2024,M7_full,dai_z,0.1265,0.0467,0.0067,***,1941 +CHN_2024,M7_full,fsts_x_dai,0.5805,0.4438,0.1908,,1941 +CHN_2024,M7_full,fsts2_x_dai,-0.9992,0.6263,0.1106,,1941 +CHN_pooled,M3_cubic,fsts_c,1.1022,0.2585,0.0,***,4628 +CHN_pooled,M3_cubic,fsts_c2,-2.8834,1.2475,0.0208,**,4628 +CHN_pooled,M3_cubic,fsts_c3,1.6497,1.1604,0.1551,,4628 +CHN_pooled,M4_TCI,fsts_c,0.9259,0.2653,0.0005,***,4611 +CHN_pooled,M4_TCI,fsts_c2,-2.1541,1.2464,0.0839,*,4611 +CHN_pooled,M4_TCI,fsts_c3,1.0295,1.15,0.3707,,4611 +CHN_pooled,M4_TCI,tci_z,0.171,0.0247,0.0,***,4611 +CHN_pooled,M4_TCI,fsts_x_tci,-0.2914,0.183,0.1114,,4611 +CHN_pooled,M4_TCI,fsts2_x_tci,0.3138,0.2792,0.2611,,4611 +CHN_pooled,M5_DAI,fsts_c,1.0229,0.2551,0.0001,***,4628 +CHN_pooled,M5_DAI,fsts_c2,-2.8035,1.2495,0.0248,**,4628 +CHN_pooled,M5_DAI,fsts_c3,1.663,1.1636,0.1529,,4628 +CHN_pooled,M5_DAI,dai_z,0.1177,0.0241,0.0,***,4628 +CHN_pooled,M5_DAI,fsts_x_dai,0.1008,0.1806,0.5767,,4628 +CHN_pooled,M5_DAI,fsts2_x_dai,-0.1268,0.2902,0.6623,,4628 +CHN_pooled,M7_full,fsts_c,0.9398,0.2649,0.0004,***,4611 +CHN_pooled,M7_full,fsts_c2,-2.2967,1.2535,0.0669,*,4611 +CHN_pooled,M7_full,fsts_c3,1.1693,1.1548,0.3113,,4611 +CHN_pooled,M7_full,tci_z,0.1349,0.0293,0.0,***,4611 +CHN_pooled,M7_full,fsts_x_tci,-0.4673,0.2336,0.0454,**,4611 +CHN_pooled,M7_full,fsts2_x_tci,0.5495,0.3352,0.1012,,4611 +CHN_pooled,M7_full,dai_z,0.0701,0.0288,0.0148,**,4611 +CHN_pooled,M7_full,fsts_x_dai,0.2701,0.2322,0.2446,,4611 +CHN_pooled,M7_full,fsts2_x_dai,-0.3642,0.347,0.2939,,4611 +SGP_2023,M3_cubic,fsts_c,4.0877,0.8895,0.0,***,623 +SGP_2023,M3_cubic,fsts_c2,-6.1635,4.1369,0.1363,,623 +SGP_2023,M3_cubic,fsts_c3,3.2109,3.5807,0.3699,,623 +SGP_2023,M4_TCI,fsts_c,3.8582,0.9314,0.0,***,623 +SGP_2023,M4_TCI,fsts_c2,-5.536,4.1474,0.1819,,623 +SGP_2023,M4_TCI,fsts_c3,2.8891,3.6257,0.4255,,623 +SGP_2023,M4_TCI,tci_z,0.1681,0.0463,0.0003,***,623 +SGP_2023,M4_TCI,fsts_x_tci,-0.7491,0.421,0.0752,*,623 +SGP_2023,M4_TCI,fsts2_x_tci,0.5796,0.617,0.3475,,623 +SGP_2023,M5_DAI,fsts_c,4.1576,0.9362,0.0,***,623 +SGP_2023,M5_DAI,fsts_c2,-5.9088,4.1433,0.1538,,623 +SGP_2023,M5_DAI,fsts_c3,2.7713,3.5159,0.4306,,623 +SGP_2023,M5_DAI,dai_z,0.0332,0.0439,0.4503,,623 +SGP_2023,M5_DAI,fsts_x_dai,-0.9581,0.4346,0.0275,**,623 +SGP_2023,M5_DAI,fsts2_x_dai,1.1226,0.6257,0.0728,*,623 +SGP_2023,M7_full,fsts_c,4.0212,0.9413,0.0,***,623 +SGP_2023,M7_full,fsts_c2,-5.861,4.1791,0.1608,,623 +SGP_2023,M7_full,fsts_c3,3.0279,3.6263,0.4037,,623 +SGP_2023,M7_full,tci_z,0.2232,0.0591,0.0002,***,623 +SGP_2023,M7_full,fsts_x_tci,-0.0296,0.6061,0.9611,,623 +SGP_2023,M7_full,fsts2_x_tci,-0.4152,0.8438,0.6226,,623 +SGP_2023,M7_full,dai_z,-0.0891,0.0559,0.111,,623 +SGP_2023,M7_full,fsts_x_dai,-1.1671,0.6148,0.0576,*,623 +SGP_2023,M7_full,fsts2_x_dai,1.6218,0.8142,0.0464,**,623 +VNM_2009,M3_cubic,fsts_c,0.23,0.3593,0.522,,996 +VNM_2009,M3_cubic,fsts_c2,-4.0202,1.9035,0.0347,**,996 +VNM_2009,M3_cubic,fsts_c3,3.003,2.4578,0.2218,,996 +VNM_2009,M4_TCI,fsts_c,0.1022,0.3607,0.777,,992 +VNM_2009,M4_TCI,fsts_c2,-2.56,1.8177,0.159,,992 +VNM_2009,M4_TCI,fsts_c3,1.8415,2.345,0.4323,,992 +VNM_2009,M4_TCI,tci_z,0.3708,0.0889,0.0,***,992 +VNM_2009,M4_TCI,fsts_x_tci,0.146,0.2812,0.6037,,992 +VNM_2009,M4_TCI,fsts2_x_tci,-0.6074,0.5604,0.2785,,992 +VNM_2009,M5_DAI,fsts_c,0.2199,0.3582,0.5393,,996 +VNM_2009,M5_DAI,fsts_c2,-3.0965,1.8804,0.0996,*,996 +VNM_2009,M5_DAI,fsts_c3,2.1181,2.4349,0.3844,,996 +VNM_2009,M5_DAI,dai_z,0.2755,0.1135,0.0152,**,996 +VNM_2009,M5_DAI,fsts_x_dai,-0.0444,0.3518,0.8995,,996 +VNM_2009,M5_DAI,fsts2_x_dai,-0.1466,0.7124,0.8369,,996 +VNM_2009,M7_full,fsts_c,0.1032,0.3639,0.7768,,992 +VNM_2009,M7_full,fsts_c2,-2.5415,1.8172,0.1619,,992 +VNM_2009,M7_full,fsts_c3,1.9059,2.3661,0.4205,,992 +VNM_2009,M7_full,tci_z,0.388,0.1318,0.0032,***,992 +VNM_2009,M7_full,fsts_x_tci,0.418,0.4106,0.3087,,992 +VNM_2009,M7_full,fsts2_x_tci,-1.138,0.8113,0.1607,,992 +VNM_2009,M7_full,dai_z,-0.0018,0.1729,0.9919,,992 +VNM_2009,M7_full,fsts_x_dai,-0.6503,0.5327,0.2221,,992 +VNM_2009,M7_full,fsts2_x_dai,1.152,1.0597,0.277,,992 +VNM_2015,M3_cubic,fsts_c,0.6621,0.4237,0.1181,,968 +VNM_2015,M3_cubic,fsts_c2,0.4536,2.8215,0.8723,,968 +VNM_2015,M3_cubic,fsts_c3,-3.142,2.963,0.289,,968 +VNM_2015,M4_TCI,fsts_c,0.649,0.4487,0.148,,963 +VNM_2015,M4_TCI,fsts_c2,0.7875,2.8906,0.7853,,963 +VNM_2015,M4_TCI,fsts_c3,-3.5396,2.9993,0.2379,,963 +VNM_2015,M4_TCI,tci_z,0.069,0.07,0.3241,,963 +VNM_2015,M4_TCI,fsts_x_tci,-0.2337,0.3035,0.4413,,963 +VNM_2015,M4_TCI,fsts2_x_tci,0.3823,0.517,0.4597,,963 +VNM_2015,M5_DAI,fsts_c,0.7186,0.4473,0.1082,,967 +VNM_2015,M5_DAI,fsts_c2,0.4401,2.877,0.8784,,967 +VNM_2015,M5_DAI,fsts_c3,-3.1854,3.0225,0.2919,,967 +VNM_2015,M5_DAI,dai_z,0.0038,0.1007,0.9698,,967 +VNM_2015,M5_DAI,fsts_x_dai,-0.4427,0.4496,0.3248,,967 +VNM_2015,M5_DAI,fsts2_x_dai,0.6401,0.767,0.4039,,967 +VNM_2015,M7_full,fsts_c,0.7061,0.4535,0.1195,,962 +VNM_2015,M7_full,fsts_c2,0.8565,2.9114,0.7686,,962 +VNM_2015,M7_full,fsts_c3,-3.7622,3.0496,0.2173,,962 +VNM_2015,M7_full,tci_z,0.0794,0.0882,0.3678,,962 +VNM_2015,M7_full,fsts_x_tci,-0.0394,0.3793,0.9173,,962 +VNM_2015,M7_full,fsts2_x_tci,0.1915,0.6565,0.7705,,962 +VNM_2015,M7_full,dai_z,-0.0249,0.1277,0.8454,,962 +VNM_2015,M7_full,fsts_x_dai,-0.4883,0.5687,0.3905,,962 +VNM_2015,M7_full,fsts2_x_dai,0.4999,0.9904,0.6138,,962 +VNM_2023,M3_cubic,fsts_c,0.1625,0.4853,0.7378,,1014 +VNM_2023,M3_cubic,fsts_c2,5.5101,2.8528,0.0534,*,1014 +VNM_2023,M3_cubic,fsts_c3,-7.9597,2.9765,0.0075,***,1014 +VNM_2023,M4_TCI,fsts_c,0.0184,0.5306,0.9724,,1013 +VNM_2023,M4_TCI,fsts_c2,5.6174,2.858,0.0494,**,1013 +VNM_2023,M4_TCI,fsts_c3,-7.9013,3.0163,0.0088,***,1013 +VNM_2023,M4_TCI,tci_z,0.1473,0.0664,0.0266,**,1013 +VNM_2023,M4_TCI,fsts_x_tci,-0.2933,0.3398,0.3879,,1013 +VNM_2023,M4_TCI,fsts2_x_tci,0.3734,0.5041,0.4588,,1013 +VNM_2023,M5_DAI,fsts_c,0.1462,0.5266,0.7813,,1014 +VNM_2023,M5_DAI,fsts_c2,5.9427,2.862,0.0379,**,1014 +VNM_2023,M5_DAI,fsts_c3,-8.3854,2.9926,0.0051,***,1014 +VNM_2023,M5_DAI,dai_z,0.1137,0.0695,0.1021,,1014 +VNM_2023,M5_DAI,fsts_x_dai,-0.5228,0.3609,0.1474,,1014 +VNM_2023,M5_DAI,fsts2_x_dai,0.5552,0.5582,0.3199,,1014 +VNM_2023,M7_full,fsts_c,0.133,0.5291,0.8014,,1013 +VNM_2023,M7_full,fsts_c2,5.723,2.8719,0.0463,**,1013 +VNM_2023,M7_full,fsts_c3,-8.1994,3.0221,0.0067,***,1013 +VNM_2023,M7_full,tci_z,0.1327,0.0755,0.0788,*,1013 +VNM_2023,M7_full,fsts_x_tci,0.1087,0.394,0.7827,,1013 +VNM_2023,M7_full,fsts2_x_tci,-0.0598,0.576,0.9174,,1013 +VNM_2023,M7_full,dai_z,0.026,0.0777,0.7375,,1013 +VNM_2023,M7_full,fsts_x_dai,-0.7737,0.4114,0.0601,*,1013 +VNM_2023,M7_full,fsts2_x_dai,0.8365,0.6165,0.1749,,1013 +VNM_pooled,M3_cubic,fsts_c,0.4133,0.2178,0.0577,*,2978 +VNM_pooled,M3_cubic,fsts_c2,0.148,1.3218,0.9109,,2978 +VNM_pooled,M3_cubic,fsts_c3,-2.254,1.4826,0.1284,,2978 +VNM_pooled,M4_TCI,fsts_c,0.3464,0.2259,0.1252,,2968 +VNM_pooled,M4_TCI,fsts_c2,0.655,1.3154,0.6185,,2968 +VNM_pooled,M4_TCI,fsts_c3,-2.6814,1.4729,0.0687,*,2968 +VNM_pooled,M4_TCI,tci_z,0.1725,0.0413,0.0,***,2968 +VNM_pooled,M4_TCI,fsts_x_tci,-0.1764,0.1583,0.2653,,2968 +VNM_pooled,M4_TCI,fsts2_x_tci,0.1879,0.2718,0.4894,,2968 +VNM_pooled,M5_DAI,fsts_c,0.3964,0.2247,0.0778,*,2977 +VNM_pooled,M5_DAI,fsts_c2,0.4266,1.3156,0.7457,,2977 +VNM_pooled,M5_DAI,fsts_c3,-2.4683,1.4772,0.0947,*,2977 +VNM_pooled,M5_DAI,dai_z,0.1315,0.0513,0.0103,**,2977 +VNM_pooled,M5_DAI,fsts_x_dai,-0.2902,0.1968,0.1402,,2977 +VNM_pooled,M5_DAI,fsts2_x_dai,0.3566,0.3446,0.3008,,2977 +VNM_pooled,M7_full,fsts_c,0.3676,0.2259,0.1037,,2967 +VNM_pooled,M7_full,fsts_c2,0.7286,1.3109,0.5784,,2967 +VNM_pooled,M7_full,fsts_c3,-2.7781,1.4676,0.0584,*,2967 +VNM_pooled,M7_full,tci_z,0.1572,0.0516,0.0023,***,2967 +VNM_pooled,M7_full,fsts_x_tci,0.0157,0.196,0.936,,2967 +VNM_pooled,M7_full,fsts2_x_tci,-0.0588,0.3341,0.8603,,2967 +VNM_pooled,M7_full,dai_z,0.0428,0.0648,0.5087,,2967 +VNM_pooled,M7_full,fsts_x_dai,-0.4596,0.2482,0.0641,*,2967 +VNM_pooled,M7_full,fsts2_x_dai,0.5834,0.4277,0.1725,,2967 +P1_2009_2013,M3_cubic,fsts_c,0.4249,0.2009,0.0344,**,3680 +P1_2009_2013,M3_cubic,fsts_c2,-1.8776,1.0741,0.0805,*,3680 +P1_2009_2013,M3_cubic,fsts_c3,1.0023,1.088,0.357,,3680 +P1_2009_2013,M4_TCI,fsts_c,0.4094,0.2011,0.0418,**,3662 +P1_2009_2013,M4_TCI,fsts_c2,-1.7812,1.0796,0.099,*,3662 +P1_2009_2013,M4_TCI,fsts_c3,0.9039,1.1042,0.413,,3662 +P1_2009_2013,M4_TCI,tci_z,0.1031,0.0291,0.0004,***,3662 +P1_2009_2013,M4_TCI,fsts_x_tci,-0.4006,0.1556,0.01,**,3662 +P1_2009_2013,M4_TCI,fsts2_x_tci,0.6561,0.254,0.0098,***,3662 +P1_2009_2013,M5_DAI,fsts_c,0.4741,0.1983,0.0168,**,3680 +P1_2009_2013,M5_DAI,fsts_c2,-1.9566,1.071,0.0677,*,3680 +P1_2009_2013,M5_DAI,fsts_c3,1.0034,1.0808,0.3532,,3680 +P1_2009_2013,M5_DAI,dai_z,0.0369,0.0301,0.2205,,3680 +P1_2009_2013,M5_DAI,fsts_x_dai,-0.479,0.1623,0.0032,***,3680 +P1_2009_2013,M5_DAI,fsts2_x_dai,0.9609,0.2675,0.0003,***,3680 +P1_2009_2013,M7_full,fsts_c,0.4376,0.2011,0.0295,**,3662 +P1_2009_2013,M7_full,fsts_c2,-1.5121,1.0695,0.1574,,3662 +P1_2009_2013,M7_full,fsts_c3,0.5554,1.084,0.6084,,3662 +P1_2009_2013,M7_full,tci_z,0.1179,0.0341,0.0005,***,3662 +P1_2009_2013,M7_full,fsts_x_tci,-0.1792,0.1793,0.3176,,3662 +P1_2009_2013,M7_full,fsts2_x_tci,0.1543,0.2936,0.5991,,3662 +P1_2009_2013,M7_full,dai_z,-0.0161,0.0355,0.6509,,3662 +P1_2009_2013,M7_full,fsts_x_dai,-0.4696,0.1886,0.0128,**,3662 +P1_2009_2013,M7_full,fsts2_x_dai,0.9659,0.313,0.002,***,3662 +P2_2014_2018,M3_cubic,fsts_c,0.6621,0.4237,0.1181,,968 +P2_2014_2018,M3_cubic,fsts_c2,0.4536,2.8215,0.8723,,968 +P2_2014_2018,M3_cubic,fsts_c3,-3.142,2.963,0.289,,968 +P2_2014_2018,M4_TCI,fsts_c,0.649,0.4487,0.148,,963 +P2_2014_2018,M4_TCI,fsts_c2,0.7875,2.8906,0.7853,,963 +P2_2014_2018,M4_TCI,fsts_c3,-3.5396,2.9993,0.2379,,963 +P2_2014_2018,M4_TCI,tci_z,0.069,0.07,0.3241,,963 +P2_2014_2018,M4_TCI,fsts_x_tci,-0.2337,0.3035,0.4413,,963 +P2_2014_2018,M4_TCI,fsts2_x_tci,0.3823,0.517,0.4597,,963 +P2_2014_2018,M5_DAI,fsts_c,0.7186,0.4473,0.1082,,967 +P2_2014_2018,M5_DAI,fsts_c2,0.4401,2.877,0.8784,,967 +P2_2014_2018,M5_DAI,fsts_c3,-3.1854,3.0225,0.2919,,967 +P2_2014_2018,M5_DAI,dai_z,0.0038,0.1007,0.9698,,967 +P2_2014_2018,M5_DAI,fsts_x_dai,-0.4427,0.4496,0.3248,,967 +P2_2014_2018,M5_DAI,fsts2_x_dai,0.6401,0.767,0.4039,,967 +P2_2014_2018,M7_full,fsts_c,0.7061,0.4535,0.1195,,962 +P2_2014_2018,M7_full,fsts_c2,0.8565,2.9114,0.7686,,962 +P2_2014_2018,M7_full,fsts_c3,-3.7622,3.0496,0.2173,,962 +P2_2014_2018,M7_full,tci_z,0.0794,0.0882,0.3678,,962 +P2_2014_2018,M7_full,fsts_x_tci,-0.0394,0.3793,0.9173,,962 +P2_2014_2018,M7_full,fsts2_x_tci,0.1915,0.6565,0.7705,,962 +P2_2014_2018,M7_full,dai_z,-0.0249,0.1277,0.8454,,962 +P2_2014_2018,M7_full,fsts_x_dai,-0.4883,0.5687,0.3905,,962 +P2_2014_2018,M7_full,fsts2_x_dai,0.4999,0.9904,0.6138,,962 +P3_2019_2025,M3_cubic,fsts_c,0.5769,0.3206,0.072,*,3581 +P3_2019_2025,M3_cubic,fsts_c2,2.1799,1.5247,0.1528,,3581 +P3_2019_2025,M3_cubic,fsts_c3,-3.7347,1.4315,0.0091,***,3581 +P3_2019_2025,M4_TCI,fsts_c,0.2348,0.3453,0.4966,,3577 +P3_2019_2025,M4_TCI,fsts_c2,3.4136,1.5204,0.0248,**,3577 +P3_2019_2025,M4_TCI,fsts_c3,-4.6011,1.4039,0.001,***,3577 +P3_2019_2025,M4_TCI,tci_z,0.2578,0.0277,0.0,***,3577 +P3_2019_2025,M4_TCI,fsts_x_tci,-0.3726,0.206,0.0704,*,3577 +P3_2019_2025,M4_TCI,fsts2_x_tci,0.2209,0.3026,0.4654,,3577 +P3_2019_2025,M5_DAI,fsts_c,0.356,0.3422,0.2981,,3581 +P3_2019_2025,M5_DAI,fsts_c2,2.9991,1.5427,0.0519,*,3581 +P3_2019_2025,M5_DAI,fsts_c3,-4.3001,1.428,0.0026,***,3581 +P3_2019_2025,M5_DAI,dai_z,0.1632,0.0281,0.0,***,3581 +P3_2019_2025,M5_DAI,fsts_x_dai,-0.1944,0.2173,0.371,,3581 +P3_2019_2025,M5_DAI,fsts2_x_dai,0.0283,0.3331,0.9324,,3581 +P3_2019_2025,M7_full,fsts_c,0.208,0.3461,0.5479,,3577 +P3_2019_2025,M7_full,fsts_c2,3.5928,1.5265,0.0186,**,3577 +P3_2019_2025,M7_full,fsts_c3,-4.7581,1.4071,0.0007,***,3577 +P3_2019_2025,M7_full,tci_z,0.2337,0.0338,0.0,***,3577 +P3_2019_2025,M7_full,fsts_x_tci,-0.22,0.2762,0.4258,,3577 +P3_2019_2025,M7_full,fsts2_x_tci,0.0967,0.3898,0.8041,,3577 +P3_2019_2025,M7_full,dai_z,0.0615,0.0344,0.0736,*,3577 +P3_2019_2025,M7_full,fsts_x_dai,-0.2892,0.2913,0.3209,,3577 +P3_2019_2025,M7_full,fsts2_x_dai,0.2176,0.4222,0.6063,,3577 diff --git a/data/analysis/p7/p7_lm_by_country.csv b/data/analysis/p7/p7_lm_by_country.csv new file mode 100644 index 00000000..1d25a78a --- /dev/null +++ b/data/analysis/p7/p7_lm_by_country.csv @@ -0,0 +1,65 @@ +b1,b2,b3,tp1_pct,tp2_pct,disc,wald_p,sample,model,n +,,,,,,,CHN_2012,M0_controls,2684 +,,,,,,,CHN_2012,M1_linear,2684 +,,,,,,,CHN_2012,M2_quadratic,2684 +1.1934,-3.7721,2.4586,19.6,82.7,21.706198,0.0005,CHN_2012,M3_cubic,2684 +1.24,-3.6981,2.2138,20.6,90.8,21.761285,0.0001,CHN_2012,M4_TCI,2670 +1.2281,-3.9984,2.6169,18.8,83.0,25.382588,0.0001,CHN_2012,M5_DAI,2684 +1.0685,-3.4139,2.2079,19.2,83.8,18.308782,0.0018,CHN_2012,M6_TCI_DAI,2670 +1.2518,-3.9243,2.4626,19.5,86.7,24.6099,0.0001,CHN_2012,M7_full,2670 +,,,,,,,CHN_2024,M0_controls,1944 +,,,,,,,CHN_2024,M1_linear,1944 +,,,,,,,CHN_2024,M2_quadratic,1944 +1.3127,-2.8994,1.4447,28.9,104.9,10.868907,0.0184,CHN_2024,M3_cubic,1944 +0.7805,-0.5872,-0.4099,45.1,-140.6,5.218625,0.1699,CHN_2024,M4_TCI,1941 +0.8972,-1.4651,0.4577,37.1,176.3,3.657554,0.1592,CHN_2024,M5_DAI,1944 +0.5356,-0.4497,-0.3131,41.5,-137.3,2.82137,0.2835,CHN_2024,M6_TCI_DAI,1941 +0.7053,-0.2637,-0.6704,47.5,-73.8,5.951766,0.1693,CHN_2024,M7_full,1941 +,,,,,,,CHN_pooled,M0_controls,4628 +,,,,,,,CHN_pooled,M1_linear,4628 +,,,,,,,CHN_pooled,M2_quadratic,4628 +1.1022,-2.8834,1.6497,24.1,92.4,11.43505,0.0001,CHN_pooled,M3_cubic,4628 +0.9259,-2.1541,1.0295,26.5,113.0,7.123022,0.0007,CHN_pooled,M4_TCI,4611 +1.0229,-2.8035,1.663,22.9,89.5,11.027408,0.0002,CHN_pooled,M5_DAI,4628 +0.8314,-2.0727,1.0689,24.8,104.5,6.51988,0.0026,CHN_pooled,M6_TCI_DAI,4611 +0.9398,-2.2967,1.1693,25.4,105.6,7.911509,0.0006,CHN_pooled,M7_full,4611 +,,,,,,,SGP_2023,M0_controls,623 +,,,,,,,SGP_2023,M1_linear,623 +,,,,,,,SGP_2023,M2_quadratic,623 +4.0877,-6.1635,3.2109,,,-5.544746,0.0023,SGP_2023,M3_cubic,623 +3.8582,-5.536,2.8891,,,-11.171399,0.038,SGP_2023,M4_TCI,623 +4.1576,-5.9088,2.7713,64.0,78.2,1.393982,0.0042,SGP_2023,M5_DAI,623 +3.6615,-4.9226,2.2723,,,-2.910656,0.0062,SGP_2023,M6_TCI_DAI,623 +4.0212,-5.861,3.0279,,,-8.700844,0.021,SGP_2023,M7_full,623 +,,,,,,,VNM_2009,M0_controls,996 +,,,,,,,VNM_2009,M1_linear,996 +,,,,,,,VNM_2009,M2_quadratic,996 +0.23,-4.0202,3.003,3.0,86.3,56.358387,0.0084,VNM_2009,M3_cubic,996 +0.1022,-2.56,1.8415,2.0,90.6,23.95649,0.1238,VNM_2009,M4_TCI,992 +0.2199,-3.0965,2.1181,3.7,93.8,32.765217,0.0356,VNM_2009,M5_DAI,996 +0.15,-2.889,2.1814,2.7,85.6,29.458391,0.07,VNM_2009,M6_TCI_DAI,992 +0.1032,-2.5415,1.9059,2.1,86.8,23.477167,0.1421,VNM_2009,M7_full,992 +,,,,,,,VNM_2015,M0_controls,968 +,,,,,,,VNM_2015,M1_linear,968 +,,,,,,,VNM_2015,M2_quadratic,968 +0.6621,0.4536,-3.142,31.7,-22.1,25.786254,0.0004,VNM_2015,M3_cubic,968 +0.649,0.7875,-3.5396,33.2,-18.4,30.048925,0.0005,VNM_2015,M4_TCI,963 +0.7186,0.4401,-3.1854,32.4,-23.2,28.243612,0.0006,VNM_2015,M5_DAI,967 +0.5743,0.9095,-3.4834,33.7,-16.3,27.312812,0.0008,VNM_2015,M6_TCI_DAI,962 +0.7061,0.8565,-3.7622,33.7,-18.5,34.812014,0.0004,VNM_2015,M7_full,962 +,,,,,,,VNM_2023,M0_controls,1014 +,,,,,,,VNM_2023,M1_linear,1014 +,,,,,,,VNM_2023,M2_quadratic,1014 +0.1625,5.5101,-7.9597,47.6,-1.4,136.962706,0.0005,VNM_2023,M3_cubic,1014 +0.0184,5.6174,-7.9013,47.6,-0.2,127.96553,0.0035,VNM_2023,M4_TCI,1013 +0.1462,5.9427,-8.3854,48.4,-1.2,155.974265,0.0011,VNM_2023,M5_DAI,1014 +-0.2613,5.9447,-7.7973,48.5,2.3,116.904473,0.0057,VNM_2023,M6_TCI_DAI,1013 +0.133,5.723,-8.1994,47.7,-1.1,144.103125,0.0015,VNM_2023,M7_full,1013 +,,,,,,,VNM_pooled,M0_controls,2978 +,,,,,,,VNM_pooled,M1_linear,2978 +,,,,,,,VNM_pooled,M2_quadratic,2978 +0.4133,0.148,-2.254,27.0,-22.6,11.266959,0.0,VNM_pooled,M3_cubic,2978 +0.3464,0.655,-2.6814,30.4,-14.1,12.860988,0.0,VNM_pooled,M4_TCI,2968 +0.3964,0.4266,-2.4683,29.6,-18.1,12.468774,0.0,VNM_pooled,M5_DAI,2977 +0.2954,0.516,-2.383,28.8,-14.4,9.51262,0.0,VNM_pooled,M6_TCI_DAI,2967 +0.3676,0.7286,-2.7781,31.5,-14.0,14.376972,0.0,VNM_pooled,M7_full,2967 diff --git a/data/analysis/p7/p7_lm_full.csv b/data/analysis/p7/p7_lm_full.csv new file mode 100644 index 00000000..9938c76e --- /dev/null +++ b/data/analysis/p7/p7_lm_full.csv @@ -0,0 +1,9 @@ +b1,b2,b3,tp1_pct,tp2_pct,disc,wald_p,sample,model,n,lm_p_quad,tp_quad_pct +,,,,,,,FULL,M0_controls,8229,, +,,,,,,,FULL,M1_linear,8229,, +,,,,,,,FULL,M2_quadratic,8229,0.0002,21.5 +0.3264,0.6186,-1.7925,38.7,-15.7,8.551856,0.0,FULL,M3_cubic,8229,0.8404,-26.4 +0.2041,1.1085,-2.1554,41.8,-7.5,10.192625,0.0,FULL,M4_TCI,8202,0.9409,-9.2 +0.312,0.6276,-1.7725,38.7,-15.1,8.211977,0.0,FULL,M5_DAI,8228,0.842,-24.9 +0.1841,0.9375,-1.9356,40.2,-7.9,7.79177,0.0,FULL,M6_TCI_DAI,8201,0.9098,-9.8 +0.2219,1.058,-2.1114,41.8,-8.4,10.100505,0.0,FULL,M7_full,8201,0.9344,-10.5 diff --git a/data/analysis/p7/p7_lm_tests.csv b/data/analysis/p7/p7_lm_tests.csv new file mode 100644 index 00000000..e1e0e157 --- /dev/null +++ b/data/analysis/p7/p7_lm_tests.csv @@ -0,0 +1,73 @@ +b1,b2,b3,tp1_pct,tp2_pct,disc,wald_p,sample,model,n,lm_p_quad,tp_quad_pct +,,,,,,,FULL,M0_controls,8229,, +,,,,,,,FULL,M1_linear,8229,, +,,,,,,,FULL,M2_quadratic,8229,0.0002,21.5 +0.3264,0.6186,-1.7925,38.7,-15.7,8.551856,0.0,FULL,M3_cubic,8229,0.8404,-26.4 +0.2041,1.1085,-2.1554,41.8,-7.5,10.192625,0.0,FULL,M4_TCI,8202,0.9409,-9.2 +0.312,0.6276,-1.7725,38.7,-15.1,8.211977,0.0,FULL,M5_DAI,8228,0.842,-24.9 +0.1841,0.9375,-1.9356,40.2,-7.9,7.79177,0.0,FULL,M6_TCI_DAI,8201,0.9098,-9.8 +0.2219,1.058,-2.1114,41.8,-8.4,10.100505,0.0,FULL,M7_full,8201,0.9344,-10.5 +,,,,,,,CHN_2012,M0_controls,2684,, +,,,,,,,CHN_2012,M1_linear,2684,, +,,,,,,,CHN_2012,M2_quadratic,2684,, +1.1934,-3.7721,2.4586,19.6,82.7,21.706198,0.0005,CHN_2012,M3_cubic,2684,, +1.24,-3.6981,2.2138,20.6,90.8,21.761285,0.0001,CHN_2012,M4_TCI,2670,, +1.2281,-3.9984,2.6169,18.8,83.0,25.382588,0.0001,CHN_2012,M5_DAI,2684,, +1.0685,-3.4139,2.2079,19.2,83.8,18.308782,0.0018,CHN_2012,M6_TCI_DAI,2670,, +1.2518,-3.9243,2.4626,19.5,86.7,24.6099,0.0001,CHN_2012,M7_full,2670,, +,,,,,,,CHN_2024,M0_controls,1944,, +,,,,,,,CHN_2024,M1_linear,1944,, +,,,,,,,CHN_2024,M2_quadratic,1944,, +1.3127,-2.8994,1.4447,28.9,104.9,10.868907,0.0184,CHN_2024,M3_cubic,1944,, +0.7805,-0.5872,-0.4099,45.1,-140.6,5.218625,0.1699,CHN_2024,M4_TCI,1941,, +0.8972,-1.4651,0.4577,37.1,176.3,3.657554,0.1592,CHN_2024,M5_DAI,1944,, +0.5356,-0.4497,-0.3131,41.5,-137.3,2.82137,0.2835,CHN_2024,M6_TCI_DAI,1941,, +0.7053,-0.2637,-0.6704,47.5,-73.8,5.951766,0.1693,CHN_2024,M7_full,1941,, +,,,,,,,CHN_pooled,M0_controls,4628,, +,,,,,,,CHN_pooled,M1_linear,4628,, +,,,,,,,CHN_pooled,M2_quadratic,4628,, +1.1022,-2.8834,1.6497,24.1,92.4,11.43505,0.0001,CHN_pooled,M3_cubic,4628,, +0.9259,-2.1541,1.0295,26.5,113.0,7.123022,0.0007,CHN_pooled,M4_TCI,4611,, +1.0229,-2.8035,1.663,22.9,89.5,11.027408,0.0002,CHN_pooled,M5_DAI,4628,, +0.8314,-2.0727,1.0689,24.8,104.5,6.51988,0.0026,CHN_pooled,M6_TCI_DAI,4611,, +0.9398,-2.2967,1.1693,25.4,105.6,7.911509,0.0006,CHN_pooled,M7_full,4611,, +,,,,,,,SGP_2023,M0_controls,623,, +,,,,,,,SGP_2023,M1_linear,623,, +,,,,,,,SGP_2023,M2_quadratic,623,, +4.0877,-6.1635,3.2109,,,-5.544746,0.0023,SGP_2023,M3_cubic,623,, +3.8582,-5.536,2.8891,,,-11.171399,0.038,SGP_2023,M4_TCI,623,, +4.1576,-5.9088,2.7713,64.0,78.2,1.393982,0.0042,SGP_2023,M5_DAI,623,, +3.6615,-4.9226,2.2723,,,-2.910656,0.0062,SGP_2023,M6_TCI_DAI,623,, +4.0212,-5.861,3.0279,,,-8.700844,0.021,SGP_2023,M7_full,623,, +,,,,,,,VNM_2009,M0_controls,996,, +,,,,,,,VNM_2009,M1_linear,996,, +,,,,,,,VNM_2009,M2_quadratic,996,, +0.23,-4.0202,3.003,3.0,86.3,56.358387,0.0084,VNM_2009,M3_cubic,996,, +0.1022,-2.56,1.8415,2.0,90.6,23.95649,0.1238,VNM_2009,M4_TCI,992,, +0.2199,-3.0965,2.1181,3.7,93.8,32.765217,0.0356,VNM_2009,M5_DAI,996,, +0.15,-2.889,2.1814,2.7,85.6,29.458391,0.07,VNM_2009,M6_TCI_DAI,992,, +0.1032,-2.5415,1.9059,2.1,86.8,23.477167,0.1421,VNM_2009,M7_full,992,, +,,,,,,,VNM_2015,M0_controls,968,, +,,,,,,,VNM_2015,M1_linear,968,, +,,,,,,,VNM_2015,M2_quadratic,968,, +0.6621,0.4536,-3.142,31.7,-22.1,25.786254,0.0004,VNM_2015,M3_cubic,968,, +0.649,0.7875,-3.5396,33.2,-18.4,30.048925,0.0005,VNM_2015,M4_TCI,963,, +0.7186,0.4401,-3.1854,32.4,-23.2,28.243612,0.0006,VNM_2015,M5_DAI,967,, +0.5743,0.9095,-3.4834,33.7,-16.3,27.312812,0.0008,VNM_2015,M6_TCI_DAI,962,, +0.7061,0.8565,-3.7622,33.7,-18.5,34.812014,0.0004,VNM_2015,M7_full,962,, +,,,,,,,VNM_2023,M0_controls,1014,, +,,,,,,,VNM_2023,M1_linear,1014,, +,,,,,,,VNM_2023,M2_quadratic,1014,, +0.1625,5.5101,-7.9597,47.6,-1.4,136.962706,0.0005,VNM_2023,M3_cubic,1014,, +0.0184,5.6174,-7.9013,47.6,-0.2,127.96553,0.0035,VNM_2023,M4_TCI,1013,, +0.1462,5.9427,-8.3854,48.4,-1.2,155.974265,0.0011,VNM_2023,M5_DAI,1014,, +-0.2613,5.9447,-7.7973,48.5,2.3,116.904473,0.0057,VNM_2023,M6_TCI_DAI,1013,, +0.133,5.723,-8.1994,47.7,-1.1,144.103125,0.0015,VNM_2023,M7_full,1013,, +,,,,,,,VNM_pooled,M0_controls,2978,, +,,,,,,,VNM_pooled,M1_linear,2978,, +,,,,,,,VNM_pooled,M2_quadratic,2978,, +0.4133,0.148,-2.254,27.0,-22.6,11.266959,0.0,VNM_pooled,M3_cubic,2978,, +0.3464,0.655,-2.6814,30.4,-14.1,12.860988,0.0,VNM_pooled,M4_TCI,2968,, +0.3964,0.4266,-2.4683,29.6,-18.1,12.468774,0.0,VNM_pooled,M5_DAI,2977,, +0.2954,0.516,-2.383,28.8,-14.4,9.51262,0.0,VNM_pooled,M6_TCI_DAI,2967,, +0.3676,0.7286,-2.7781,31.5,-14.0,14.376972,0.0,VNM_pooled,M7_full,2967,, diff --git a/data/analysis/p7/p7_m0m7_by_country.csv b/data/analysis/p7/p7_m0m7_by_country.csv new file mode 100644 index 00000000..c49658c7 --- /dev/null +++ b/data/analysis/p7/p7_m0m7_by_country.csv @@ -0,0 +1,513 @@ +sample,model,variable,coef,se,t,p,stars,ci_lo,ci_hi,n,r2,adj_r2 +CHN_2012,M0_controls,const,13.798,0.1683,81.985,0.0,***,13.4682,14.1279,2684,0.0284,0.0273 +CHN_2012,M0_controls,log_emp,-0.0874,0.0176,-4.967,0.0,***,-0.1219,-0.0529,2684,0.0284,0.0273 +CHN_2012,M0_controls,firm_age,-0.4933,0.0711,-6.936,0.0,***,-0.6327,-0.3539,2684,0.0284,0.0273 +CHN_2012,M0_controls,fdi10,0.126,0.0882,1.429,0.1531,,-0.0468,0.2988,2684,0.0284,0.0273 +CHN_2012,M1_linear,const,13.8085,0.1692,81.616,0.0,***,13.4769,14.1401,2684,0.0289,0.0275 +CHN_2012,M1_linear,fsts_c,0.1079,0.092,1.173,0.2408,,-0.0724,0.2882,2684,0.0289,0.0275 +CHN_2012,M1_linear,log_emp,-0.09,0.0179,-5.044,0.0,***,-0.125,-0.0551,2684,0.0289,0.0275 +CHN_2012,M1_linear,firm_age,-0.4925,0.0711,-6.93,0.0,***,-0.6318,-0.3532,2684,0.0289,0.0275 +CHN_2012,M1_linear,fdi10,0.1059,0.0901,1.175,0.2398,,-0.0707,0.2824,2684,0.0289,0.0275 +CHN_2012,M2_quadratic,const,13.9292,0.1708,81.537,0.0,***,13.5943,14.264,2684,0.0335,0.0316 +CHN_2012,M2_quadratic,fsts_c,0.8488,0.2248,3.775,0.0002,***,0.4081,1.2895,2684,0.0335,0.0316 +CHN_2012,M2_quadratic,fsts_c2,-1.203,0.3458,-3.479,0.0005,***,-1.8807,-0.5254,2684,0.0335,0.0316 +CHN_2012,M2_quadratic,log_emp,-0.0989,0.0179,-5.522,0.0,***,-0.134,-0.0638,2684,0.0335,0.0316 +CHN_2012,M2_quadratic,firm_age,-0.4975,0.0708,-7.032,0.0,***,-0.6362,-0.3589,2684,0.0335,0.0316 +CHN_2012,M2_quadratic,fdi10,0.0826,0.0899,0.919,0.3581,,-0.0936,0.2588,2684,0.0335,0.0316 +CHN_2012,M3_cubic,const,14.0008,0.1784,78.472,0.0,***,13.6511,14.3505,2684,0.0344,0.0322 +CHN_2012,M3_cubic,fsts_c,1.1934,0.3059,3.901,0.0001,***,0.5939,1.7929,2684,0.0344,0.0322 +CHN_2012,M3_cubic,fsts_c2,-3.7721,1.5805,-2.387,0.017,**,-6.8698,-0.6744,2684,0.0344,0.0322 +CHN_2012,M3_cubic,fsts_c3,2.4586,1.4907,1.649,0.0991,*,-0.4631,5.3803,2684,0.0344,0.0322 +CHN_2012,M3_cubic,log_emp,-0.1005,0.0179,-5.62,0.0,***,-0.1356,-0.0655,2684,0.0344,0.0322 +CHN_2012,M3_cubic,firm_age,-0.4974,0.0706,-7.041,0.0,***,-0.6359,-0.359,2684,0.0344,0.0322 +CHN_2012,M3_cubic,fdi10,0.0843,0.0899,0.938,0.3482,,-0.0919,0.2606,2684,0.0344,0.0322 +CHN_2012,M4_TCI,const,14.0413,0.1775,79.103,0.0,***,13.6934,14.3892,2670,0.0447,0.0414 +CHN_2012,M4_TCI,fsts_c,1.24,0.3026,4.098,0.0,***,0.6469,1.8331,2670,0.0447,0.0414 +CHN_2012,M4_TCI,fsts_c2,-3.6981,1.5618,-2.368,0.0179,**,-6.7591,-0.637,2670,0.0447,0.0414 +CHN_2012,M4_TCI,fsts_c3,2.2138,1.4701,1.506,0.1321,,-0.6676,5.0951,2670,0.0447,0.0414 +CHN_2012,M4_TCI,tci_z,0.044,0.0325,1.356,0.1751,,-0.0196,0.1076,2670,0.0447,0.0414 +CHN_2012,M4_TCI,fsts_x_tci,-0.5798,0.2367,-2.45,0.0143,**,-1.0437,-0.116,2670,0.0447,0.0414 +CHN_2012,M4_TCI,fsts2_x_tci,0.922,0.353,2.612,0.009,***,0.2301,1.6139,2670,0.0447,0.0414 +CHN_2012,M4_TCI,log_emp,-0.1189,0.0185,-6.441,0.0,***,-0.1551,-0.0827,2670,0.0447,0.0414 +CHN_2012,M4_TCI,firm_age,-0.4709,0.071,-6.636,0.0,***,-0.61,-0.3318,2670,0.0447,0.0414 +CHN_2012,M4_TCI,fdi10,0.0762,0.0894,0.852,0.394,,-0.0991,0.2515,2670,0.0447,0.0414 +CHN_2012,M5_DAI,const,13.9772,0.1768,79.051,0.0,***,13.6306,14.3237,2684,0.0391,0.0359 +CHN_2012,M5_DAI,fsts_c,1.2281,0.2997,4.098,0.0,***,0.6407,1.8156,2684,0.0391,0.0359 +CHN_2012,M5_DAI,fsts_c2,-3.9984,1.5936,-2.509,0.0121,**,-7.1217,-0.8751,2684,0.0391,0.0359 +CHN_2012,M5_DAI,fsts_c3,2.6169,1.5037,1.74,0.0818,*,-0.3303,5.564,2684,0.0391,0.0359 +CHN_2012,M5_DAI,dai_z,0.019,0.0324,0.585,0.5583,,-0.0446,0.0826,2684,0.0391,0.0359 +CHN_2012,M5_DAI,fsts_x_dai,-0.2923,0.241,-1.213,0.2252,,-0.7646,0.1801,2684,0.0391,0.0359 +CHN_2012,M5_DAI,fsts2_x_dai,0.6725,0.3647,1.844,0.0651,*,-0.0422,1.3873,2684,0.0391,0.0359 +CHN_2012,M5_DAI,log_emp,-0.106,0.0181,-5.87,0.0,***,-0.1414,-0.0706,2684,0.0391,0.0359 +CHN_2012,M5_DAI,firm_age,-0.4682,0.0706,-6.627,0.0,***,-0.6067,-0.3298,2684,0.0391,0.0359 +CHN_2012,M5_DAI,fdi10,0.0848,0.0894,0.949,0.3428,,-0.0905,0.2602,2684,0.0391,0.0359 +CHN_2012,M6_TCI_DAI,const,14.013,0.1787,78.412,0.0,***,13.6627,14.3633,2670,0.0425,0.0396 +CHN_2012,M6_TCI_DAI,fsts_c,1.0685,0.3078,3.471,0.0005,***,0.4652,1.6718,2670,0.0425,0.0396 +CHN_2012,M6_TCI_DAI,fsts_c2,-3.4139,1.5805,-2.16,0.0308,**,-6.5116,-0.3162,2670,0.0425,0.0396 +CHN_2012,M6_TCI_DAI,fsts_c3,2.2079,1.4853,1.486,0.1371,,-0.7032,5.119,2670,0.0425,0.0396 +CHN_2012,M6_TCI_DAI,tci_z,0.094,0.0258,3.646,0.0003,***,0.0435,0.1445,2670,0.0425,0.0396 +CHN_2012,M6_TCI_DAI,dai_z,0.0229,0.0249,0.919,0.3579,,-0.0259,0.0716,2670,0.0425,0.0396 +CHN_2012,M6_TCI_DAI,log_emp,-0.1201,0.0185,-6.496,0.0,***,-0.1564,-0.0839,2670,0.0425,0.0396 +CHN_2012,M6_TCI_DAI,firm_age,-0.4647,0.0714,-6.51,0.0,***,-0.6046,-0.3248,2670,0.0425,0.0396 +CHN_2012,M6_TCI_DAI,fdi10,0.0562,0.0899,0.625,0.532,,-0.12,0.2323,2670,0.0425,0.0396 +CHN_2012,M7_full,const,14.0283,0.1781,78.766,0.0,***,13.6792,14.3773,2670,0.0456,0.0413 +CHN_2012,M7_full,fsts_c,1.2518,0.3062,4.088,0.0,***,0.6517,1.8519,2670,0.0456,0.0413 +CHN_2012,M7_full,fsts_c2,-3.9243,1.5931,-2.463,0.0138,**,-7.0468,-0.8019,2670,0.0456,0.0413 +CHN_2012,M7_full,fsts_c3,2.4626,1.4954,1.647,0.0996,*,-0.4684,5.3936,2670,0.0456,0.0413 +CHN_2012,M7_full,tci_z,0.042,0.0362,1.159,0.2464,,-0.029,0.1131,2670,0.0456,0.0413 +CHN_2012,M7_full,fsts_x_tci,-0.5492,0.2681,-2.048,0.0405,**,-1.0747,-0.0237,2670,0.0456,0.0413 +CHN_2012,M7_full,fsts2_x_tci,0.7389,0.3974,1.859,0.063,*,-0.04,1.5178,2670,0.0456,0.0413 +CHN_2012,M7_full,dai_z,0.0104,0.0359,0.289,0.7723,,-0.0601,0.0809,2670,0.0456,0.0413 +CHN_2012,M7_full,fsts_x_dai,-0.0297,0.2703,-0.11,0.9124,,-0.5595,0.5,2670,0.0456,0.0413 +CHN_2012,M7_full,fsts2_x_dai,0.2771,0.4084,0.679,0.4974,,-0.5233,1.0775,2670,0.0456,0.0413 +CHN_2012,M7_full,log_emp,-0.1192,0.0185,-6.456,0.0,***,-0.1553,-0.083,2670,0.0456,0.0413 +CHN_2012,M7_full,firm_age,-0.4611,0.0712,-6.477,0.0,***,-0.6007,-0.3216,2670,0.0456,0.0413 +CHN_2012,M7_full,fdi10,0.0774,0.0895,0.864,0.3874,,-0.098,0.2527,2670,0.0456,0.0413 +CHN_2024,M0_controls,const,13.0779,0.1677,77.972,0.0,***,12.7491,13.4066,1944,0.0531,0.0516 +CHN_2024,M0_controls,log_emp,0.1293,0.0212,6.096,0.0,***,0.0877,0.1709,1944,0.0531,0.0516 +CHN_2024,M0_controls,firm_age,-0.3127,0.0696,-4.494,0.0,***,-0.449,-0.1763,1944,0.0531,0.0516 +CHN_2024,M0_controls,fdi10,0.2076,0.1127,1.841,0.0656,*,-0.0134,0.4285,1944,0.0531,0.0516 +CHN_2024,M1_linear,const,13.1006,0.169,77.52,0.0,***,12.7693,13.4318,1944,0.0538,0.0519 +CHN_2024,M1_linear,fsts_c,0.1568,0.1189,1.318,0.1875,,-0.0764,0.3899,1944,0.0538,0.0519 +CHN_2024,M1_linear,log_emp,0.1258,0.0214,5.88,0.0,***,0.0838,0.1677,1944,0.0538,0.0519 +CHN_2024,M1_linear,firm_age,-0.3176,0.0699,-4.546,0.0,***,-0.4545,-0.1806,1944,0.0538,0.0519 +CHN_2024,M1_linear,fdi10,0.1789,0.1156,1.548,0.1216,,-0.0476,0.4055,1944,0.0538,0.0519 +CHN_2024,M2_quadratic,const,13.1941,0.1718,76.787,0.0,***,12.8574,13.5309,1944,0.0564,0.054 +CHN_2024,M2_quadratic,fsts_c,1.0242,0.3448,2.97,0.003,***,0.3483,1.7,1944,0.0564,0.054 +CHN_2024,M2_quadratic,fsts_c2,-1.2778,0.4985,-2.564,0.0104,**,-2.2548,-0.3009,1944,0.0564,0.054 +CHN_2024,M2_quadratic,log_emp,0.1163,0.0219,5.32,0.0,***,0.0735,0.1592,1944,0.0564,0.054 +CHN_2024,M2_quadratic,firm_age,-0.3118,0.0698,-4.471,0.0,***,-0.4486,-0.1751,1944,0.0564,0.054 +CHN_2024,M2_quadratic,fdi10,0.1809,0.1138,1.589,0.1121,,-0.0422,0.404,1944,0.0564,0.054 +CHN_2024,M3_cubic,const,13.235,0.1765,75.003,0.0,***,12.8891,13.5808,1944,0.0566,0.0537 +CHN_2024,M3_cubic,fsts_c,1.3127,0.4785,2.743,0.0061,***,0.3748,2.2505,1944,0.0566,0.0537 +CHN_2024,M3_cubic,fsts_c2,-2.8994,2.0481,-1.416,0.1569,,-6.9136,1.1148,1944,0.0566,0.0537 +CHN_2024,M3_cubic,fsts_c3,1.4447,1.8426,0.784,0.433,,-2.1668,5.0562,1944,0.0566,0.0537 +CHN_2024,M3_cubic,log_emp,0.115,0.0219,5.247,0.0,***,0.072,0.1579,1944,0.0566,0.0537 +CHN_2024,M3_cubic,firm_age,-0.3118,0.0698,-4.468,0.0,***,-0.4486,-0.175,1944,0.0566,0.0537 +CHN_2024,M3_cubic,fdi10,0.1788,0.1141,1.567,0.1171,,-0.0448,0.4025,1944,0.0566,0.0537 +CHN_2024,M4_TCI,const,13.4405,0.1769,75.976,0.0,***,13.0937,13.7872,1941,0.0985,0.0943 +CHN_2024,M4_TCI,fsts_c,0.7805,0.5457,1.43,0.1527,,-0.2891,1.8501,1941,0.0985,0.0943 +CHN_2024,M4_TCI,fsts_c2,-0.5872,2.1378,-0.275,0.7835,,-4.7772,3.6027,1941,0.0985,0.0943 +CHN_2024,M4_TCI,fsts_c3,-0.4099,1.8594,-0.22,0.8255,,-4.0543,3.2344,1941,0.0985,0.0943 +CHN_2024,M4_TCI,tci_z,0.2944,0.0394,7.467,0.0,***,0.2171,0.3717,1941,0.0985,0.0943 +CHN_2024,M4_TCI,fsts_x_tci,-0.5368,0.3108,-1.727,0.0842,*,-1.146,0.0725,1941,0.0985,0.0943 +CHN_2024,M4_TCI,fsts2_x_tci,0.3176,0.4714,0.674,0.5005,,-0.6063,1.2415,1941,0.0985,0.0943 +CHN_2024,M4_TCI,log_emp,0.0327,0.023,1.423,0.1548,,-0.0123,0.0776,1941,0.0985,0.0943 +CHN_2024,M4_TCI,firm_age,-0.2813,0.0683,-4.122,0.0,***,-0.4151,-0.1475,1941,0.0985,0.0943 +CHN_2024,M4_TCI,fdi10,0.0724,0.1167,0.621,0.5348,,-0.1562,0.3011,1941,0.0985,0.0943 +CHN_2024,M5_DAI,const,13.2621,0.1781,74.458,0.0,***,12.913,13.6112,1944,0.0694,0.0651 +CHN_2024,M5_DAI,fsts_c,0.8972,0.4968,1.806,0.0709,*,-0.0765,1.8709,1944,0.0694,0.0651 +CHN_2024,M5_DAI,fsts_c2,-1.4651,2.0697,-0.708,0.479,,-5.5215,2.5914,1944,0.0694,0.0651 +CHN_2024,M5_DAI,fsts_c3,0.4577,1.8413,0.249,0.8037,,-3.1511,4.0665,1944,0.0694,0.0651 +CHN_2024,M5_DAI,dai_z,0.1869,0.038,4.918,0.0,***,0.1124,0.2614,1944,0.0694,0.0651 +CHN_2024,M5_DAI,fsts_x_dai,0.1942,0.3043,0.638,0.5232,,-0.4021,0.7906,1944,0.0694,0.0651 +CHN_2024,M5_DAI,fsts2_x_dai,-0.5702,0.4873,-1.17,0.242,,-1.5253,0.3849,1944,0.0694,0.0651 +CHN_2024,M5_DAI,log_emp,0.0814,0.0232,3.5,0.0005,***,0.0358,0.1269,1944,0.0694,0.0651 +CHN_2024,M5_DAI,firm_age,-0.2795,0.0691,-4.043,0.0001,***,-0.4149,-0.144,1944,0.0694,0.0651 +CHN_2024,M5_DAI,fdi10,0.1163,0.1146,1.015,0.3103,,-0.1084,0.3409,1944,0.0694,0.0651 +CHN_2024,M6_TCI_DAI,const,13.4206,0.1736,77.299,0.0,***,13.0803,13.7608,1941,0.096,0.0923 +CHN_2024,M6_TCI_DAI,fsts_c,0.5356,0.4848,1.105,0.2693,,-0.4146,1.4859,1941,0.096,0.0923 +CHN_2024,M6_TCI_DAI,fsts_c2,-0.4497,2.0446,-0.22,0.8259,,-4.4571,3.5577,1941,0.096,0.0923 +CHN_2024,M6_TCI_DAI,fsts_c3,-0.3131,1.8237,-0.172,0.8637,,-3.8875,3.2613,1941,0.096,0.0923 +CHN_2024,M6_TCI_DAI,tci_z,0.2775,0.0337,8.245,0.0,***,0.2116,0.3435,1941,0.096,0.0923 +CHN_2024,M6_TCI_DAI,dai_z,0.0645,0.033,1.953,0.0508,*,-0.0002,0.1293,1941,0.096,0.0923 +CHN_2024,M6_TCI_DAI,log_emp,0.0263,0.0236,1.115,0.2648,,-0.0199,0.0725,1941,0.096,0.0923 +CHN_2024,M6_TCI_DAI,firm_age,-0.2704,0.0677,-3.992,0.0001,***,-0.4031,-0.1376,1941,0.096,0.0923 +CHN_2024,M6_TCI_DAI,fdi10,0.0133,0.1165,0.114,0.9093,,-0.215,0.2415,1941,0.096,0.0923 +CHN_2024,M7_full,const,13.4409,0.1769,75.981,0.0,***,13.0942,13.7876,1941,0.1019,0.0963 +CHN_2024,M7_full,fsts_c,0.7053,0.5321,1.326,0.185,,-0.3376,1.7482,1941,0.1019,0.0963 +CHN_2024,M7_full,fsts_c2,-0.2637,2.1171,-0.125,0.9009,,-4.413,3.8857,1941,0.1019,0.0963 +CHN_2024,M7_full,fsts_c3,-0.6704,1.8501,-0.362,0.7171,,-4.2965,2.9558,1941,0.1019,0.0963 +CHN_2024,M7_full,tci_z,0.2289,0.0494,4.631,0.0,***,0.132,0.3258,1941,0.1019,0.0963 +CHN_2024,M7_full,fsts_x_tci,-0.9656,0.4521,-2.136,0.0327,**,-1.8516,-0.0795,1941,0.1019,0.0963 +CHN_2024,M7_full,fsts2_x_tci,0.9961,0.6171,1.614,0.1065,,-0.2133,2.2056,1941,0.1019,0.0963 +CHN_2024,M7_full,dai_z,0.1265,0.0467,2.71,0.0067,***,0.035,0.218,1941,0.1019,0.0963 +CHN_2024,M7_full,fsts_x_dai,0.5805,0.4438,1.308,0.1908,,-0.2893,1.4504,1941,0.1019,0.0963 +CHN_2024,M7_full,fsts2_x_dai,-0.9992,0.6263,-1.595,0.1106,,-2.2268,0.2284,1941,0.1019,0.0963 +CHN_2024,M7_full,log_emp,0.0251,0.0236,1.06,0.2892,,-0.0213,0.0714,1941,0.1019,0.0963 +CHN_2024,M7_full,firm_age,-0.2698,0.0678,-3.98,0.0001,***,-0.4026,-0.1369,1941,0.1019,0.0963 +CHN_2024,M7_full,fdi10,0.0529,0.1165,0.454,0.6497,,-0.1754,0.2812,1941,0.1019,0.0963 +CHN_pooled,M0_controls,const,13.2777,0.1257,105.658,0.0,***,13.0314,13.524,4628,0.0632,0.0624 +CHN_pooled,M0_controls,log_emp,0.0136,0.0137,0.992,0.3214,,-0.0132,0.0403,4628,0.0632,0.0624 +CHN_pooled,M0_controls,firm_age,-0.4408,0.0499,-8.84,0.0,***,-0.5386,-0.3431,4628,0.0632,0.0624 +CHN_pooled,M0_controls,fdi10,0.1765,0.0699,2.525,0.0116,**,0.0395,0.3136,4628,0.0632,0.0624 +CHN_pooled,M1_linear,const,13.294,0.1266,104.998,0.0,***,13.0458,13.5421,4628,0.0638,0.0628 +CHN_pooled,M1_linear,fsts_c,0.123,0.0731,1.683,0.0924,*,-0.0203,0.2664,4628,0.0638,0.0628 +CHN_pooled,M1_linear,log_emp,0.0107,0.0138,0.775,0.4383,,-0.0164,0.0378,4628,0.0638,0.0628 +CHN_pooled,M1_linear,firm_age,-0.4425,0.0499,-8.862,0.0,***,-0.5404,-0.3447,4628,0.0638,0.0628 +CHN_pooled,M1_linear,fdi10,0.1539,0.0716,2.15,0.0316,**,0.0136,0.2942,4628,0.0638,0.0628 +CHN_pooled,M2_quadratic,const,13.3954,0.1282,104.5,0.0,***,13.1442,13.6467,4628,0.0667,0.0655 +CHN_pooled,M2_quadratic,fsts_c,0.8415,0.1899,4.43,0.0,***,0.4692,1.2137,4628,0.0667,0.0655 +CHN_pooled,M2_quadratic,fsts_c2,-1.1206,0.284,-3.946,0.0001,***,-1.6772,-0.564,4628,0.0667,0.0655 +CHN_pooled,M2_quadratic,log_emp,0.0026,0.0139,0.184,0.8544,,-0.0248,0.0299,4628,0.0667,0.0655 +CHN_pooled,M2_quadratic,firm_age,-0.442,0.0498,-8.875,0.0,***,-0.5396,-0.3444,4628,0.0667,0.0655 +CHN_pooled,M2_quadratic,fdi10,0.1421,0.0711,1.999,0.0456,**,0.0028,0.2815,4628,0.0667,0.0655 +CHN_pooled,M3_cubic,const,13.4469,0.1336,100.653,0.0,***,13.185,13.7087,4628,0.0671,0.0656 +CHN_pooled,M3_cubic,fsts_c,1.1022,0.2585,4.263,0.0,***,0.5955,1.6089,4628,0.0671,0.0656 +CHN_pooled,M3_cubic,fsts_c2,-2.8834,1.2475,-2.311,0.0208,**,-5.3284,-0.4383,4628,0.0671,0.0656 +CHN_pooled,M3_cubic,fsts_c3,1.6497,1.1604,1.422,0.1551,,-0.6247,3.9241,4628,0.0671,0.0656 +CHN_pooled,M3_cubic,log_emp,0.0014,0.014,0.103,0.9181,,-0.0259,0.0288,4628,0.0671,0.0656 +CHN_pooled,M3_cubic,firm_age,-0.4422,0.0498,-8.88,0.0,***,-0.5398,-0.3446,4628,0.0671,0.0656 +CHN_pooled,M3_cubic,fdi10,0.1414,0.0712,1.988,0.0468,**,0.002,0.2809,4628,0.0671,0.0656 +CHN_pooled,M4_TCI,const,13.543,0.1327,102.085,0.0,***,13.2829,13.803,4611,0.087,0.085 +CHN_pooled,M4_TCI,fsts_c,0.9259,0.2653,3.49,0.0005,***,0.4059,1.4459,4611,0.087,0.085 +CHN_pooled,M4_TCI,fsts_c2,-2.1541,1.2464,-1.728,0.0839,*,-4.5971,0.2888,4611,0.087,0.085 +CHN_pooled,M4_TCI,fsts_c3,1.0295,1.15,0.895,0.3707,,-1.2245,3.2835,4611,0.087,0.085 +CHN_pooled,M4_TCI,tci_z,0.171,0.0247,6.935,0.0,***,0.1226,0.2193,4611,0.087,0.085 +CHN_pooled,M4_TCI,fsts_x_tci,-0.2914,0.183,-1.592,0.1114,,-0.65,0.0673,4611,0.087,0.085 +CHN_pooled,M4_TCI,fsts2_x_tci,0.3138,0.2792,1.124,0.2611,,-0.2335,0.8611,4611,0.087,0.085 +CHN_pooled,M4_TCI,log_emp,-0.041,0.0144,-2.842,0.0045,***,-0.0693,-0.0127,4611,0.087,0.085 +CHN_pooled,M4_TCI,firm_age,-0.405,0.0494,-8.195,0.0,***,-0.5019,-0.3082,4611,0.087,0.085 +CHN_pooled,M4_TCI,fdi10,0.0877,0.0708,1.24,0.215,,-0.051,0.2264,4611,0.087,0.085 +CHN_pooled,M5_DAI,const,13.4554,0.1326,101.511,0.0,***,13.1956,13.7152,4628,0.0743,0.0723 +CHN_pooled,M5_DAI,fsts_c,1.0229,0.2551,4.009,0.0001,***,0.5228,1.5229,4628,0.0743,0.0723 +CHN_pooled,M5_DAI,fsts_c2,-2.8035,1.2495,-2.244,0.0248,**,-5.2525,-0.3546,4628,0.0743,0.0723 +CHN_pooled,M5_DAI,fsts_c3,1.663,1.1636,1.429,0.1529,,-0.6176,3.9436,4628,0.0743,0.0723 +CHN_pooled,M5_DAI,dai_z,0.1177,0.0241,4.88,0.0,***,0.0704,0.165,4628,0.0743,0.0723 +CHN_pooled,M5_DAI,fsts_x_dai,0.1008,0.1806,0.558,0.5767,,-0.2531,0.4547,4628,0.0743,0.0723 +CHN_pooled,M5_DAI,fsts2_x_dai,-0.1268,0.2902,-0.437,0.6623,,-0.6956,0.442,4628,0.0743,0.0723 +CHN_pooled,M5_DAI,log_emp,-0.0163,0.0143,-1.139,0.2547,,-0.0444,0.0118,4628,0.0743,0.0723 +CHN_pooled,M5_DAI,firm_age,-0.4095,0.0496,-8.261,0.0,***,-0.5067,-0.3124,4628,0.0743,0.0723 +CHN_pooled,M5_DAI,fdi10,0.1081,0.0708,1.526,0.1269,,-0.0307,0.2468,4628,0.0743,0.0723 +CHN_pooled,M6_TCI_DAI,const,13.524,0.1322,102.333,0.0,***,13.265,13.783,4611,0.0874,0.0856 +CHN_pooled,M6_TCI_DAI,fsts_c,0.8314,0.2608,3.188,0.0014,***,0.3202,1.3426,4611,0.0874,0.0856 +CHN_pooled,M6_TCI_DAI,fsts_c2,-2.0727,1.2409,-1.67,0.0949,*,-4.5048,0.3595,4611,0.0874,0.0856 +CHN_pooled,M6_TCI_DAI,fsts_c3,1.0689,1.1462,0.933,0.351,,-1.1776,3.3153,4611,0.0874,0.0856 +CHN_pooled,M6_TCI_DAI,tci_z,0.1699,0.0204,8.319,0.0,***,0.1299,0.21,4611,0.0874,0.0856 +CHN_pooled,M6_TCI_DAI,dai_z,0.0444,0.0199,2.227,0.026,**,0.0053,0.0834,4611,0.0874,0.0856 +CHN_pooled,M6_TCI_DAI,log_emp,-0.044,0.0145,-3.025,0.0025,***,-0.0725,-0.0155,4611,0.0874,0.0856 +CHN_pooled,M6_TCI_DAI,firm_age,-0.3938,0.0493,-7.981,0.0,***,-0.4905,-0.2971,4611,0.0874,0.0856 +CHN_pooled,M6_TCI_DAI,fdi10,0.0702,0.0707,0.994,0.3204,,-0.0683,0.2087,4611,0.0874,0.0856 +CHN_pooled,M7_full,const,13.5431,0.1325,102.18,0.0,***,13.2833,13.8029,4611,0.0882,0.0857 +CHN_pooled,M7_full,fsts_c,0.9398,0.2649,3.548,0.0004,***,0.4206,1.4591,4611,0.0882,0.0857 +CHN_pooled,M7_full,fsts_c2,-2.2967,1.2535,-1.832,0.0669,*,-4.7535,0.1602,4611,0.0882,0.0857 +CHN_pooled,M7_full,fsts_c3,1.1693,1.1548,1.012,0.3113,,-1.0942,3.4327,4611,0.0882,0.0857 +CHN_pooled,M7_full,tci_z,0.1349,0.0293,4.596,0.0,***,0.0774,0.1924,4611,0.0882,0.0857 +CHN_pooled,M7_full,fsts_x_tci,-0.4673,0.2336,-2.001,0.0454,**,-0.9251,-0.0095,4611,0.0882,0.0857 +CHN_pooled,M7_full,fsts2_x_tci,0.5495,0.3352,1.639,0.1012,,-0.1075,1.2065,4611,0.0882,0.0857 +CHN_pooled,M7_full,dai_z,0.0701,0.0288,2.436,0.0148,**,0.0137,0.1265,4611,0.0882,0.0857 +CHN_pooled,M7_full,fsts_x_dai,0.2701,0.2322,1.164,0.2446,,-0.1849,0.7251,4611,0.0882,0.0857 +CHN_pooled,M7_full,fsts2_x_dai,-0.3642,0.347,-1.05,0.2939,,-1.0444,0.3159,4611,0.0882,0.0857 +CHN_pooled,M7_full,log_emp,-0.0439,0.0145,-3.02,0.0025,***,-0.0724,-0.0154,4611,0.0882,0.0857 +CHN_pooled,M7_full,firm_age,-0.3965,0.0494,-8.034,0.0,***,-0.4932,-0.2998,4611,0.0882,0.0857 +CHN_pooled,M7_full,fdi10,0.0808,0.0707,1.143,0.2532,,-0.0578,0.2194,4611,0.0882,0.0857 +SGP_2023,M0_controls,const,11.8186,0.2625,45.023,0.0,***,11.3041,12.3331,623,0.0422,0.0376 +SGP_2023,M0_controls,log_emp,-0.1409,0.0372,-3.788,0.0002,***,-0.2137,-0.068,623,0.0422,0.0376 +SGP_2023,M0_controls,firm_age,-0.0737,0.1208,-0.611,0.5414,,-0.3104,0.1629,623,0.0422,0.0376 +SGP_2023,M0_controls,fdi10,0.3622,0.0934,3.877,0.0001,***,0.1791,0.5452,623,0.0422,0.0376 +SGP_2023,M1_linear,const,11.6438,0.2289,50.875,0.0,***,11.1952,12.0923,623,0.1605,0.1551 +SGP_2023,M1_linear,fsts_c,1.8549,0.2266,8.185,0.0,***,1.4107,2.2991,623,0.1605,0.1551 +SGP_2023,M1_linear,log_emp,-0.1451,0.0368,-3.947,0.0001,***,-0.2172,-0.0731,623,0.1605,0.1551 +SGP_2023,M1_linear,firm_age,0.0437,0.1008,0.433,0.6647,,-0.1539,0.2412,623,0.1605,0.1551 +SGP_2023,M1_linear,fdi10,0.261,0.0864,3.02,0.0025,***,0.0916,0.4304,623,0.1605,0.1551 +SGP_2023,M2_quadratic,const,11.641,0.2231,52.169,0.0,***,11.2037,12.0784,623,0.1767,0.1701 +SGP_2023,M2_quadratic,fsts_c,3.4838,0.5128,6.794,0.0,***,2.4788,4.4888,623,0.1767,0.1701 +SGP_2023,M2_quadratic,fsts_c2,-2.6754,0.7617,-3.512,0.0004,***,-4.1683,-1.1825,623,0.1767,0.1701 +SGP_2023,M2_quadratic,log_emp,-0.1379,0.0364,-3.791,0.0001,***,-0.2091,-0.0666,623,0.1767,0.1701 +SGP_2023,M2_quadratic,firm_age,0.0871,0.0989,0.881,0.3786,,-0.1067,0.2809,623,0.1767,0.1701 +SGP_2023,M2_quadratic,fdi10,0.2591,0.0857,3.022,0.0025,***,0.0911,0.4271,623,0.1767,0.1701 +SGP_2023,M3_cubic,const,11.7234,0.2405,48.749,0.0,***,11.2521,12.1948,623,0.1779,0.1699 +SGP_2023,M3_cubic,fsts_c,4.0877,0.8895,4.595,0.0,***,2.3442,5.8311,623,0.1779,0.1699 +SGP_2023,M3_cubic,fsts_c2,-6.1635,4.1369,-1.49,0.1363,,-14.2716,1.9446,623,0.1779,0.1699 +SGP_2023,M3_cubic,fsts_c3,3.2109,3.5807,0.897,0.3699,,-3.8073,10.229,623,0.1779,0.1699 +SGP_2023,M3_cubic,log_emp,-0.1402,0.0364,-3.85,0.0001,***,-0.2115,-0.0688,623,0.1779,0.1699 +SGP_2023,M3_cubic,firm_age,0.0777,0.0992,0.784,0.4331,,-0.1166,0.2721,623,0.1779,0.1699 +SGP_2023,M3_cubic,fdi10,0.261,0.0857,3.045,0.0023,***,0.093,0.4289,623,0.1779,0.1699 +SGP_2023,M4_TCI,const,12.0183,0.2443,49.197,0.0,***,11.5395,12.4971,623,0.2091,0.1975 +SGP_2023,M4_TCI,fsts_c,3.8582,0.9314,4.142,0.0,***,2.0327,5.6838,623,0.2091,0.1975 +SGP_2023,M4_TCI,fsts_c2,-5.536,4.1474,-1.335,0.1819,,-13.6647,2.5926,623,0.2091,0.1975 +SGP_2023,M4_TCI,fsts_c3,2.8891,3.6257,0.797,0.4255,,-4.2171,9.9953,623,0.2091,0.1975 +SGP_2023,M4_TCI,tci_z,0.1681,0.0463,3.628,0.0003,***,0.0773,0.2588,623,0.2091,0.1975 +SGP_2023,M4_TCI,fsts_x_tci,-0.7491,0.421,-1.779,0.0752,*,-1.5743,0.076,623,0.2091,0.1975 +SGP_2023,M4_TCI,fsts2_x_tci,0.5796,0.617,0.939,0.3475,,-0.6296,1.7888,623,0.2091,0.1975 +SGP_2023,M4_TCI,log_emp,-0.1977,0.0375,-5.276,0.0,***,-0.2711,-0.1242,623,0.2091,0.1975 +SGP_2023,M4_TCI,firm_age,0.0191,0.1004,0.19,0.8491,,-0.1777,0.216,623,0.2091,0.1975 +SGP_2023,M4_TCI,fdi10,0.2425,0.0853,2.843,0.0045,***,0.0753,0.4096,623,0.2091,0.1975 +SGP_2023,M5_DAI,const,11.7826,0.2405,48.987,0.0,***,11.3112,12.2541,623,0.1883,0.1764 +SGP_2023,M5_DAI,fsts_c,4.1576,0.9362,4.441,0.0,***,2.3227,5.9924,623,0.1883,0.1764 +SGP_2023,M5_DAI,fsts_c2,-5.9088,4.1433,-1.426,0.1538,,-14.0294,2.2119,623,0.1883,0.1764 +SGP_2023,M5_DAI,fsts_c3,2.7713,3.5159,0.788,0.4306,,-4.1198,9.6623,623,0.1883,0.1764 +SGP_2023,M5_DAI,dai_z,0.0332,0.0439,0.755,0.4503,,-0.053,0.1193,623,0.1883,0.1764 +SGP_2023,M5_DAI,fsts_x_dai,-0.9581,0.4346,-2.205,0.0275,**,-1.8099,-0.1063,623,0.1883,0.1764 +SGP_2023,M5_DAI,fsts2_x_dai,1.1226,0.6257,1.794,0.0728,*,-0.1038,2.349,623,0.1883,0.1764 +SGP_2023,M5_DAI,log_emp,-0.1461,0.0368,-3.97,0.0001,***,-0.2182,-0.074,623,0.1883,0.1764 +SGP_2023,M5_DAI,firm_age,0.0617,0.0996,0.619,0.5357,,-0.1335,0.2568,623,0.1883,0.1764 +SGP_2023,M5_DAI,fdi10,0.2682,0.0854,3.14,0.0017,***,0.1008,0.4357,623,0.1883,0.1764 +SGP_2023,M6_TCI_DAI,const,11.9062,0.2392,49.773,0.0,***,11.4374,12.3751,623,0.2012,0.1908 +SGP_2023,M6_TCI_DAI,fsts_c,3.6615,0.922,3.971,0.0001,***,1.8544,5.4685,623,0.2012,0.1908 +SGP_2023,M6_TCI_DAI,fsts_c2,-4.9226,4.238,-1.162,0.2454,,-13.2288,3.3836,623,0.2012,0.1908 +SGP_2023,M6_TCI_DAI,fsts_c3,2.2723,3.6452,0.623,0.5331,,-4.8722,9.4168,623,0.2012,0.1908 +SGP_2023,M6_TCI_DAI,tci_z,0.1823,0.0519,3.513,0.0004,***,0.0806,0.284,623,0.2012,0.1908 +SGP_2023,M6_TCI_DAI,dai_z,-0.0211,0.0437,-0.483,0.629,,-0.1068,0.0645,623,0.2012,0.1908 +SGP_2023,M6_TCI_DAI,log_emp,-0.1931,0.038,-5.083,0.0,***,-0.2676,-0.1187,623,0.2012,0.1908 +SGP_2023,M6_TCI_DAI,firm_age,0.0582,0.1001,0.581,0.5609,,-0.138,0.2544,623,0.2012,0.1908 +SGP_2023,M6_TCI_DAI,fdi10,0.2484,0.0855,2.905,0.0037,***,0.0808,0.4159,623,0.2012,0.1908 +SGP_2023,M7_full,const,12.0446,0.2449,49.172,0.0,***,11.5645,12.5247,623,0.2136,0.1981 +SGP_2023,M7_full,fsts_c,4.0212,0.9413,4.272,0.0,***,2.1762,5.8662,623,0.2136,0.1981 +SGP_2023,M7_full,fsts_c2,-5.861,4.1791,-1.402,0.1608,,-14.0519,2.3299,623,0.2136,0.1981 +SGP_2023,M7_full,fsts_c3,3.0279,3.6263,0.835,0.4037,,-4.0796,10.1354,623,0.2136,0.1981 +SGP_2023,M7_full,tci_z,0.2232,0.0591,3.778,0.0002,***,0.1074,0.339,623,0.2136,0.1981 +SGP_2023,M7_full,fsts_x_tci,-0.0296,0.6061,-0.049,0.9611,,-1.2176,1.1584,623,0.2136,0.1981 +SGP_2023,M7_full,fsts2_x_tci,-0.4152,0.8438,-0.492,0.6226,,-2.069,1.2385,623,0.2136,0.1981 +SGP_2023,M7_full,dai_z,-0.0891,0.0559,-1.594,0.111,,-0.1986,0.0205,623,0.2136,0.1981 +SGP_2023,M7_full,fsts_x_dai,-1.1671,0.6148,-1.898,0.0576,*,-2.3721,0.0378,623,0.2136,0.1981 +SGP_2023,M7_full,fsts2_x_dai,1.6218,0.8142,1.992,0.0464,**,0.026,3.2176,623,0.2136,0.1981 +SGP_2023,M7_full,log_emp,-0.1963,0.0385,-5.093,0.0,***,-0.2719,-0.1208,623,0.2136,0.1981 +SGP_2023,M7_full,firm_age,0.01,0.1009,0.099,0.9212,,-0.1878,0.2078,623,0.2136,0.1981 +SGP_2023,M7_full,fdi10,0.2424,0.0856,2.833,0.0046,***,0.0747,0.4102,623,0.2136,0.1981 +VNM_2009,M0_controls,const,20.756,0.3167,65.535,0.0,***,20.1352,21.3767,996,0.028,0.025 +VNM_2009,M0_controls,log_emp,-0.1366,0.0286,-4.769,0.0,***,-0.1927,-0.0805,996,0.028,0.025 +VNM_2009,M0_controls,firm_age,-0.4317,0.1383,-3.121,0.0018,***,-0.7028,-0.1606,996,0.028,0.025 +VNM_2009,M0_controls,fdi10,0.273,0.1339,2.038,0.0415,**,0.0105,0.5355,996,0.028,0.025 +VNM_2009,M1_linear,const,20.4099,0.3287,62.089,0.0,***,19.7656,21.0541,996,0.0466,0.0428 +VNM_2009,M1_linear,fsts_c,-0.5219,0.1342,-3.891,0.0001,***,-0.7849,-0.259,996,0.0466,0.0428 +VNM_2009,M1_linear,log_emp,-0.0833,0.0317,-2.627,0.0086,***,-0.1455,-0.0212,996,0.0466,0.0428 +VNM_2009,M1_linear,firm_age,-0.3722,0.1359,-2.739,0.0062,***,-0.6385,-0.1058,996,0.0466,0.0428 +VNM_2009,M1_linear,fdi10,0.3996,0.1352,2.956,0.0031,***,0.1346,0.6646,996,0.0466,0.0428 +VNM_2009,M2_quadratic,const,20.6648,0.3322,62.198,0.0,***,20.0136,21.316,996,0.0542,0.0495 +VNM_2009,M2_quadratic,fsts_c,0.347,0.3388,1.024,0.3057,,-0.317,1.011,996,0.0542,0.0495 +VNM_2009,M2_quadratic,fsts_c2,-1.7545,0.645,-2.72,0.0065,***,-3.0187,-0.4903,996,0.0542,0.0495 +VNM_2009,M2_quadratic,log_emp,-0.0927,0.0315,-2.939,0.0033,***,-0.1545,-0.0309,996,0.0542,0.0495 +VNM_2009,M2_quadratic,firm_age,-0.3509,0.1358,-2.584,0.0098,***,-0.6171,-0.0847,996,0.0542,0.0495 +VNM_2009,M2_quadratic,fdi10,0.3859,0.133,2.902,0.0037,***,0.1253,0.6465,996,0.0542,0.0495 +VNM_2009,M3_cubic,const,20.8113,0.3537,58.842,0.0,***,20.1181,21.5045,996,0.0557,0.05 +VNM_2009,M3_cubic,fsts_c,0.23,0.3593,0.64,0.522,,-0.4741,0.9341,996,0.0557,0.05 +VNM_2009,M3_cubic,fsts_c2,-4.0202,1.9035,-2.112,0.0347,**,-7.7509,-0.2894,996,0.0557,0.05 +VNM_2009,M3_cubic,fsts_c3,3.003,2.4578,1.222,0.2218,,-1.8141,7.8202,996,0.0557,0.05 +VNM_2009,M3_cubic,log_emp,-0.097,0.0318,-3.054,0.0023,***,-0.1593,-0.0348,996,0.0557,0.05 +VNM_2009,M3_cubic,firm_age,-0.3553,0.1358,-2.616,0.0089,***,-0.6215,-0.0891,996,0.0557,0.05 +VNM_2009,M3_cubic,fdi10,0.3733,0.1337,2.792,0.0052,***,0.1112,0.6353,996,0.0557,0.05 +VNM_2009,M4_TCI,const,20.8935,0.3532,59.154,0.0,***,20.2013,21.5858,992,0.0965,0.0882 +VNM_2009,M4_TCI,fsts_c,0.1022,0.3607,0.283,0.777,,-0.6048,0.8091,992,0.0965,0.0882 +VNM_2009,M4_TCI,fsts_c2,-2.56,1.8177,-1.408,0.159,,-6.1225,1.0026,992,0.0965,0.0882 +VNM_2009,M4_TCI,fsts_c3,1.8415,2.345,0.785,0.4323,,-2.7547,6.4376,992,0.0965,0.0882 +VNM_2009,M4_TCI,tci_z,0.3708,0.0889,4.172,0.0,***,0.1966,0.545,992,0.0965,0.0882 +VNM_2009,M4_TCI,fsts_x_tci,0.146,0.2812,0.519,0.6037,,-0.4052,0.6971,992,0.0965,0.0882 +VNM_2009,M4_TCI,fsts2_x_tci,-0.6074,0.5604,-1.084,0.2785,,-1.7058,0.4911,992,0.0965,0.0882 +VNM_2009,M4_TCI,log_emp,-0.181,0.0343,-5.268,0.0,***,-0.2483,-0.1136,992,0.0965,0.0882 +VNM_2009,M4_TCI,firm_age,-0.2883,0.1337,-2.156,0.0311,**,-0.5505,-0.0262,992,0.0965,0.0882 +VNM_2009,M4_TCI,fdi10,0.3215,0.1293,2.487,0.0129,**,0.0681,0.5748,992,0.0965,0.0882 +VNM_2009,M5_DAI,const,20.7367,0.3492,59.388,0.0,***,20.0523,21.4211,996,0.0939,0.0856 +VNM_2009,M5_DAI,fsts_c,0.2199,0.3582,0.614,0.5393,,-0.4822,0.922,996,0.0939,0.0856 +VNM_2009,M5_DAI,fsts_c2,-3.0965,1.8804,-1.647,0.0996,*,-6.7821,0.589,996,0.0939,0.0856 +VNM_2009,M5_DAI,fsts_c3,2.1181,2.4349,0.87,0.3844,,-2.6543,6.8905,996,0.0939,0.0856 +VNM_2009,M5_DAI,dai_z,0.2755,0.1135,2.428,0.0152,**,0.0531,0.4979,996,0.0939,0.0856 +VNM_2009,M5_DAI,fsts_x_dai,-0.0444,0.3518,-0.126,0.8995,,-0.7339,0.645,996,0.0939,0.0856 +VNM_2009,M5_DAI,fsts2_x_dai,-0.1466,0.7124,-0.206,0.8369,,-1.5429,1.2497,996,0.0939,0.0856 +VNM_2009,M5_DAI,log_emp,-0.1399,0.0319,-4.383,0.0,***,-0.2024,-0.0773,996,0.0939,0.0856 +VNM_2009,M5_DAI,firm_age,-0.2624,0.1352,-1.94,0.0523,*,-0.5275,0.0027,996,0.0939,0.0856 +VNM_2009,M5_DAI,fdi10,0.3858,0.1276,3.023,0.0025,***,0.1357,0.636,996,0.0939,0.0856 +VNM_2009,M6_TCI_DAI,const,20.8828,0.3497,59.713,0.0,***,20.1974,21.5683,992,0.1083,0.101 +VNM_2009,M6_TCI_DAI,fsts_c,0.15,0.353,0.425,0.6708,,-0.5418,0.8419,992,0.1083,0.101 +VNM_2009,M6_TCI_DAI,fsts_c2,-2.889,1.8021,-1.603,0.1089,,-6.4212,0.6431,992,0.1083,0.101 +VNM_2009,M6_TCI_DAI,fsts_c3,2.1814,2.3505,0.928,0.3534,,-2.4255,6.7884,992,0.1083,0.101 +VNM_2009,M6_TCI_DAI,tci_z,0.2102,0.0452,4.647,0.0,***,0.1215,0.2988,992,0.1083,0.101 +VNM_2009,M6_TCI_DAI,dai_z,0.1773,0.0431,4.111,0.0,***,0.0928,0.2619,992,0.1083,0.101 +VNM_2009,M6_TCI_DAI,log_emp,-0.1884,0.0338,-5.573,0.0,***,-0.2546,-0.1221,992,0.1083,0.101 +VNM_2009,M6_TCI_DAI,firm_age,-0.2526,0.1339,-1.886,0.0593,*,-0.515,0.0099,992,0.1083,0.101 +VNM_2009,M6_TCI_DAI,fdi10,0.3336,0.1267,2.632,0.0085,***,0.0852,0.582,992,0.1083,0.101 +VNM_2009,M7_full,const,20.8248,0.3546,58.721,0.0,***,20.1298,21.5199,992,0.114,0.1031 +VNM_2009,M7_full,fsts_c,0.1032,0.3639,0.284,0.7768,,-0.6101,0.8164,992,0.114,0.1031 +VNM_2009,M7_full,fsts_c2,-2.5415,1.8172,-1.399,0.1619,,-6.1032,1.0201,992,0.114,0.1031 +VNM_2009,M7_full,fsts_c3,1.9059,2.3661,0.806,0.4205,,-2.7315,6.5433,992,0.114,0.1031 +VNM_2009,M7_full,tci_z,0.388,0.1318,2.943,0.0032,***,0.1296,0.6463,992,0.114,0.1031 +VNM_2009,M7_full,fsts_x_tci,0.418,0.4106,1.018,0.3087,,-0.3867,1.2227,992,0.114,0.1031 +VNM_2009,M7_full,fsts2_x_tci,-1.138,0.8113,-1.403,0.1607,,-2.7282,0.4521,992,0.114,0.1031 +VNM_2009,M7_full,dai_z,-0.0018,0.1729,-0.01,0.9919,,-0.3406,0.3371,992,0.114,0.1031 +VNM_2009,M7_full,fsts_x_dai,-0.6503,0.5327,-1.221,0.2221,,-1.6943,0.3937,992,0.114,0.1031 +VNM_2009,M7_full,fsts2_x_dai,1.152,1.0597,1.087,0.277,,-0.925,3.229,992,0.114,0.1031 +VNM_2009,M7_full,log_emp,-0.1914,0.0342,-5.592,0.0,***,-0.2585,-0.1243,992,0.114,0.1031 +VNM_2009,M7_full,firm_age,-0.2316,0.1348,-1.719,0.0857,*,-0.4957,0.0325,992,0.114,0.1031 +VNM_2009,M7_full,fdi10,0.3315,0.1266,2.619,0.0088,***,0.0834,0.5795,992,0.114,0.1031 +VNM_2015,M0_controls,const,21.5144,0.3589,59.953,0.0,***,20.811,22.2177,968,0.0175,0.0144 +VNM_2015,M0_controls,log_emp,-0.1043,0.0313,-3.334,0.0009,***,-0.1657,-0.043,968,0.0175,0.0144 +VNM_2015,M0_controls,firm_age,-0.5652,0.1619,-3.492,0.0005,***,-0.8824,-0.248,968,0.0175,0.0144 +VNM_2015,M0_controls,fdi10,0.0253,0.1531,0.165,0.8689,,-0.2748,0.3254,968,0.0175,0.0144 +VNM_2015,M1_linear,const,21.2043,0.3651,58.072,0.0,***,20.4887,21.92,968,0.0319,0.0279 +VNM_2015,M1_linear,fsts_c,-0.5619,0.1376,-4.083,0.0,***,-0.8317,-0.2922,968,0.0319,0.0279 +VNM_2015,M1_linear,log_emp,-0.0599,0.0327,-1.83,0.0672,*,-0.124,0.0043,968,0.0319,0.0279 +VNM_2015,M1_linear,firm_age,-0.4942,0.1612,-3.065,0.0022,***,-0.8102,-0.1782,968,0.0319,0.0279 +VNM_2015,M1_linear,fdi10,0.1733,0.1518,1.142,0.2536,,-0.1242,0.4708,968,0.0319,0.0279 +VNM_2015,M2_quadratic,const,21.551,0.3679,58.582,0.0,***,20.83,22.272,968,0.044,0.039 +VNM_2015,M2_quadratic,fsts_c,0.8213,0.3925,2.093,0.0364,**,0.0521,1.5906,968,0.044,0.039 +VNM_2015,M2_quadratic,fsts_c2,-2.4331,0.6387,-3.809,0.0001,***,-3.6851,-1.1812,968,0.044,0.039 +VNM_2015,M2_quadratic,log_emp,-0.0761,0.0326,-2.337,0.0195,**,-0.1399,-0.0123,968,0.044,0.039 +VNM_2015,M2_quadratic,firm_age,-0.4982,0.1574,-3.165,0.0016,***,-0.8067,-0.1897,968,0.044,0.039 +VNM_2015,M2_quadratic,fdi10,0.1843,0.1542,1.195,0.232,,-0.1179,0.4865,968,0.044,0.039 +VNM_2015,M3_cubic,const,21.4149,0.3846,55.679,0.0,***,20.661,22.1687,968,0.045,0.039 +VNM_2015,M3_cubic,fsts_c,0.6621,0.4237,1.563,0.1181,,-0.1683,1.4925,968,0.045,0.039 +VNM_2015,M3_cubic,fsts_c2,0.4536,2.8215,0.161,0.8723,,-5.0765,5.9836,968,0.045,0.039 +VNM_2015,M3_cubic,fsts_c3,-3.142,2.963,-1.06,0.289,,-8.9495,2.6654,968,0.045,0.039 +VNM_2015,M3_cubic,log_emp,-0.0751,0.0325,-2.312,0.0208,**,-0.1387,-0.0114,968,0.045,0.039 +VNM_2015,M3_cubic,firm_age,-0.4976,0.1571,-3.167,0.0015,***,-0.8056,-0.1897,968,0.045,0.039 +VNM_2015,M3_cubic,fdi10,0.1899,0.1544,1.23,0.2186,,-0.1127,0.4925,968,0.045,0.039 +VNM_2015,M4_TCI,const,21.4115,0.401,53.397,0.0,***,20.6256,22.1975,963,0.05,0.041 +VNM_2015,M4_TCI,fsts_c,0.649,0.4487,1.447,0.148,,-0.2304,1.5284,963,0.05,0.041 +VNM_2015,M4_TCI,fsts_c2,0.7875,2.8906,0.272,0.7853,,-4.8779,6.453,963,0.05,0.041 +VNM_2015,M4_TCI,fsts_c3,-3.5396,2.9993,-1.18,0.2379,,-9.4182,2.3389,963,0.05,0.041 +VNM_2015,M4_TCI,tci_z,0.069,0.07,0.986,0.3241,,-0.0682,0.2062,963,0.05,0.041 +VNM_2015,M4_TCI,fsts_x_tci,-0.2337,0.3035,-0.77,0.4413,,-0.8287,0.3612,963,0.05,0.041 +VNM_2015,M4_TCI,fsts2_x_tci,0.3823,0.517,0.739,0.4597,,-0.631,1.3955,963,0.05,0.041 +VNM_2015,M4_TCI,log_emp,-0.0982,0.035,-2.809,0.005,***,-0.1668,-0.0297,963,0.05,0.041 +VNM_2015,M4_TCI,firm_age,-0.458,0.1625,-2.818,0.0048,***,-0.7766,-0.1395,963,0.05,0.041 +VNM_2015,M4_TCI,fdi10,0.1618,0.1547,1.046,0.2956,,-0.1414,0.4649,963,0.05,0.041 +VNM_2015,M5_DAI,const,21.4953,0.3959,54.295,0.0,***,20.7193,22.2712,967,0.049,0.04 +VNM_2015,M5_DAI,fsts_c,0.7186,0.4473,1.606,0.1082,,-0.1581,1.5954,967,0.049,0.04 +VNM_2015,M5_DAI,fsts_c2,0.4401,2.877,0.153,0.8784,,-5.1987,6.079,967,0.049,0.04 +VNM_2015,M5_DAI,fsts_c3,-3.1854,3.0225,-1.054,0.2919,,-9.1095,2.7387,967,0.049,0.04 +VNM_2015,M5_DAI,dai_z,0.0038,0.1007,0.038,0.9698,,-0.1935,0.2011,967,0.049,0.04 +VNM_2015,M5_DAI,fsts_x_dai,-0.4427,0.4496,-0.985,0.3248,,-1.324,0.4386,967,0.049,0.04 +VNM_2015,M5_DAI,fsts2_x_dai,0.6401,0.767,0.835,0.4039,,-0.8631,2.1434,967,0.049,0.04 +VNM_2015,M5_DAI,log_emp,-0.0906,0.0334,-2.715,0.0066,***,-0.156,-0.0252,967,0.049,0.04 +VNM_2015,M5_DAI,firm_age,-0.5061,0.1589,-3.185,0.0014,***,-0.8175,-0.1947,967,0.049,0.04 +VNM_2015,M5_DAI,fdi10,0.2108,0.1551,1.359,0.174,,-0.0932,0.5148,967,0.049,0.04 +VNM_2015,M6_TCI_DAI,const,21.4003,0.3944,54.257,0.0,***,20.6272,22.1733,962,0.0504,0.0425 +VNM_2015,M6_TCI_DAI,fsts_c,0.5743,0.4289,1.339,0.1806,,-0.2663,1.4148,962,0.0504,0.0425 +VNM_2015,M6_TCI_DAI,fsts_c2,0.9095,2.8472,0.319,0.7494,,-4.671,6.4899,962,0.0504,0.0425 +VNM_2015,M6_TCI_DAI,fsts_c3,-3.4834,2.9865,-1.166,0.2435,,-9.3367,2.3699,962,0.0504,0.0425 +VNM_2015,M6_TCI_DAI,tci_z,0.0881,0.0496,1.777,0.0755,*,-0.0091,0.1852,962,0.0504,0.0425 +VNM_2015,M6_TCI_DAI,dai_z,0.051,0.0513,0.994,0.3203,,-0.0496,0.1517,962,0.0504,0.0425 +VNM_2015,M6_TCI_DAI,log_emp,-0.1034,0.035,-2.949,0.0032,***,-0.172,-0.0347,962,0.0504,0.0425 +VNM_2015,M6_TCI_DAI,firm_age,-0.4542,0.1612,-2.818,0.0048,***,-0.7701,-0.1383,962,0.0504,0.0425 +VNM_2015,M6_TCI_DAI,fdi10,0.1621,0.1557,1.041,0.2979,,-0.1431,0.4672,962,0.0504,0.0425 +VNM_2015,M7_full,const,21.4549,0.4058,52.871,0.0,***,20.6596,22.2503,962,0.0525,0.0405 +VNM_2015,M7_full,fsts_c,0.7061,0.4535,1.557,0.1195,,-0.1828,1.595,962,0.0525,0.0405 +VNM_2015,M7_full,fsts_c2,0.8565,2.9114,0.294,0.7686,,-4.8496,6.5627,962,0.0525,0.0405 +VNM_2015,M7_full,fsts_c3,-3.7622,3.0496,-1.234,0.2173,,-9.7393,2.2149,962,0.0525,0.0405 +VNM_2015,M7_full,tci_z,0.0794,0.0882,0.901,0.3678,,-0.0934,0.2522,962,0.0525,0.0405 +VNM_2015,M7_full,fsts_x_tci,-0.0394,0.3793,-0.104,0.9173,,-0.7828,0.7041,962,0.0525,0.0405 +VNM_2015,M7_full,fsts2_x_tci,0.1915,0.6565,0.292,0.7705,,-1.0952,1.4782,962,0.0525,0.0405 +VNM_2015,M7_full,dai_z,-0.0249,0.1277,-0.195,0.8454,,-0.2752,0.2254,962,0.0525,0.0405 +VNM_2015,M7_full,fsts_x_dai,-0.4883,0.5687,-0.859,0.3905,,-1.6029,0.6262,962,0.0525,0.0405 +VNM_2015,M7_full,fsts2_x_dai,0.4999,0.9904,0.505,0.6138,,-1.4413,2.4411,962,0.0525,0.0405 +VNM_2015,M7_full,log_emp,-0.1037,0.0357,-2.909,0.0036,***,-0.1736,-0.0338,962,0.0525,0.0405 +VNM_2015,M7_full,firm_age,-0.4686,0.1626,-2.882,0.0039,***,-0.7872,-0.1499,962,0.0525,0.0405 +VNM_2015,M7_full,fdi10,0.1677,0.1561,1.075,0.2826,,-0.1382,0.4736,962,0.0525,0.0405 +VNM_2023,M0_controls,const,22.0831,0.5373,41.097,0.0,***,21.0299,23.1363,1014,0.012,0.009 +VNM_2023,M0_controls,log_emp,-0.0136,0.0328,-0.416,0.6773,,-0.0779,0.0506,1014,0.012,0.009 +VNM_2023,M0_controls,firm_age,-0.7666,0.2512,-3.052,0.0023,***,-1.2589,-0.2743,1014,0.012,0.009 +VNM_2023,M0_controls,fdi10,0.1393,0.1276,1.091,0.2751,,-0.1109,0.3895,1014,0.012,0.009 +VNM_2023,M1_linear,const,21.748,0.542,40.122,0.0,***,20.6856,22.8104,1014,0.0249,0.021 +VNM_2023,M1_linear,fsts_c,-0.558,0.1519,-3.672,0.0002,***,-0.8558,-0.2602,1014,0.0249,0.021 +VNM_2023,M1_linear,log_emp,0.0369,0.0365,1.013,0.3112,,-0.0345,0.1084,1014,0.0249,0.021 +VNM_2023,M1_linear,firm_age,-0.694,0.2493,-2.784,0.0054,***,-1.1827,-0.2054,1014,0.0249,0.021 +VNM_2023,M1_linear,fdi10,0.2423,0.1267,1.912,0.0559,*,-0.0061,0.4907,1014,0.0249,0.021 +VNM_2023,M2_quadratic,const,22.0551,0.556,39.667,0.0,***,20.9653,23.1448,1014,0.0314,0.0266 +VNM_2023,M2_quadratic,fsts_c,0.8439,0.4671,1.807,0.0708,*,-0.0717,1.7594,1014,0.0314,0.0266 +VNM_2023,M2_quadratic,fsts_c2,-2.2381,0.6893,-3.247,0.0012,***,-3.5891,-0.8871,1014,0.0314,0.0266 +VNM_2023,M2_quadratic,log_emp,0.0244,0.0368,0.662,0.508,,-0.0478,0.0965,1014,0.0314,0.0266 +VNM_2023,M2_quadratic,firm_age,-0.6969,0.2517,-2.769,0.0056,***,-1.1902,-0.2036,1014,0.0314,0.0266 +VNM_2023,M2_quadratic,fdi10,0.2413,0.1249,1.933,0.0533,*,-0.0034,0.486,1014,0.0314,0.0266 +VNM_2023,M3_cubic,const,21.6879,0.5602,38.713,0.0,***,20.5898,22.7859,1014,0.0361,0.0303 +VNM_2023,M3_cubic,fsts_c,0.1625,0.4853,0.335,0.7378,,-0.7888,1.1137,1014,0.0361,0.0303 +VNM_2023,M3_cubic,fsts_c2,5.5101,2.8528,1.931,0.0534,*,-0.0812,11.1015,1014,0.0361,0.0303 +VNM_2023,M3_cubic,fsts_c3,-7.9597,2.9765,-2.674,0.0075,***,-13.7935,-2.1259,1014,0.0361,0.0303 +VNM_2023,M3_cubic,log_emp,0.0292,0.0366,0.797,0.4252,,-0.0426,0.101,1014,0.0361,0.0303 +VNM_2023,M3_cubic,firm_age,-0.6883,0.2484,-2.771,0.0056,***,-1.1753,-0.2014,1014,0.0361,0.0303 +VNM_2023,M3_cubic,fdi10,0.2854,0.1255,2.275,0.0229,**,0.0395,0.5313,1014,0.0361,0.0303 +VNM_2023,M4_TCI,const,21.6656,0.5508,39.332,0.0,***,20.586,22.7453,1013,0.0495,0.041 +VNM_2023,M4_TCI,fsts_c,0.0184,0.5306,0.035,0.9724,,-1.0216,1.0584,1013,0.0495,0.041 +VNM_2023,M4_TCI,fsts_c2,5.6174,2.858,1.965,0.0494,**,0.0158,11.219,1013,0.0495,0.041 +VNM_2023,M4_TCI,fsts_c3,-7.9013,3.0163,-2.619,0.0088,***,-13.8132,-1.9894,1013,0.0495,0.041 +VNM_2023,M4_TCI,tci_z,0.1473,0.0664,2.217,0.0266,**,0.0171,0.2775,1013,0.0495,0.041 +VNM_2023,M4_TCI,fsts_x_tci,-0.2933,0.3398,-0.863,0.3879,,-0.9592,0.3726,1013,0.0495,0.041 +VNM_2023,M4_TCI,fsts2_x_tci,0.3734,0.5041,0.741,0.4588,,-0.6145,1.3614,1013,0.0495,0.041 +VNM_2023,M4_TCI,log_emp,0.0014,0.0371,0.039,0.9691,,-0.0712,0.0741,1013,0.0495,0.041 +VNM_2023,M4_TCI,firm_age,-0.6248,0.2459,-2.541,0.0111,**,-1.1067,-0.1428,1013,0.0495,0.041 +VNM_2023,M4_TCI,fdi10,0.1907,0.1266,1.506,0.1321,,-0.0575,0.4389,1013,0.0495,0.041 +VNM_2023,M5_DAI,const,21.7556,0.5601,38.842,0.0,***,20.6578,22.8534,1014,0.0501,0.0416 +VNM_2023,M5_DAI,fsts_c,0.1462,0.5266,0.278,0.7813,,-0.8858,1.1783,1014,0.0501,0.0416 +VNM_2023,M5_DAI,fsts_c2,5.9427,2.862,2.076,0.0379,**,0.3333,11.5521,1014,0.0501,0.0416 +VNM_2023,M5_DAI,fsts_c3,-8.3854,2.9926,-2.802,0.0051,***,-14.2507,-2.5201,1014,0.0501,0.0416 +VNM_2023,M5_DAI,dai_z,0.1137,0.0695,1.635,0.1021,,-0.0226,0.2499,1014,0.0501,0.0416 +VNM_2023,M5_DAI,fsts_x_dai,-0.5228,0.3609,-1.449,0.1474,,-1.2301,0.1845,1014,0.0501,0.0416 +VNM_2023,M5_DAI,fsts2_x_dai,0.5552,0.5582,0.995,0.3199,,-0.5389,1.6493,1014,0.0501,0.0416 +VNM_2023,M5_DAI,log_emp,-0.0047,0.0377,-0.126,0.9,,-0.0787,0.0692,1014,0.0501,0.0416 +VNM_2023,M5_DAI,firm_age,-0.661,0.2485,-2.66,0.0078,***,-1.1481,-0.174,1014,0.0501,0.0416 +VNM_2023,M5_DAI,fdi10,0.2715,0.1226,2.215,0.0267,**,0.0313,0.5118,1014,0.0501,0.0416 +VNM_2023,M6_TCI_DAI,const,21.6517,0.5549,39.023,0.0,***,20.5642,22.7392,1013,0.0535,0.046 +VNM_2023,M6_TCI_DAI,fsts_c,-0.2613,0.4924,-0.531,0.5956,,-1.2264,0.7037,1013,0.0535,0.046 +VNM_2023,M6_TCI_DAI,fsts_c2,5.9447,2.8055,2.119,0.0341,**,0.446,11.4434,1013,0.0535,0.046 +VNM_2023,M6_TCI_DAI,fsts_c3,-7.7973,2.9403,-2.652,0.008,***,-13.5603,-2.0344,1013,0.0535,0.046 +VNM_2023,M6_TCI_DAI,tci_z,0.1154,0.0537,2.15,0.0315,**,0.0102,0.2205,1013,0.0535,0.046 +VNM_2023,M6_TCI_DAI,dai_z,0.1202,0.0549,2.187,0.0287,**,0.0125,0.2279,1013,0.0535,0.046 +VNM_2023,M6_TCI_DAI,log_emp,-0.0083,0.0374,-0.222,0.8241,,-0.0817,0.065,1013,0.0535,0.046 +VNM_2023,M6_TCI_DAI,firm_age,-0.6285,0.2483,-2.531,0.0114,**,-1.1151,-0.1418,1013,0.0535,0.046 +VNM_2023,M6_TCI_DAI,fdi10,0.2021,0.1264,1.6,0.1097,,-0.0456,0.4498,1013,0.0535,0.046 +VNM_2023,M7_full,const,21.7417,0.5538,39.257,0.0,***,20.6562,22.8272,1013,0.0573,0.046 +VNM_2023,M7_full,fsts_c,0.133,0.5291,0.251,0.8014,,-0.9039,1.17,1013,0.0573,0.046 +VNM_2023,M7_full,fsts_c2,5.723,2.8719,1.993,0.0463,**,0.0941,11.3519,1013,0.0573,0.046 +VNM_2023,M7_full,fsts_c3,-8.1994,3.0221,-2.713,0.0067,***,-14.1227,-2.2762,1013,0.0573,0.046 +VNM_2023,M7_full,tci_z,0.1327,0.0755,1.758,0.0788,*,-0.0153,0.2808,1013,0.0573,0.046 +VNM_2023,M7_full,fsts_x_tci,0.1087,0.394,0.276,0.7827,,-0.6635,0.8809,1013,0.0573,0.046 +VNM_2023,M7_full,fsts2_x_tci,-0.0598,0.576,-0.104,0.9174,,-1.1886,1.0691,1013,0.0573,0.046 +VNM_2023,M7_full,dai_z,0.026,0.0777,0.335,0.7375,,-0.1263,0.1784,1013,0.0573,0.046 +VNM_2023,M7_full,fsts_x_dai,-0.7737,0.4114,-1.88,0.0601,*,-1.5801,0.0327,1013,0.0573,0.046 +VNM_2023,M7_full,fsts2_x_dai,0.8365,0.6165,1.357,0.1749,,-0.3719,2.0448,1013,0.0573,0.046 +VNM_2023,M7_full,log_emp,-0.0113,0.0376,-0.301,0.7633,,-0.0851,0.0624,1013,0.0573,0.046 +VNM_2023,M7_full,firm_age,-0.6321,0.2472,-2.557,0.0106,**,-1.1167,-0.1476,1013,0.0573,0.046 +VNM_2023,M7_full,fdi10,0.2075,0.1255,1.654,0.0982,*,-0.0385,0.4535,1013,0.0573,0.046 +VNM_pooled,M0_controls,const,20.7217,0.2185,94.817,0.0,***,20.2934,21.1501,2978,0.1147,0.1133 +VNM_pooled,M0_controls,log_emp,-0.083,0.0178,-4.648,0.0,***,-0.1179,-0.048,2978,0.1147,0.1133 +VNM_pooled,M0_controls,firm_age,-0.5212,0.0983,-5.303,0.0,***,-0.7138,-0.3285,2978,0.1147,0.1133 +VNM_pooled,M0_controls,fdi10,0.1669,0.0788,2.119,0.0341,**,0.0126,0.3213,2978,0.1147,0.1133 +VNM_pooled,M1_linear,const,20.3845,0.2245,90.792,0.0,***,19.9445,20.8245,2978,0.1286,0.1268 +VNM_pooled,M1_linear,fsts_c,-0.5499,0.0812,-6.772,0.0,***,-0.7091,-0.3908,2978,0.1286,0.1268 +VNM_pooled,M1_linear,log_emp,-0.0334,0.0194,-1.723,0.085,*,-0.0714,0.0046,2978,0.1286,0.1268 +VNM_pooled,M1_linear,firm_age,-0.4583,0.0973,-4.71,0.0,***,-0.649,-0.2676,2978,0.1286,0.1268 +VNM_pooled,M1_linear,fdi10,0.2922,0.0787,3.712,0.0002,***,0.1379,0.4465,2978,0.1286,0.1268 +VNM_pooled,M2_quadratic,const,20.6508,0.2287,90.295,0.0,***,20.2025,21.099,2978,0.1347,0.1326 +VNM_pooled,M2_quadratic,fsts_c,0.4535,0.2177,2.083,0.0372,**,0.0269,0.8802,2978,0.1347,0.1326 +VNM_pooled,M2_quadratic,fsts_c2,-1.8031,0.3603,-5.005,0.0,***,-2.5093,-1.097,2978,0.1347,0.1326 +VNM_pooled,M2_quadratic,log_emp,-0.0424,0.0193,-2.194,0.0282,**,-0.0803,-0.0045,2978,0.1347,0.1326 +VNM_pooled,M2_quadratic,firm_age,-0.4408,0.097,-4.542,0.0,***,-0.631,-0.2506,2978,0.1347,0.1326 +VNM_pooled,M2_quadratic,fdi10,0.2899,0.0781,3.713,0.0002,***,0.1369,0.443,2978,0.1347,0.1326 +VNM_pooled,M3_cubic,const,20.5192,0.2424,84.655,0.0,***,20.0442,20.9943,2978,0.1352,0.1329 +VNM_pooled,M3_cubic,fsts_c,0.4133,0.2178,1.898,0.0577,*,-0.0135,0.8402,2978,0.1352,0.1329 +VNM_pooled,M3_cubic,fsts_c2,0.148,1.3218,0.112,0.9109,,-2.4427,2.7386,2978,0.1352,0.1329 +VNM_pooled,M3_cubic,fsts_c3,-2.254,1.4826,-1.52,0.1284,,-5.1598,0.6519,2978,0.1352,0.1329 +VNM_pooled,M3_cubic,log_emp,-0.041,0.0193,-2.124,0.0337,**,-0.0789,-0.0032,2978,0.1352,0.1329 +VNM_pooled,M3_cubic,firm_age,-0.4413,0.097,-4.55,0.0,***,-0.6314,-0.2512,2978,0.1352,0.1329 +VNM_pooled,M3_cubic,fdi10,0.2999,0.0784,3.826,0.0001,***,0.1463,0.4535,2978,0.1352,0.1329 +VNM_pooled,M4_TCI,const,20.5545,0.2428,84.655,0.0,***,20.0786,21.0304,2968,0.1499,0.1468 +VNM_pooled,M4_TCI,fsts_c,0.3464,0.2259,1.533,0.1252,,-0.0964,0.7891,2968,0.1499,0.1468 +VNM_pooled,M4_TCI,fsts_c2,0.655,1.3154,0.498,0.6185,,-1.9233,3.2332,2968,0.1499,0.1468 +VNM_pooled,M4_TCI,fsts_c3,-2.6814,1.4729,-1.821,0.0687,*,-5.5682,0.2054,2968,0.1499,0.1468 +VNM_pooled,M4_TCI,tci_z,0.1725,0.0413,4.176,0.0,***,0.0915,0.2534,2968,0.1499,0.1468 +VNM_pooled,M4_TCI,fsts_x_tci,-0.1764,0.1583,-1.114,0.2653,,-0.4867,0.1339,2968,0.1499,0.1468 +VNM_pooled,M4_TCI,fsts2_x_tci,0.1879,0.2718,0.691,0.4894,,-0.3448,0.7205,2968,0.1499,0.1468 +VNM_pooled,M4_TCI,log_emp,-0.0851,0.0205,-4.156,0.0,***,-0.1252,-0.045,2968,0.1499,0.1468 +VNM_pooled,M4_TCI,firm_age,-0.3849,0.0966,-3.985,0.0001,***,-0.5743,-0.1956,2968,0.1499,0.1468 +VNM_pooled,M4_TCI,fdi10,0.2391,0.0775,3.087,0.002,***,0.0873,0.391,2968,0.1499,0.1468 +VNM_pooled,M5_DAI,const,20.574,0.2421,84.997,0.0,***,20.0996,21.0484,2977,0.1494,0.1462 +VNM_pooled,M5_DAI,fsts_c,0.3964,0.2247,1.764,0.0778,*,-0.0441,0.8368,2977,0.1494,0.1462 +VNM_pooled,M5_DAI,fsts_c2,0.4266,1.3156,0.324,0.7457,,-2.1519,3.0052,2977,0.1494,0.1462 +VNM_pooled,M5_DAI,fsts_c3,-2.4683,1.4772,-1.671,0.0947,*,-5.3636,0.427,2977,0.1494,0.1462 +VNM_pooled,M5_DAI,dai_z,0.1315,0.0513,2.564,0.0103,**,0.031,0.2319,2977,0.1494,0.1462 +VNM_pooled,M5_DAI,fsts_x_dai,-0.2902,0.1968,-1.475,0.1402,,-0.6758,0.0954,2977,0.1494,0.1462 +VNM_pooled,M5_DAI,fsts2_x_dai,0.3566,0.3446,1.035,0.3008,,-0.3188,1.032,2977,0.1494,0.1462 +VNM_pooled,M5_DAI,log_emp,-0.0743,0.0198,-3.755,0.0002,***,-0.113,-0.0355,2977,0.1494,0.1462 +VNM_pooled,M5_DAI,firm_age,-0.4102,0.0967,-4.243,0.0,***,-0.5996,-0.2207,2977,0.1494,0.1462 +VNM_pooled,M5_DAI,fdi10,0.2985,0.0766,3.896,0.0001,***,0.1484,0.4487,2977,0.1494,0.1462 +VNM_pooled,M6_TCI_DAI,const,20.5814,0.2409,85.433,0.0,***,20.1093,21.0536,2967,0.1548,0.152 +VNM_pooled,M6_TCI_DAI,fsts_c,0.2954,0.2168,1.363,0.173,,-0.1295,0.7204,2967,0.1548,0.152 +VNM_pooled,M6_TCI_DAI,fsts_c2,0.516,1.2929,0.399,0.6898,,-2.0181,3.0501,2967,0.1548,0.152 +VNM_pooled,M6_TCI_DAI,fsts_c3,-2.383,1.4539,-1.639,0.1012,,-5.2327,0.4666,2967,0.1548,0.152 +VNM_pooled,M6_TCI_DAI,tci_z,0.1332,0.0282,4.724,0.0,***,0.078,0.1885,2967,0.1548,0.152 +VNM_pooled,M6_TCI_DAI,dai_z,0.1237,0.0284,4.351,0.0,***,0.068,0.1794,2967,0.1548,0.152 +VNM_pooled,M6_TCI_DAI,log_emp,-0.0946,0.0205,-4.624,0.0,***,-0.1347,-0.0545,2967,0.1548,0.152 +VNM_pooled,M6_TCI_DAI,firm_age,-0.3809,0.0966,-3.942,0.0001,***,-0.5703,-0.1915,2967,0.1548,0.152 +VNM_pooled,M6_TCI_DAI,fdi10,0.2447,0.0769,3.181,0.0015,***,0.0939,0.3955,2967,0.1548,0.152 +VNM_pooled,M7_full,const,20.5687,0.243,84.649,0.0,***,20.0924,21.0449,2967,0.1567,0.1527 +VNM_pooled,M7_full,fsts_c,0.3676,0.2259,1.627,0.1037,,-0.0751,0.8103,2967,0.1567,0.1527 +VNM_pooled,M7_full,fsts_c2,0.7286,1.3109,0.556,0.5784,,-1.8407,3.2978,2967,0.1567,0.1527 +VNM_pooled,M7_full,fsts_c3,-2.7781,1.4676,-1.893,0.0584,*,-5.6545,0.0982,2967,0.1567,0.1527 +VNM_pooled,M7_full,tci_z,0.1572,0.0516,3.045,0.0023,***,0.056,0.2584,2967,0.1567,0.1527 +VNM_pooled,M7_full,fsts_x_tci,0.0157,0.196,0.08,0.936,,-0.3684,0.3999,2967,0.1567,0.1527 +VNM_pooled,M7_full,fsts2_x_tci,-0.0588,0.3341,-0.176,0.8603,,-0.7136,0.5961,2967,0.1567,0.1527 +VNM_pooled,M7_full,dai_z,0.0428,0.0648,0.661,0.5087,,-0.0842,0.1698,2967,0.1567,0.1527 +VNM_pooled,M7_full,fsts_x_dai,-0.4596,0.2482,-1.852,0.0641,*,-0.946,0.0269,2967,0.1567,0.1527 +VNM_pooled,M7_full,fsts2_x_dai,0.5834,0.4277,1.364,0.1725,,-0.2548,1.4217,2967,0.1567,0.1527 +VNM_pooled,M7_full,log_emp,-0.0957,0.0206,-4.646,0.0,***,-0.1361,-0.0553,2967,0.1567,0.1527 +VNM_pooled,M7_full,firm_age,-0.3722,0.0967,-3.849,0.0001,***,-0.5617,-0.1826,2967,0.1567,0.1527 +VNM_pooled,M7_full,fdi10,0.2517,0.0767,3.282,0.001,***,0.1014,0.4019,2967,0.1567,0.1527 diff --git a/data/analysis/p7/p7_m0m7_by_period.csv b/data/analysis/p7/p7_m0m7_by_period.csv new file mode 100644 index 00000000..6c585fd7 --- /dev/null +++ b/data/analysis/p7/p7_m0m7_by_period.csv @@ -0,0 +1,193 @@ +sample,model,variable,coef,se,t,p,stars,ci_lo,ci_hi,n,r2,adj_r2 +P1_2009_2013,M0_controls,const,11.517,0.0992,116.158,0.0,***,11.3227,11.7114,3680,0.8787,0.8785 +P1_2009_2013,M0_controls,log_emp,-0.1009,0.0151,-6.7,0.0,***,-0.1305,-0.0714,3680,0.8787,0.8785 +P1_2009_2013,M0_controls,firm_age,-0.4819,0.0632,-7.624,0.0,***,-0.6058,-0.358,3680,0.8787,0.8785 +P1_2009_2013,M0_controls,fdi10,0.1651,0.0751,2.199,0.0279,**,0.0179,0.3123,3680,0.8787,0.8785 +P1_2009_2013,M1_linear,const,11.4902,0.101,113.768,0.0,***,11.2922,11.6881,3680,0.8789,0.8787 +P1_2009_2013,M1_linear,fsts_c,-0.1655,0.0758,-2.182,0.0291,**,-0.3141,-0.0169,3680,0.8789,0.8787 +P1_2009_2013,M1_linear,log_emp,-0.0932,0.0156,-5.987,0.0,***,-0.1237,-0.0627,3680,0.8789,0.8787 +P1_2009_2013,M1_linear,firm_age,-0.4793,0.0632,-7.579,0.0,***,-0.6032,-0.3553,3680,0.8789,0.8787 +P1_2009_2013,M1_linear,fdi10,0.203,0.0771,2.633,0.0085,***,0.0519,0.3541,3680,0.8789,0.8787 +P1_2009_2013,M2_quadratic,const,11.578,0.1035,111.814,0.0,***,11.3751,11.7809,3680,0.8792,0.879 +P1_2009_2013,M2_quadratic,fsts_c,0.3567,0.1841,1.937,0.0527,*,-0.0042,0.7176,3680,0.8792,0.879 +P1_2009_2013,M2_quadratic,fsts_c2,-0.9284,0.3023,-3.071,0.0021,***,-1.521,-0.3359,3680,0.8792,0.879 +P1_2009_2013,M2_quadratic,log_emp,-0.1007,0.0157,-6.432,0.0,***,-0.1314,-0.07,3680,0.8792,0.879 +P1_2009_2013,M2_quadratic,firm_age,-0.4812,0.0631,-7.628,0.0,***,-0.6049,-0.3576,3680,0.8792,0.879 +P1_2009_2013,M2_quadratic,fdi10,0.1858,0.0768,2.418,0.0156,**,0.0352,0.3363,3680,0.8792,0.879 +P1_2009_2013,M3_cubic,const,11.6094,0.1103,105.214,0.0,***,11.3931,11.8256,3680,0.8792,0.879 +P1_2009_2013,M3_cubic,fsts_c,0.4249,0.2009,2.115,0.0344,**,0.0312,0.8185,3680,0.8792,0.879 +P1_2009_2013,M3_cubic,fsts_c2,-1.8776,1.0741,-1.748,0.0805,*,-3.9828,0.2277,3680,0.8792,0.879 +P1_2009_2013,M3_cubic,fsts_c3,1.0023,1.088,0.921,0.357,,-1.1302,3.1348,3680,0.8792,0.879 +P1_2009_2013,M3_cubic,log_emp,-0.1016,0.0157,-6.483,0.0,***,-0.1323,-0.0709,3680,0.8792,0.879 +P1_2009_2013,M3_cubic,firm_age,-0.4806,0.063,-7.624,0.0,***,-0.6042,-0.3571,3680,0.8792,0.879 +P1_2009_2013,M3_cubic,fdi10,0.1836,0.0768,2.39,0.0168,**,0.033,0.3341,3680,0.8792,0.879 +P1_2009_2013,M4_TCI,const,-3222840999931.3813,2909981304470.892,-1.108,0.2681,,-8926299552379.215,2480617552516.4526,3662,0.881,0.8806 +P1_2009_2013,M4_TCI,fsts_c,0.4094,0.2011,2.036,0.0418,**,0.0153,0.8035,3662,0.881,0.8806 +P1_2009_2013,M4_TCI,fsts_c2,-1.7812,1.0796,-1.65,0.099,*,-3.8973,0.3349,3662,0.881,0.8806 +P1_2009_2013,M4_TCI,fsts_c3,0.9039,1.1042,0.819,0.413,,-1.2603,3.0681,3662,0.881,0.8806 +P1_2009_2013,M4_TCI,tci_z,0.1031,0.0291,3.543,0.0004,***,0.0461,0.1601,3662,0.881,0.8806 +P1_2009_2013,M4_TCI,fsts_x_tci,-0.4006,0.1556,-2.574,0.01,**,-0.7057,-0.0956,3662,0.881,0.8806 +P1_2009_2013,M4_TCI,fsts2_x_tci,0.6561,0.254,2.583,0.0098,***,0.1583,1.1538,3662,0.881,0.8806 +P1_2009_2013,M4_TCI,log_emp,-0.135,0.0162,-8.321,0.0,***,-0.1668,-0.1032,3662,0.881,0.8806 +P1_2009_2013,M4_TCI,firm_age,-0.4441,0.063,-7.053,0.0,***,-0.5675,-0.3207,3662,0.881,0.8806 +P1_2009_2013,M4_TCI,fdi10,0.1534,0.0754,2.035,0.0418,**,0.0057,0.3012,3662,0.881,0.8806 +P1_2009_2013,M5_DAI,const,11.5956,0.1094,106.0,0.0,***,11.3812,11.81,3680,0.8809,0.8806 +P1_2009_2013,M5_DAI,fsts_c,0.4741,0.1983,2.391,0.0168,**,0.0854,0.8628,3680,0.8809,0.8806 +P1_2009_2013,M5_DAI,fsts_c2,-1.9566,1.071,-1.827,0.0677,*,-4.0558,0.1426,3680,0.8809,0.8806 +P1_2009_2013,M5_DAI,fsts_c3,1.0034,1.0808,0.928,0.3532,,-1.1149,3.1216,3680,0.8809,0.8806 +P1_2009_2013,M5_DAI,dai_z,0.0369,0.0301,1.225,0.2205,,-0.0221,0.096,3680,0.8809,0.8806 +P1_2009_2013,M5_DAI,fsts_x_dai,-0.479,0.1623,-2.952,0.0032,***,-0.7971,-0.161,3680,0.8809,0.8806 +P1_2009_2013,M5_DAI,fsts2_x_dai,0.9609,0.2675,3.592,0.0003,***,0.4365,1.4853,3680,0.8809,0.8806 +P1_2009_2013,M5_DAI,log_emp,-0.1158,0.0158,-7.337,0.0,***,-0.1467,-0.0849,3680,0.8809,0.8806 +P1_2009_2013,M5_DAI,firm_age,-0.4315,0.0629,-6.865,0.0,***,-0.5547,-0.3083,3680,0.8809,0.8806 +P1_2009_2013,M5_DAI,fdi10,0.1786,0.0753,2.372,0.0177,**,0.031,0.3261,3680,0.8809,0.8806 +P1_2009_2013,M6_TCI_DAI,const,-1651405049977.8276,2440212981494.545,-0.677,0.4986,,-6434134608314.24,3131324508358.5854,3662,0.8807,0.8804 +P1_2009_2013,M6_TCI_DAI,fsts_c,0.3656,0.1998,1.83,0.0672,*,-0.0259,0.7572,3662,0.8807,0.8804 +P1_2009_2013,M6_TCI_DAI,fsts_c2,-1.5816,1.0513,-1.504,0.1325,,-3.6421,0.4788,3662,0.8807,0.8804 +P1_2009_2013,M6_TCI_DAI,fsts_c3,0.772,1.0672,0.723,0.4694,,-1.3196,2.8637,3662,0.8807,0.8804 +P1_2009_2013,M6_TCI_DAI,tci_z,0.1272,0.0225,5.658,0.0,***,0.0831,0.1713,3662,0.8807,0.8804 +P1_2009_2013,M6_TCI_DAI,dai_z,0.066,0.0216,3.05,0.0023,***,0.0236,0.1084,3662,0.8807,0.8804 +P1_2009_2013,M6_TCI_DAI,log_emp,-0.1358,0.0162,-8.396,0.0,***,-0.1675,-0.1041,3662,0.8807,0.8804 +P1_2009_2013,M6_TCI_DAI,firm_age,-0.4277,0.0632,-6.762,0.0,***,-0.5516,-0.3037,3662,0.8807,0.8804 +P1_2009_2013,M6_TCI_DAI,fdi10,0.1465,0.0753,1.946,0.0517,*,-0.0011,0.294,3662,0.8807,0.8804 +P1_2009_2013,M7_full,const,-1645781853538.167,2361324349163.2324,-0.697,0.4858,,-6273892533715.586,2982328826639.252,3662,0.8819,0.8815 +P1_2009_2013,M7_full,fsts_c,0.4376,0.2011,2.176,0.0295,**,0.0435,0.8318,3662,0.8819,0.8815 +P1_2009_2013,M7_full,fsts_c2,-1.5121,1.0695,-1.414,0.1574,,-3.6084,0.5841,3662,0.8819,0.8815 +P1_2009_2013,M7_full,fsts_c3,0.5554,1.084,0.512,0.6084,,-1.5692,2.6799,3662,0.8819,0.8815 +P1_2009_2013,M7_full,tci_z,0.1179,0.0341,3.459,0.0005,***,0.0511,0.1848,3662,0.8819,0.8815 +P1_2009_2013,M7_full,fsts_x_tci,-0.1792,0.1793,-0.999,0.3176,,-0.5305,0.1722,3662,0.8819,0.8815 +P1_2009_2013,M7_full,fsts2_x_tci,0.1543,0.2936,0.526,0.5991,,-0.4212,0.7299,3662,0.8819,0.8815 +P1_2009_2013,M7_full,dai_z,-0.0161,0.0355,-0.452,0.6509,,-0.0857,0.0535,3662,0.8819,0.8815 +P1_2009_2013,M7_full,fsts_x_dai,-0.4696,0.1886,-2.49,0.0128,**,-0.8393,-0.1,3662,0.8819,0.8815 +P1_2009_2013,M7_full,fsts2_x_dai,0.9659,0.313,3.086,0.002,***,0.3524,1.5794,3662,0.8819,0.8815 +P1_2009_2013,M7_full,log_emp,-0.1368,0.0163,-8.416,0.0,***,-0.1687,-0.105,3662,0.8819,0.8815 +P1_2009_2013,M7_full,firm_age,-0.4189,0.063,-6.652,0.0,***,-0.5424,-0.2955,3662,0.8819,0.8815 +P1_2009_2013,M7_full,fdi10,0.1568,0.0747,2.1,0.0357,**,0.0105,0.3032,3662,0.8819,0.8815 +P2_2014_2018,M0_controls,const,21.5144,0.3589,59.953,0.0,***,20.811,22.2177,968,0.0175,0.0144 +P2_2014_2018,M0_controls,log_emp,-0.1043,0.0313,-3.334,0.0009,***,-0.1657,-0.043,968,0.0175,0.0144 +P2_2014_2018,M0_controls,firm_age,-0.5652,0.1619,-3.492,0.0005,***,-0.8824,-0.248,968,0.0175,0.0144 +P2_2014_2018,M0_controls,fdi10,0.0253,0.1531,0.165,0.8689,,-0.2748,0.3254,968,0.0175,0.0144 +P2_2014_2018,M1_linear,const,21.2043,0.3651,58.072,0.0,***,20.4887,21.92,968,0.0319,0.0279 +P2_2014_2018,M1_linear,fsts_c,-0.5619,0.1376,-4.083,0.0,***,-0.8317,-0.2922,968,0.0319,0.0279 +P2_2014_2018,M1_linear,log_emp,-0.0599,0.0327,-1.83,0.0672,*,-0.124,0.0043,968,0.0319,0.0279 +P2_2014_2018,M1_linear,firm_age,-0.4942,0.1612,-3.065,0.0022,***,-0.8102,-0.1782,968,0.0319,0.0279 +P2_2014_2018,M1_linear,fdi10,0.1733,0.1518,1.142,0.2536,,-0.1242,0.4708,968,0.0319,0.0279 +P2_2014_2018,M2_quadratic,const,21.551,0.3679,58.582,0.0,***,20.83,22.272,968,0.044,0.039 +P2_2014_2018,M2_quadratic,fsts_c,0.8213,0.3925,2.093,0.0364,**,0.0521,1.5906,968,0.044,0.039 +P2_2014_2018,M2_quadratic,fsts_c2,-2.4331,0.6387,-3.809,0.0001,***,-3.6851,-1.1812,968,0.044,0.039 +P2_2014_2018,M2_quadratic,log_emp,-0.0761,0.0326,-2.337,0.0195,**,-0.1399,-0.0123,968,0.044,0.039 +P2_2014_2018,M2_quadratic,firm_age,-0.4982,0.1574,-3.165,0.0016,***,-0.8067,-0.1897,968,0.044,0.039 +P2_2014_2018,M2_quadratic,fdi10,0.1843,0.1542,1.195,0.232,,-0.1179,0.4865,968,0.044,0.039 +P2_2014_2018,M3_cubic,const,21.4149,0.3846,55.679,0.0,***,20.661,22.1687,968,0.045,0.039 +P2_2014_2018,M3_cubic,fsts_c,0.6621,0.4237,1.563,0.1181,,-0.1683,1.4925,968,0.045,0.039 +P2_2014_2018,M3_cubic,fsts_c2,0.4536,2.8215,0.161,0.8723,,-5.0765,5.9836,968,0.045,0.039 +P2_2014_2018,M3_cubic,fsts_c3,-3.142,2.963,-1.06,0.289,,-8.9495,2.6654,968,0.045,0.039 +P2_2014_2018,M3_cubic,log_emp,-0.0751,0.0325,-2.312,0.0208,**,-0.1387,-0.0114,968,0.045,0.039 +P2_2014_2018,M3_cubic,firm_age,-0.4976,0.1571,-3.167,0.0015,***,-0.8056,-0.1897,968,0.045,0.039 +P2_2014_2018,M3_cubic,fdi10,0.1899,0.1544,1.23,0.2186,,-0.1127,0.4925,968,0.045,0.039 +P2_2014_2018,M4_TCI,const,21.4115,0.401,53.397,0.0,***,20.6256,22.1975,963,0.05,0.041 +P2_2014_2018,M4_TCI,fsts_c,0.649,0.4487,1.447,0.148,,-0.2304,1.5284,963,0.05,0.041 +P2_2014_2018,M4_TCI,fsts_c2,0.7875,2.8906,0.272,0.7853,,-4.8779,6.453,963,0.05,0.041 +P2_2014_2018,M4_TCI,fsts_c3,-3.5396,2.9993,-1.18,0.2379,,-9.4182,2.3389,963,0.05,0.041 +P2_2014_2018,M4_TCI,tci_z,0.069,0.07,0.986,0.3241,,-0.0682,0.2062,963,0.05,0.041 +P2_2014_2018,M4_TCI,fsts_x_tci,-0.2337,0.3035,-0.77,0.4413,,-0.8287,0.3612,963,0.05,0.041 +P2_2014_2018,M4_TCI,fsts2_x_tci,0.3823,0.517,0.739,0.4597,,-0.631,1.3955,963,0.05,0.041 +P2_2014_2018,M4_TCI,log_emp,-0.0982,0.035,-2.809,0.005,***,-0.1668,-0.0297,963,0.05,0.041 +P2_2014_2018,M4_TCI,firm_age,-0.458,0.1625,-2.818,0.0048,***,-0.7766,-0.1395,963,0.05,0.041 +P2_2014_2018,M4_TCI,fdi10,0.1618,0.1547,1.046,0.2956,,-0.1414,0.4649,963,0.05,0.041 +P2_2014_2018,M5_DAI,const,21.4953,0.3959,54.295,0.0,***,20.7193,22.2712,967,0.049,0.04 +P2_2014_2018,M5_DAI,fsts_c,0.7186,0.4473,1.606,0.1082,,-0.1581,1.5954,967,0.049,0.04 +P2_2014_2018,M5_DAI,fsts_c2,0.4401,2.877,0.153,0.8784,,-5.1987,6.079,967,0.049,0.04 +P2_2014_2018,M5_DAI,fsts_c3,-3.1854,3.0225,-1.054,0.2919,,-9.1095,2.7387,967,0.049,0.04 +P2_2014_2018,M5_DAI,dai_z,0.0038,0.1007,0.038,0.9698,,-0.1935,0.2011,967,0.049,0.04 +P2_2014_2018,M5_DAI,fsts_x_dai,-0.4427,0.4496,-0.985,0.3248,,-1.324,0.4386,967,0.049,0.04 +P2_2014_2018,M5_DAI,fsts2_x_dai,0.6401,0.767,0.835,0.4039,,-0.8631,2.1434,967,0.049,0.04 +P2_2014_2018,M5_DAI,log_emp,-0.0906,0.0334,-2.715,0.0066,***,-0.156,-0.0252,967,0.049,0.04 +P2_2014_2018,M5_DAI,firm_age,-0.5061,0.1589,-3.185,0.0014,***,-0.8175,-0.1947,967,0.049,0.04 +P2_2014_2018,M5_DAI,fdi10,0.2108,0.1551,1.359,0.174,,-0.0932,0.5148,967,0.049,0.04 +P2_2014_2018,M6_TCI_DAI,const,21.4003,0.3944,54.257,0.0,***,20.6272,22.1733,962,0.0504,0.0425 +P2_2014_2018,M6_TCI_DAI,fsts_c,0.5743,0.4289,1.339,0.1806,,-0.2663,1.4148,962,0.0504,0.0425 +P2_2014_2018,M6_TCI_DAI,fsts_c2,0.9095,2.8472,0.319,0.7494,,-4.671,6.4899,962,0.0504,0.0425 +P2_2014_2018,M6_TCI_DAI,fsts_c3,-3.4834,2.9865,-1.166,0.2435,,-9.3367,2.3699,962,0.0504,0.0425 +P2_2014_2018,M6_TCI_DAI,tci_z,0.0881,0.0496,1.777,0.0755,*,-0.0091,0.1852,962,0.0504,0.0425 +P2_2014_2018,M6_TCI_DAI,dai_z,0.051,0.0513,0.994,0.3203,,-0.0496,0.1517,962,0.0504,0.0425 +P2_2014_2018,M6_TCI_DAI,log_emp,-0.1034,0.035,-2.949,0.0032,***,-0.172,-0.0347,962,0.0504,0.0425 +P2_2014_2018,M6_TCI_DAI,firm_age,-0.4542,0.1612,-2.818,0.0048,***,-0.7701,-0.1383,962,0.0504,0.0425 +P2_2014_2018,M6_TCI_DAI,fdi10,0.1621,0.1557,1.041,0.2979,,-0.1431,0.4672,962,0.0504,0.0425 +P2_2014_2018,M7_full,const,21.4549,0.4058,52.871,0.0,***,20.6596,22.2503,962,0.0525,0.0405 +P2_2014_2018,M7_full,fsts_c,0.7061,0.4535,1.557,0.1195,,-0.1828,1.595,962,0.0525,0.0405 +P2_2014_2018,M7_full,fsts_c2,0.8565,2.9114,0.294,0.7686,,-4.8496,6.5627,962,0.0525,0.0405 +P2_2014_2018,M7_full,fsts_c3,-3.7622,3.0496,-1.234,0.2173,,-9.7393,2.2149,962,0.0525,0.0405 +P2_2014_2018,M7_full,tci_z,0.0794,0.0882,0.901,0.3678,,-0.0934,0.2522,962,0.0525,0.0405 +P2_2014_2018,M7_full,fsts_x_tci,-0.0394,0.3793,-0.104,0.9173,,-0.7828,0.7041,962,0.0525,0.0405 +P2_2014_2018,M7_full,fsts2_x_tci,0.1915,0.6565,0.292,0.7705,,-1.0952,1.4782,962,0.0525,0.0405 +P2_2014_2018,M7_full,dai_z,-0.0249,0.1277,-0.195,0.8454,,-0.2752,0.2254,962,0.0525,0.0405 +P2_2014_2018,M7_full,fsts_x_dai,-0.4883,0.5687,-0.859,0.3905,,-1.6029,0.6262,962,0.0525,0.0405 +P2_2014_2018,M7_full,fsts2_x_dai,0.4999,0.9904,0.505,0.6138,,-1.4413,2.4411,962,0.0525,0.0405 +P2_2014_2018,M7_full,log_emp,-0.1037,0.0357,-2.909,0.0036,***,-0.1736,-0.0338,962,0.0525,0.0405 +P2_2014_2018,M7_full,firm_age,-0.4686,0.1626,-2.882,0.0039,***,-0.7872,-0.1499,962,0.0525,0.0405 +P2_2014_2018,M7_full,fdi10,0.1677,0.1561,1.075,0.2826,,-0.1382,0.4736,962,0.0525,0.0405 +P3_2019_2025,M0_controls,const,11.571,0.1056,109.56,0.0,***,11.364,11.778,3581,0.8892,0.889 +P3_2019_2025,M0_controls,log_emp,0.0578,0.0163,3.544,0.0004,***,0.0259,0.0898,3581,0.8892,0.889 +P3_2019_2025,M0_controls,firm_age,-0.3717,0.0598,-6.212,0.0,***,-0.4889,-0.2544,3581,0.8892,0.889 +P3_2019_2025,M0_controls,fdi10,0.1994,0.0642,3.107,0.0019,***,0.0736,0.3252,3581,0.8892,0.889 +P3_2019_2025,M1_linear,const,11.5686,0.1068,108.279,0.0,***,11.3592,11.778,3581,0.8892,0.889 +P3_2019_2025,M1_linear,fsts_c,-0.0134,0.0885,-0.151,0.8801,,-0.1869,0.1602,3581,0.8892,0.889 +P3_2019_2025,M1_linear,log_emp,0.0584,0.0167,3.489,0.0005,***,0.0256,0.0912,3581,0.8892,0.889 +P3_2019_2025,M1_linear,firm_age,-0.3711,0.0599,-6.192,0.0,***,-0.4886,-0.2537,3581,0.8892,0.889 +P3_2019_2025,M1_linear,fdi10,0.2014,0.0652,3.091,0.002,***,0.0737,0.3292,3581,0.8892,0.889 +P3_2019_2025,M2_quadratic,const,11.6738,0.1077,108.417,0.0,***,11.4628,11.8848,3581,0.8898,0.8896 +P3_2019_2025,M2_quadratic,fsts_c,1.1632,0.2529,4.599,0.0,***,0.6675,1.6589,3581,0.8898,0.8896 +P3_2019_2025,M2_quadratic,fsts_c2,-1.8171,0.379,-4.795,0.0,***,-2.5599,-1.0743,3581,0.8898,0.8896 +P3_2019_2025,M2_quadratic,log_emp,0.0476,0.0169,2.821,0.0048,***,0.0145,0.0808,3581,0.8898,0.8896 +P3_2019_2025,M2_quadratic,firm_age,-0.3592,0.0598,-6.006,0.0,***,-0.4764,-0.242,3581,0.8898,0.8896 +P3_2019_2025,M2_quadratic,fdi10,0.2013,0.0643,3.132,0.0017,***,0.0753,0.3273,3581,0.8898,0.8896 +P3_2019_2025,M3_cubic,const,11.5681,0.1122,103.143,0.0,***,11.3483,11.788,3581,0.8899,0.8897 +P3_2019_2025,M3_cubic,fsts_c,0.5769,0.3206,1.799,0.072,*,-0.0515,1.2053,3581,0.8899,0.8897 +P3_2019_2025,M3_cubic,fsts_c2,2.1799,1.5247,1.43,0.1528,,-0.8085,5.1682,3581,0.8899,0.8897 +P3_2019_2025,M3_cubic,fsts_c3,-3.7347,1.4315,-2.609,0.0091,***,-6.5404,-0.929,3581,0.8899,0.8897 +P3_2019_2025,M3_cubic,log_emp,0.0518,0.0169,3.07,0.0021,***,0.0187,0.0849,3581,0.8899,0.8897 +P3_2019_2025,M3_cubic,firm_age,-0.3533,0.0596,-5.924,0.0,***,-0.4702,-0.2364,3581,0.8899,0.8897 +P3_2019_2025,M3_cubic,fdi10,0.2092,0.0644,3.249,0.0012,***,0.083,0.3354,3581,0.8899,0.8897 +P3_2019_2025,M4_TCI,const,11.6799,0.1116,104.631,0.0,***,11.4611,11.8987,3577,0.8936,0.8933 +P3_2019_2025,M4_TCI,fsts_c,0.2348,0.3453,0.68,0.4966,,-0.4421,0.9116,3577,0.8936,0.8933 +P3_2019_2025,M4_TCI,fsts_c2,3.4136,1.5204,2.245,0.0248,**,0.4337,6.3934,3577,0.8936,0.8933 +P3_2019_2025,M4_TCI,fsts_c3,-4.6011,1.4039,-3.277,0.001,***,-7.3527,-1.8494,3577,0.8936,0.8933 +P3_2019_2025,M4_TCI,tci_z,0.2578,0.0277,9.313,0.0,***,0.2036,0.3121,3577,0.8936,0.8933 +P3_2019_2025,M4_TCI,fsts_x_tci,-0.3726,0.206,-1.809,0.0704,*,-0.7763,0.0311,3577,0.8936,0.8933 +P3_2019_2025,M4_TCI,fsts2_x_tci,0.2209,0.3026,0.73,0.4654,,-0.3722,0.8141,3577,0.8936,0.8933 +P3_2019_2025,M4_TCI,log_emp,-0.0141,0.0175,-0.805,0.4209,,-0.0483,0.0202,3577,0.8936,0.8933 +P3_2019_2025,M4_TCI,firm_age,-0.3233,0.0583,-5.542,0.0,***,-0.4376,-0.209,3577,0.8936,0.8933 +P3_2019_2025,M4_TCI,fdi10,0.138,0.0638,2.164,0.0305,**,0.013,0.2629,3577,0.8936,0.8933 +P3_2019_2025,M5_DAI,const,11.5854,0.1132,102.373,0.0,***,11.3636,11.8072,3581,0.8916,0.8912 +P3_2019_2025,M5_DAI,fsts_c,0.356,0.3422,1.04,0.2981,,-0.3146,1.0266,3581,0.8916,0.8912 +P3_2019_2025,M5_DAI,fsts_c2,2.9991,1.5427,1.944,0.0519,*,-0.0246,6.0228,3581,0.8916,0.8912 +P3_2019_2025,M5_DAI,fsts_c3,-4.3001,1.428,-3.011,0.0026,***,-7.099,-1.5012,3581,0.8916,0.8912 +P3_2019_2025,M5_DAI,dai_z,0.1632,0.0281,5.808,0.0,***,0.1081,0.2183,3581,0.8916,0.8912 +P3_2019_2025,M5_DAI,fsts_x_dai,-0.1944,0.2173,-0.895,0.371,,-0.6203,0.2315,3581,0.8916,0.8912 +P3_2019_2025,M5_DAI,fsts2_x_dai,0.0283,0.3331,0.085,0.9324,,-0.6245,0.681,3581,0.8916,0.8912 +P3_2019_2025,M5_DAI,log_emp,0.02,0.0174,1.146,0.2517,,-0.0142,0.0542,3581,0.8916,0.8912 +P3_2019_2025,M5_DAI,firm_age,-0.3183,0.0593,-5.364,0.0,***,-0.4346,-0.202,3581,0.8916,0.8912 +P3_2019_2025,M5_DAI,fdi10,0.194,0.0638,3.039,0.0024,***,0.0689,0.3192,3581,0.8916,0.8912 +P3_2019_2025,M6_TCI_DAI,const,11.6498,0.11,105.938,0.0,***,11.4343,11.8653,3577,0.8935,0.8932 +P3_2019_2025,M6_TCI_DAI,fsts_c,0.0606,0.3247,0.187,0.8518,,-0.5757,0.6969,3577,0.8935,0.8932 +P3_2019_2025,M6_TCI_DAI,fsts_c2,3.4538,1.5044,2.296,0.0217,**,0.5052,6.4024,3577,0.8935,0.8932 +P3_2019_2025,M6_TCI_DAI,fsts_c3,-4.4743,1.3996,-3.197,0.0014,***,-7.2175,-1.7311,3577,0.8935,0.8932 +P3_2019_2025,M6_TCI_DAI,tci_z,0.2202,0.0254,8.683,0.0,***,0.1705,0.2698,3577,0.8935,0.8932 +P3_2019_2025,M6_TCI_DAI,dai_z,0.0741,0.0249,2.97,0.003,***,0.0252,0.123,3577,0.8935,0.8932 +P3_2019_2025,M6_TCI_DAI,log_emp,-0.0166,0.0176,-0.941,0.3465,,-0.0511,0.0179,3577,0.8935,0.8932 +P3_2019_2025,M6_TCI_DAI,firm_age,-0.3084,0.0584,-5.278,0.0,***,-0.4229,-0.1939,3577,0.8935,0.8932 +P3_2019_2025,M6_TCI_DAI,fdi10,0.129,0.0639,2.019,0.0435,**,0.0037,0.2542,3577,0.8935,0.8932 +P3_2019_2025,M7_full,const,11.6822,0.1118,104.479,0.0,***,11.4631,11.9014,3577,0.894,0.8936 +P3_2019_2025,M7_full,fsts_c,0.208,0.3461,0.601,0.5479,,-0.4704,0.8864,3577,0.894,0.8936 +P3_2019_2025,M7_full,fsts_c2,3.5928,1.5265,2.354,0.0186,**,0.601,6.5846,3577,0.894,0.8936 +P3_2019_2025,M7_full,fsts_c3,-4.7581,1.4071,-3.381,0.0007,***,-7.516,-2.0002,3577,0.894,0.8936 +P3_2019_2025,M7_full,tci_z,0.2337,0.0338,6.91,0.0,***,0.1674,0.3,3577,0.894,0.8936 +P3_2019_2025,M7_full,fsts_x_tci,-0.22,0.2762,-0.796,0.4258,,-0.7614,0.3214,3577,0.894,0.8936 +P3_2019_2025,M7_full,fsts2_x_tci,0.0967,0.3898,0.248,0.8041,,-0.6673,0.8607,3577,0.894,0.8936 +P3_2019_2025,M7_full,dai_z,0.0615,0.0344,1.789,0.0736,*,-0.0059,0.1288,3577,0.894,0.8936 +P3_2019_2025,M7_full,fsts_x_dai,-0.2892,0.2913,-0.993,0.3209,,-0.8602,0.2818,3577,0.894,0.8936 +P3_2019_2025,M7_full,fsts2_x_dai,0.2176,0.4222,0.515,0.6063,,-0.6099,1.0452,3577,0.894,0.8936 +P3_2019_2025,M7_full,log_emp,-0.0214,0.0176,-1.214,0.2247,,-0.056,0.0132,3577,0.894,0.8936 +P3_2019_2025,M7_full,firm_age,-0.3128,0.0583,-5.368,0.0,***,-0.4271,-0.1986,3577,0.894,0.8936 +P3_2019_2025,M7_full,fdi10,0.1407,0.0637,2.21,0.0271,**,0.0159,0.2655,3577,0.894,0.8936 diff --git a/data/analysis/p7/p7_m0m7_full.csv b/data/analysis/p7/p7_m0m7_full.csv new file mode 100644 index 00000000..9439e9c7 --- /dev/null +++ b/data/analysis/p7/p7_m0m7_full.csv @@ -0,0 +1,65 @@ +sample,model,variable,coef,se,t,p,stars,ci_lo,ci_hi,n,r2,adj_r2 +FULL,M0_controls,const,11.7592,0.0795,147.865,0.0,***,11.6034,11.9151,8229,0.8942,0.8941 +FULL,M0_controls,log_emp,-0.0302,0.0105,-2.879,0.004,***,-0.0508,-0.0096,8229,0.8942,0.8941 +FULL,M0_controls,firm_age,-0.4461,0.0423,-10.559,0.0,***,-0.529,-0.3633,8229,0.8942,0.8941 +FULL,M0_controls,fdi10,0.1786,0.0463,3.859,0.0001,***,0.0879,0.2693,8229,0.8942,0.8941 +FULL,M1_linear,const,11.7168,0.0811,144.514,0.0,***,11.5579,11.8757,8229,0.8944,0.8943 +FULL,M1_linear,fsts_c,-0.1876,0.0534,-3.512,0.0004,***,-0.2923,-0.0829,8229,0.8944,0.8943 +FULL,M1_linear,log_emp,-0.0211,0.0108,-1.95,0.0512,*,-0.0423,0.0001,8229,0.8944,0.8943 +FULL,M1_linear,firm_age,-0.4392,0.0423,-10.375,0.0,***,-0.5222,-0.3563,8229,0.8944,0.8943 +FULL,M1_linear,fdi10,0.215,0.0471,4.564,0.0,***,0.1227,0.3074,8229,0.8944,0.8943 +FULL,M2_quadratic,const,11.811,0.0824,143.395,0.0,***,11.6495,11.9724,8229,0.8947,0.8946 +FULL,M2_quadratic,fsts_c,0.4866,0.1397,3.483,0.0005,***,0.2128,0.7604,8229,0.8947,0.8946 +FULL,M2_quadratic,fsts_c2,-1.1339,0.2215,-5.118,0.0,***,-1.5681,-0.6997,8229,0.8947,0.8946 +FULL,M2_quadratic,log_emp,-0.0287,0.0109,-2.639,0.0083,***,-0.0501,-0.0074,8229,0.8947,0.8946 +FULL,M2_quadratic,firm_age,-0.4359,0.0422,-10.317,0.0,***,-0.5187,-0.3531,8229,0.8947,0.8946 +FULL,M2_quadratic,fdi10,0.2087,0.0469,4.453,0.0,***,0.1169,0.3006,8229,0.8947,0.8946 +FULL,M3_cubic,const,11.7479,0.0877,133.951,0.0,***,11.576,11.9198,8229,0.8948,0.8947 +FULL,M3_cubic,fsts_c,0.3264,0.1581,2.064,0.039,**,0.0165,0.6364,8229,0.8948,0.8947 +FULL,M3_cubic,fsts_c2,0.6186,0.8355,0.74,0.459,,-1.0188,2.2561,8229,0.8948,0.8947 +FULL,M3_cubic,fsts_c3,-1.7925,0.8313,-2.156,0.0311,**,-3.4219,-0.1631,8229,0.8948,0.8947 +FULL,M3_cubic,log_emp,-0.0273,0.0109,-2.503,0.0123,**,-0.0486,-0.0059,8229,0.8948,0.8947 +FULL,M3_cubic,firm_age,-0.4343,0.0422,-10.283,0.0,***,-0.5171,-0.3515,8229,0.8948,0.8947 +FULL,M3_cubic,fdi10,0.2127,0.0469,4.531,0.0,***,0.1207,0.3046,8229,0.8948,0.8947 +FULL,M4_TCI,const,11.8166,0.0872,135.454,0.0,***,11.6456,11.9875,8202,0.897,0.8968 +FULL,M4_TCI,fsts_c,0.2041,0.1612,1.266,0.2056,,-0.1119,0.52,8202,0.897,0.8968 +FULL,M4_TCI,fsts_c2,1.1085,0.8252,1.343,0.1792,,-0.5089,2.7259,8202,0.897,0.8968 +FULL,M4_TCI,fsts_c3,-2.1554,0.8168,-2.639,0.0083,***,-3.7563,-0.5544,8202,0.897,0.8968 +FULL,M4_TCI,tci_z,0.1939,0.019,10.222,0.0,***,0.1567,0.231,8202,0.897,0.8968 +FULL,M4_TCI,fsts_x_tci,-0.152,0.1096,-1.387,0.1653,,-0.3667,0.0627,8202,0.897,0.8968 +FULL,M4_TCI,fsts2_x_tci,0.1102,0.1725,0.639,0.5231,,-0.228,0.4484,8202,0.897,0.8968 +FULL,M4_TCI,log_emp,-0.0737,0.0113,-6.504,0.0,***,-0.0959,-0.0515,8202,0.897,0.8968 +FULL,M4_TCI,firm_age,-0.3926,0.0419,-9.368,0.0,***,-0.4748,-0.3105,8202,0.897,0.8968 +FULL,M4_TCI,fdi10,0.1583,0.0462,3.428,0.0006,***,0.0678,0.2487,8202,0.897,0.8968 +FULL,M5_DAI,const,11.7695,0.0871,135.128,0.0,***,11.5988,11.9402,8228,0.8961,0.8959 +FULL,M5_DAI,fsts_c,0.312,0.1584,1.969,0.0489,**,0.0015,0.6225,8228,0.8961,0.8959 +FULL,M5_DAI,fsts_c2,0.6276,0.8319,0.754,0.4506,,-1.0029,2.2581,8228,0.8961,0.8959 +FULL,M5_DAI,fsts_c3,-1.7725,0.8272,-2.143,0.0321,**,-3.3938,-0.1512,8228,0.8961,0.8959 +FULL,M5_DAI,dai_z,0.1195,0.0199,6.001,0.0,***,0.0805,0.1585,8228,0.8961,0.8959 +FULL,M5_DAI,fsts_x_dai,-0.1826,0.1172,-1.558,0.1192,,-0.4124,0.0471,8228,0.8961,0.8959 +FULL,M5_DAI,fsts2_x_dai,0.2852,0.1903,1.499,0.1338,,-0.0877,0.6581,8228,0.8961,0.8959 +FULL,M5_DAI,log_emp,-0.0508,0.0111,-4.575,0.0,***,-0.0725,-0.029,8228,0.8961,0.8959 +FULL,M5_DAI,firm_age,-0.3979,0.0421,-9.455,0.0,***,-0.4804,-0.3154,8228,0.8961,0.8959 +FULL,M5_DAI,fdi10,0.1978,0.0463,4.273,0.0,***,0.1071,0.2886,8228,0.8961,0.8959 +FULL,M6_TCI_DAI,const,11.8108,0.0865,136.484,0.0,***,11.6412,11.9804,8201,0.8972,0.897 +FULL,M6_TCI_DAI,fsts_c,0.1841,0.1573,1.17,0.2419,,-0.1242,0.4924,8201,0.8972,0.897 +FULL,M6_TCI_DAI,fsts_c2,0.9375,0.8187,1.145,0.2522,,-0.6671,2.5421,8201,0.8972,0.897 +FULL,M6_TCI_DAI,fsts_c3,-1.9356,0.8115,-2.385,0.0171,**,-3.526,-0.3451,8201,0.8972,0.897 +FULL,M6_TCI_DAI,tci_z,0.1639,0.0159,10.29,0.0,***,0.1327,0.1951,8201,0.8972,0.897 +FULL,M6_TCI_DAI,dai_z,0.077,0.0157,4.902,0.0,***,0.0462,0.1078,8201,0.8972,0.897 +FULL,M6_TCI_DAI,log_emp,-0.0776,0.0114,-6.83,0.0,***,-0.0998,-0.0553,8201,0.8972,0.897 +FULL,M6_TCI_DAI,firm_age,-0.3786,0.0419,-9.045,0.0,***,-0.4606,-0.2966,8201,0.8972,0.897 +FULL,M6_TCI_DAI,fdi10,0.1542,0.046,3.349,0.0008,***,0.064,0.2444,8201,0.8972,0.897 +FULL,M7_full,const,11.8175,0.087,135.777,0.0,***,11.647,11.9881,8201,0.8973,0.8971 +FULL,M7_full,fsts_c,0.2219,0.1606,1.382,0.1669,,-0.0928,0.5367,8201,0.8973,0.8971 +FULL,M7_full,fsts_c2,1.058,0.8248,1.283,0.1996,,-0.5586,2.6746,8201,0.8973,0.8971 +FULL,M7_full,fsts_c3,-2.1114,0.8169,-2.584,0.0098,***,-3.7126,-0.5102,8201,0.8973,0.8971 +FULL,M7_full,tci_z,0.1818,0.0228,7.971,0.0,***,0.1371,0.2265,8201,0.8973,0.8971 +FULL,M7_full,fsts_x_tci,-0.0089,0.1334,-0.067,0.9469,,-0.2703,0.2526,8201,0.8973,0.8971 +FULL,M7_full,fsts2_x_tci,-0.1302,0.2064,-0.631,0.5283,,-0.5348,0.2744,8201,0.8973,0.8971 +FULL,M7_full,dai_z,0.0339,0.0241,1.409,0.1589,,-0.0133,0.081,8201,0.8973,0.8971 +FULL,M7_full,fsts_x_dai,-0.3206,0.1437,-2.231,0.0257,**,-0.6023,-0.0389,8201,0.8973,0.8971 +FULL,M7_full,fsts2_x_dai,0.5108,0.2279,2.242,0.025,**,0.0642,0.9575,8201,0.8973,0.8971 +FULL,M7_full,log_emp,-0.079,0.0114,-6.955,0.0,***,-0.1013,-0.0567,8201,0.8973,0.8971 +FULL,M7_full,firm_age,-0.3803,0.0419,-9.08,0.0,***,-0.4624,-0.2982,8201,0.8973,0.8971 +FULL,M7_full,fdi10,0.1606,0.0459,3.496,0.0005,***,0.0706,0.2507,8201,0.8973,0.8971 diff --git a/data/analysis/p7/p7_paternoster.csv b/data/analysis/p7/p7_paternoster.csv new file mode 100644 index 00000000..fb4c6232 --- /dev/null +++ b/data/analysis/p7/p7_paternoster.csv @@ -0,0 +1,29 @@ +sample_a,sample_b,coef_a,coef_b,z,p2,diff +CHN_2012,CHN_2024,1.1934,1.3127,-0.21,0.8336,-0.1193 +CHN_2012,CHN_pooled,1.1934,1.1022,0.228,0.8199,0.0912 +CHN_2012,SGP_2023,1.1934,4.0877,-3.077,0.0021,-2.8943 +CHN_2012,VNM_2009,1.1934,0.23,2.042,0.0412,0.9634 +CHN_2012,VNM_2015,1.1934,0.6621,1.017,0.3093,0.5313 +CHN_2012,VNM_2023,1.1934,0.1625,1.797,0.0723,1.0309 +CHN_2012,VNM_pooled,1.1934,0.4133,2.077,0.0378,0.7801 +CHN_2024,CHN_pooled,1.3127,1.1022,0.387,0.6987,0.2105 +CHN_2024,SGP_2023,1.3127,4.0877,-2.747,0.006,-2.775 +CHN_2024,VNM_2009,1.3127,0.23,1.809,0.0704,1.0827 +CHN_2024,VNM_2015,1.3127,0.6621,1.018,0.3087,0.6506 +CHN_2024,VNM_2023,1.3127,0.1625,1.688,0.0915,1.1502 +CHN_2024,VNM_pooled,1.3127,0.4133,1.711,0.0871,0.8994 +CHN_pooled,SGP_2023,1.1022,4.0877,-3.223,0.0013,-2.9855 +CHN_pooled,VNM_2009,1.1022,0.23,1.971,0.0488,0.8722 +CHN_pooled,VNM_2015,1.1022,0.6621,0.887,0.3752,0.4401 +CHN_pooled,VNM_2023,1.1022,0.1625,1.709,0.0875,0.9397 +CHN_pooled,VNM_pooled,1.1022,0.4133,2.038,0.0415,0.6889 +SGP_2023,VNM_2009,4.0877,0.23,4.021,0.0001,3.8577 +SGP_2023,VNM_2015,4.0877,0.6621,3.477,0.0005,3.4256 +SGP_2023,VNM_2023,4.0877,0.1625,3.874,0.0001,3.9252 +SGP_2023,VNM_pooled,4.0877,0.4133,4.012,0.0001,3.6744 +VNM_2009,VNM_2015,0.23,0.6621,-0.778,0.4367,-0.4321 +VNM_2009,VNM_2023,0.23,0.1625,0.112,0.911,0.0675 +VNM_2009,VNM_pooled,0.23,0.4133,-0.436,0.6626,-0.1833 +VNM_2015,VNM_2023,0.6621,0.1625,0.775,0.438,0.4996 +VNM_2015,VNM_pooled,0.6621,0.4133,0.522,0.6015,0.2488 +VNM_2023,VNM_pooled,0.1625,0.4133,-0.471,0.6373,-0.2508 diff --git a/scripts/P7_capstone_47countries_analysis.py b/scripts/P7_capstone_47countries_analysis.py new file mode 100644 index 00000000..51496239 --- /dev/null +++ b/scripts/P7_capstone_47countries_analysis.py @@ -0,0 +1,691 @@ +""" +P7_capstone_47countries_analysis.py +===================================== +P7 capstone: M0-M7 regression suite across available WBES economies. + +Data accepted (auto-detected): + (A) /tmp/wbes/pool.csv — full 47-country pool from wbes/02_harmonize.py + (B) data/analysis/pooled_wbes_6waves.csv — existing 6-wave pool (SGP/VNM/CHN) + +Column mapping from pooled_wbes_6waves.csv: + ln_labor_prod → lnLP (log labor productivity) + export_pct → FSTS × 100 (rescale to [0,1]) + quality_cert → b8 (ISO cert) + foreign_tech → e6/h7 (foreign-licensed tech) + website → c22b (DAI primary) + ln_empl → log_emp + firm_age → firm_age + foreign_own → fdi proxy (≥10% → fdi10 dummy) + TCI_thin/full → pre-built TCI composites + DAI_thin/rich → pre-built DAI composites + +Spec (thesis §3.3-§3.4): + FSTS_c = FSTS - wave_mean_FSTS (mean-centred within country×year) + lnLP winsorised 1%/99% within country×year + TCI_z = z-std(TCI_thin) within wave [primary, cross-wave] + DAI_z = z-std(DAI_thin) within wave [primary, cross-wave] + Controls: log_emp, firm_age, fdi10 + FEs: country dummies, year dummies, sector dummies (if available) + SE: HC1 robust + +Models M0-M7 (thesis Table 3.2): + M0 controls + FE + M1 M0 + FSTS_c + M2 M1 + FSTS_c^2 + M3 M2 + FSTS_c^3 (H1 cubic S-curve) + M4 M3 + TCI_z + FSTS×TCI (H2 TCI moderation) + M5 M3 + DAI_z + FSTS×DAI (H3 DAI moderation) + M6 M3 + TCI_z + DAI_z (joint direct, no moderation) + M7 M3 + TCI mod + DAI mod (FULL) + +Outputs: data/analysis/p7/ + p7_descriptives.csv + p7_m0m7_full.csv + p7_m0m7_by_country.csv + p7_m0m7_by_period.csv + p7_lm_tests.csv + p7_paternoster.csv + p7_grand_table.csv + +Author : Đỗ Thùy Hương | PGS.TS. Phan Anh Tú +""" +from __future__ import annotations +import warnings +from pathlib import Path +from typing import Dict, List, Optional, Tuple + +import numpy as np +import pandas as pd +import statsmodels.api as sm +from scipy import stats as scipy_stats + +warnings.filterwarnings("ignore") +np.random.seed(20260427) + +# ============================================================== +# PATHS +# ============================================================== +POOL_47 = Path("/tmp/wbes/pool.csv") +POOL_6W = Path("data/analysis/pooled_wbes_6waves.csv") +OUT_DIR = Path("data/analysis/p7") +OUT_DIR.mkdir(parents=True, exist_ok=True) + +# ============================================================== +# ICRV REGIME MAPPING (thesis §3.3.6) +# ============================================================== +ICRV = { + # Regime 1 — Advanced innovation-driven + "SGP": "R1_Adv_Innovation", "HKG": "R1_Adv_Innovation", + "KOR": "R1_Adv_Innovation", "TWN": "R1_Adv_Innovation", + "ISR": "R1_Adv_Innovation", "CYP": "R1_Adv_Innovation", + # Regime 1' — Advanced resource-driven + "SAU": "R1p_Adv_Resource", "QAT": "R1p_Adv_Resource", + "KWT": "R1p_Adv_Resource", "BHR": "R1p_Adv_Resource", + "BRN": "R1p_Adv_Resource", + # Regime 2 — Upper-middle + "CHN": "R2_Upper_Middle", "MYS": "R2_Upper_Middle", + "THA": "R2_Upper_Middle", "KAZ": "R2_Upper_Middle", + "ARM": "R2_Upper_Middle", "GEO": "R2_Upper_Middle", + # Regime 3 — Emerging + "IND": "R3_Emerging", "IDN": "R3_Emerging", "PHL": "R3_Emerging", + "VNM": "R3_Emerging", "LKA": "R3_Emerging", "JOR": "R3_Emerging", + "MNG": "R3_Emerging", + # Regime 4 — Frontier + "BGD": "R4_Frontier", "PAK": "R4_Frontier", "LAO": "R4_Frontier", + "KHM": "R4_Frontier", "MMR": "R4_Frontier", "NPL": "R4_Frontier", + "BTN": "R4_Frontier", "MDV": "R4_Frontier", "UZB": "R4_Frontier", + "TJK": "R4_Frontier", "KGZ": "R4_Frontier", "TKM": "R4_Frontier", + "AFG": "R4_Frontier", "TLS": "R4_Frontier", "IRQ": "R4_Frontier", + "LBN": "R4_Frontier", "YEM": "R4_Frontier", + # Regime 5 — SIDS Pacific + "FJI": "R5_SIDS", "PNG": "R5_SIDS", "SLB": "R5_SIDS", + "TON": "R5_SIDS", "VUT": "R5_SIDS", "WSM": "R5_SIDS", +} + +REGIME_ORDER = [ + "R1_Adv_Innovation", "R1p_Adv_Resource", + "R2_Upper_Middle", "R3_Emerging", + "R4_Frontier", "R5_SIDS", +] + + +def assign_period(year: int) -> str: + if year <= 2013: + return "P1_2009_2013" + elif year <= 2018: + return "P2_2014_2018" + else: + return "P3_2019_2025" + + +# ============================================================== +# DATA LOADING +# ============================================================== +def load_data() -> pd.DataFrame: + if POOL_47.exists(): + print(f"[INFO] Loading full pool: {POOL_47}") + df = pd.read_csv(POOL_47) + return _norm_pool47(df) + if POOL_6W.exists(): + print(f"[INFO] Loading 6-wave pool: {POOL_6W}") + df = pd.read_csv(POOL_6W) + return _norm_6wave(df) + raise FileNotFoundError(f"No data found at {POOL_47} or {POOL_6W}") + + +def _norm_pool47(df: pd.DataFrame) -> pd.DataFrame: + rn = { + "country_iso3": "country", "year_survey": "year", + "log_labor_prod": "lnlp_raw", "log_employees": "log_emp", + "ln_labor_prod": "lnlp_raw", "ln_empl": "log_emp", + "fsts_pct": "fsts_pct", "export_pct": "fsts_pct", + "rd_active": "h8", + "iso_cert": "quality_cert", "website": "website", + "sector_code": "sector", + } + df = df.rename(columns={k: v for k, v in rn.items() if k in df.columns}) + df["fsts"] = pd.to_numeric(df["fsts_pct"], errors="coerce").clip(0, 100) / 100.0 + for col in ["e6", "h7", "foreign_tech"]: + if col in df.columns: + df["foreign_tech"] = df[col] + break + if "fdi10" not in df.columns: + # try b2b (raw WBES) then foreign_own (pre-harmonised) + fo_raw = pd.to_numeric( + df.get("b2b", df.get("foreign_own", pd.Series(dtype=float))), + errors="coerce", + ) + df["fdi10"] = (fo_raw >= 10).astype(float).where(fo_raw.notna()) + # Build TCI_thin and DAI_thin if not present + if "TCI_thin" not in df.columns: + items = df[["quality_cert", "foreign_tech"]].apply(pd.to_numeric, errors="coerce") + df["TCI_thin"] = items.mean(axis=1, skipna=True).where(items.notna().sum(axis=1) >= 1) + if "DAI_thin" not in df.columns: + df["DAI_thin"] = pd.to_numeric(df.get("website", pd.Series(dtype=float)), errors="coerce") + return df + + +def _norm_6wave(df: pd.DataFrame) -> pd.DataFrame: + """Map pooled_wbes_6waves.csv columns to internal names.""" + rn = { + "ln_labor_prod": "lnlp_raw", + "ln_empl": "log_emp", + "export_pct": "fsts_pct", # 0-100 scale + } + df = df.rename(columns={k: v for k, v in rn.items() if k in df.columns}) + # FSTS: rescale 0-100 → 0-1 + df["fsts"] = pd.to_numeric(df["fsts_pct"], errors="coerce").clip(0, 100) / 100.0 + # FDI dummy: foreign_own ≥ 10% + if "fdi10" not in df.columns and "foreign_own" in df.columns: + fo = pd.to_numeric(df["foreign_own"], errors="coerce") + df["fdi10"] = (fo >= 10).astype(float).where(fo.notna()) + return df + + +# ============================================================== +# FEATURE ENGINEERING +# ============================================================== +def winsorize_group(s: pd.Series, lo=0.01, hi=0.99) -> pd.Series: + valid = s.dropna() + if len(valid) < 20: + return s + p_lo, p_hi = valid.quantile([lo, hi]) + return s.clip(p_lo, p_hi) + + +def z_std(s: pd.Series) -> pd.Series: + valid = s.dropna() + if len(valid) < 5 or valid.std() == 0: + return pd.Series(np.nan, index=s.index) + return (s - valid.mean()) / valid.std() + + +def build_features(df: pd.DataFrame) -> pd.DataFrame: + df = df.copy() + + # Cast numeric + for col in ["lnlp_raw", "fsts", "log_emp", "firm_age", "fdi10", + "quality_cert", "foreign_tech", "website", + "TCI_thin", "TCI_full", "DAI_thin", "DAI_rich"]: + if col in df.columns: + df[col] = pd.to_numeric(df[col], errors="coerce") + + # lnLP: winsorise within wave + df["lnlp"] = ( + df.groupby(["country", "year"])["lnlp_raw"] + .transform(lambda s: winsorize_group(s, 0.01, 0.99)) + ) + + # FSTS: mean-centre within wave + wave_mean = df.groupby(["country", "year"])["fsts"].transform("mean") + df["fsts_c"] = df["fsts"] - wave_mean + df["fsts_c2"] = df["fsts_c"] ** 2 + df["fsts_c3"] = df["fsts_c"] ** 3 + + # TCI_z: z-std(TCI_thin) within wave + if "TCI_thin" in df.columns: + df["tci_z"] = df.groupby(["country", "year"])["TCI_thin"].transform(z_std) + else: + items = df[["quality_cert", "foreign_tech"]].apply(pd.to_numeric, errors="coerce") + tci_raw = items.mean(axis=1, skipna=True).where(items.notna().sum(axis=1) >= 1) + df["tci_z"] = df.groupby(["country", "year"])[tci_raw.name if hasattr(tci_raw, "name") else "quality_cert"].transform(z_std) + df["_tci_raw"] = tci_raw + df["tci_z"] = df.groupby(["country", "year"])["_tci_raw"].transform(z_std) + + # TCI_full_z (robustness) + if "TCI_full" in df.columns: + df["tci_full_z"] = df.groupby(["country", "year"])["TCI_full"].transform(z_std) + + # DAI_z: z-std(DAI_thin) within wave + if "DAI_thin" in df.columns: + df["dai_z"] = df.groupby(["country", "year"])["DAI_thin"].transform(z_std) + elif "website" in df.columns: + df["dai_z"] = df.groupby(["country", "year"])["website"].transform(z_std) + else: + df["dai_z"] = np.nan + + # DAI_rich_z (robustness, 2023+ only) + if "DAI_rich" in df.columns: + df["dai_rich_z"] = df.groupby(["country", "year"])["DAI_rich"].transform(z_std) + + # ICRV regime + df["icrv"] = df["country"].map(ICRV).fillna("R_Other") + + # Period + df["period"] = df["year"].apply(assign_period) + + # firm_age guard + if "firm_age" in df.columns: + df["firm_age"] = df["firm_age"].clip(0, 200) + + # Interaction terms + df["fsts_x_tci"] = df["fsts_c"] * df["tci_z"] + df["fsts2_x_tci"] = df["fsts_c2"] * df["tci_z"] + df["fsts_x_dai"] = df["fsts_c"] * df["dai_z"] + df["fsts2_x_dai"] = df["fsts_c2"] * df["dai_z"] + + return df + + +def add_fe_dummies( + df: pd.DataFrame, + country: bool = True, + year: bool = True, + sector: bool = False, +) -> Tuple[pd.DataFrame, List[str]]: + fe_cols: List[str] = [] + if country and df["country"].nunique() > 1: + d = pd.get_dummies(df["country"], prefix="FE_c", drop_first=True, dtype=float) + df = pd.concat([df, d], axis=1) + fe_cols.extend(d.columns.tolist()) + if year and df["year"].nunique() > 1: + d = pd.get_dummies(df["year"].astype(str), prefix="FE_y", drop_first=True, dtype=float) + df = pd.concat([df, d], axis=1) + fe_cols.extend(d.columns.tolist()) + if sector and "sector" in df.columns and df["sector"].nunique() > 1: + s = df["sector"].fillna("Unknown").astype(str) + d = pd.get_dummies(s, prefix="FE_s", drop_first=True, dtype=float) + df = pd.concat([df, d], axis=1) + fe_cols.extend(d.columns.tolist()) + return df, fe_cols + + +# ============================================================== +# REGRESSION ENGINE +# ============================================================== +CONTROLS = ["log_emp", "firm_age", "fdi10"] + + +def fit_ols(y: pd.Series, X: pd.DataFrame, cov_type: str = "HC1"): + Xc = sm.add_constant(X.astype(float)) + return sm.OLS(y.astype(float), Xc, missing="drop").fit(cov_type=cov_type) + + +def extract_coefs(model, model_name: str, sample_lbl: str) -> pd.DataFrame: + rows = [] + for var in model.params.index: + if var.startswith(("FE_c", "FE_y", "FE_s")): + continue + p = model.pvalues[var] + rows.append({ + "sample": sample_lbl, + "model": model_name, + "variable": var, + "coef": round(model.params[var], 4), + "se": round(model.bse[var], 4), + "t": round(model.tvalues[var], 3), + "p": round(p, 4), + "stars": "***" if p < 0.01 else "**" if p < 0.05 else "*" if p < 0.10 else "", + "ci_lo": round(model.conf_int().loc[var, 0], 4), + "ci_hi": round(model.conf_int().loc[var, 1], 4), + "n": int(model.nobs), + "r2": round(model.rsquared, 4), + "adj_r2": round(model.rsquared_adj, 4), + }) + return pd.DataFrame(rows) + + +# ============================================================== +# STATISTICAL TESTS +# ============================================================== +def lm_cubic(model, b1="fsts_c", b2="fsts_c2", b3="fsts_c3") -> dict: + """Lind-Mehlum extended: find TP1, TP2 from cubic; Wald p for β2=β3=0.""" + out = {"b1": np.nan, "b2": np.nan, "b3": np.nan, + "tp1_pct": np.nan, "tp2_pct": np.nan, + "disc": np.nan, "wald_p": np.nan} + if not all(v in model.params.index for v in [b1, b2, b3]): + return out + _b1, _b2, _b3 = float(model.params[b1]), float(model.params[b2]), float(model.params[b3]) + out.update({"b1": round(_b1, 4), "b2": round(_b2, 4), "b3": round(_b3, 4)}) + disc = 4*_b2**2 - 12*_b3*_b1 + out["disc"] = round(disc, 6) + if disc >= 0 and abs(_b3) > 1e-14: + sq = np.sqrt(disc) + out["tp1_pct"] = round((-2*_b2 - sq) / (6*_b3) * 100, 1) + out["tp2_pct"] = round((-2*_b2 + sq) / (6*_b3) * 100, 1) + try: + idx = list(model.params.index) + R = np.zeros((2, len(idx))) + R[0, idx.index(b2)] = 1 + R[1, idx.index(b3)] = 1 + out["wald_p"] = round(float(model.f_test(R).pvalue), 4) + except Exception: + pass + return out + + +def lm_quadratic(model, b1="fsts_c", b2="fsts_c2", x_min=0.0, x_max=1.0) -> dict: + """Lind-Mehlum (2010) inverted-U test.""" + out = {"lm_p": np.nan, "tp_pct": np.nan} + if b1 not in model.params.index or b2 not in model.params.index: + return out + _b1, _b2 = float(model.params[b1]), float(model.params[b2]) + cov = model.cov_params() + v1, v2, c12 = float(cov.loc[b1, b1]), float(cov.loc[b2, b2]), float(cov.loc[b1, b2]) + sl_lo = _b1 + 2*_b2*x_min + sl_hi = _b1 + 2*_b2*x_max + se_lo = np.sqrt(max(v1 + 4*x_min**2*v2 + 4*x_min*c12, 0)) + se_hi = np.sqrt(max(v1 + 4*x_max**2*v2 + 4*x_max*c12, 0)) + t_lo = sl_lo / se_lo if se_lo > 0 else np.nan + t_hi = sl_hi / se_hi if se_hi > 0 else np.nan + p_lo = 1 - scipy_stats.norm.cdf(t_lo) if not np.isnan(t_lo) else np.nan + p_hi = scipy_stats.norm.cdf(t_hi) if not np.isnan(t_hi) else np.nan + lm_p = max(p_lo, p_hi) if not any(np.isnan([p_lo, p_hi])) else np.nan + tp = -_b1 / (2*_b2) if abs(_b2) > 1e-14 else np.nan + out.update({"lm_p": round(lm_p, 4) if not np.isnan(lm_p) else np.nan, + "tp_pct": round(tp*100, 1) if not np.isnan(tp) else np.nan}) + return out + + +def paternoster_z(b1, se1, b2, se2) -> dict: + if any(pd.isna([b1, se1, b2, se2])): + return {"z": np.nan, "p2": np.nan, "diff": np.nan} + diff = b1 - b2 + se = np.sqrt(se1**2 + se2**2) + z = diff / se if se > 0 else np.nan + p = 2*(1 - scipy_stats.norm.cdf(abs(z))) if not np.isnan(z) else np.nan + return {"z": round(z, 3), "p2": round(p, 4), "diff": round(diff, 4)} + + +# ============================================================== +# MODEL SUITE M0-M7 +# ============================================================== +def run_m0m7( + df: pd.DataFrame, label: str, fe_cols: List[str], verbose: bool = True +) -> Dict: + controls = [c for c in CONTROLS if c in df.columns] + x_fe = [c for c in fe_cols if c in df.columns] + y = df["lnlp"] + + def _X(*extra): + cols = [c for c in extra if c in df.columns] + controls + x_fe + return df[cols] + + n_tci = df["tci_z"].notna().sum() if "tci_z" in df.columns else 0 + n_dai = df["dai_z"].notna().sum() if "dai_z" in df.columns else 0 + MIN = 50 + + models: Dict = {} + models["M0_controls"] = fit_ols(y, _X()) + models["M1_linear"] = fit_ols(y, _X("fsts_c")) + models["M2_quadratic"] = fit_ols(y, _X("fsts_c", "fsts_c2")) + models["M3_cubic"] = fit_ols(y, _X("fsts_c", "fsts_c2", "fsts_c3")) + + if n_tci >= MIN: + models["M4_TCI"] = fit_ols(y, _X("fsts_c", "fsts_c2", "fsts_c3", + "tci_z", "fsts_x_tci", "fsts2_x_tci")) + if n_dai >= MIN: + models["M5_DAI"] = fit_ols(y, _X("fsts_c", "fsts_c2", "fsts_c3", + "dai_z", "fsts_x_dai", "fsts2_x_dai")) + if n_tci >= MIN and n_dai >= MIN: + models["M6_TCI_DAI"] = fit_ols(y, _X("fsts_c", "fsts_c2", "fsts_c3", + "tci_z", "dai_z")) + models["M7_full"] = fit_ols(y, _X("fsts_c", "fsts_c2", "fsts_c3", + "tci_z", "fsts_x_tci", "fsts2_x_tci", + "dai_z", "fsts_x_dai", "fsts2_x_dai")) + if verbose: + m3 = models.get("M3_cubic") + if m3: + lm = lm_cubic(m3) + print(f" [{label}] M3 n={int(m3.nobs):,} " + f"β1={lm['b1']:+.3f} β2={lm['b2']:+.3f} β3={lm['b3']:+.3f} " + f"TP1={lm['tp1_pct']}% TP2={lm['tp2_pct']}% Wald_p={lm['wald_p']}") + for tag, mkey, vname in [ + ("M4 TCI", "M4_TCI", "tci_z"), + ("M5 DAI", "M5_DAI", "dai_z"), + ]: + mod = models.get(mkey) + if mod and vname in mod.params.index: + print(f" [{label}] {tag}: β={mod.params[vname]:+.3f} " + f"(p={mod.pvalues[vname]:.3f}){' ***' if mod.pvalues[vname]<0.01 else ' **' if mod.pvalues[vname]<0.05 else ' *' if mod.pvalues[vname]<0.10 else ''}") + return models + + +# ============================================================== +# ANALYSIS PIPELINES +# ============================================================== +def analyze_full(df: pd.DataFrame) -> Tuple[pd.DataFrame, pd.DataFrame]: + print("\n" + "="*65) + print(f"FULL POOL — {df['country'].nunique()} economies n={len(df):,} " + f"years {df['year'].min()}–{df['year'].max()}") + print("="*65) + df_fe, fe_cols = add_fe_dummies(df) + models = run_m0m7(df_fe, "Full", fe_cols, verbose=True) + + coef_rows, lm_rows = [], [] + for mn, mod in models.items(): + coef_rows.append(extract_coefs(mod, mn, "FULL")) + lm = lm_cubic(mod) + lm.update({"sample": "FULL", "model": mn, "n": int(mod.nobs)}) + lm_rows.append(lm) + lm2 = lm_quadratic(mod) + lm_rows[-1].update({"lm_p_quad": lm2["lm_p"], "tp_quad_pct": lm2["tp_pct"]}) + + return pd.concat(coef_rows, ignore_index=True), pd.DataFrame(lm_rows) + + +def analyze_by_country(df: pd.DataFrame) -> Tuple[pd.DataFrame, pd.DataFrame]: + """Run M0-M7 per country (and pooled multi-wave where applicable).""" + print("\n" + "="*65) + print("BY COUNTRY / WAVE") + print("="*65) + coef_rows, lm_rows = [], [] + + for country in sorted(df["country"].unique()): + sub = df[df["country"] == country].copy() + waves = sorted(sub["year"].unique()) + + # Individual waves + for yr in waves: + sw = sub[sub["year"] == yr].copy() + if len(sw) < 50: + continue + lbl = f"{country}_{yr}" + print(f"\n ---- {lbl} (n={len(sw):,}) ----") + sw_fe, fe_cols = add_fe_dummies(sw, country=False, year=False) + models = run_m0m7(sw_fe, lbl, fe_cols, verbose=True) + for mn, mod in models.items(): + coef_rows.append(extract_coefs(mod, mn, lbl)) + lm = lm_cubic(mod) + lm.update({"sample": lbl, "model": mn, "n": int(mod.nobs)}) + lm_rows.append(lm) + + # Pooled across waves (if ≥2 waves) + if len(waves) >= 2: + lbl = f"{country}_pooled" + print(f"\n ---- {lbl} (n={len(sub):,}) ----") + sub_fe, fe_cols = add_fe_dummies(sub, country=False, year=True) + models = run_m0m7(sub_fe, lbl, fe_cols, verbose=True) + for mn, mod in models.items(): + coef_rows.append(extract_coefs(mod, mn, lbl)) + lm = lm_cubic(mod) + lm.update({"sample": lbl, "model": mn, "n": int(mod.nobs)}) + lm_rows.append(lm) + + return ( + pd.concat(coef_rows, ignore_index=True) if coef_rows else pd.DataFrame(), + pd.DataFrame(lm_rows), + ) + + +def analyze_by_period(df: pd.DataFrame) -> pd.DataFrame: + print("\n" + "="*65) + print("BY PERIOD") + print("="*65) + coef_rows = [] + for period in ["P1_2009_2013", "P2_2014_2018", "P3_2019_2025"]: + sub = df[df["period"] == period].copy() + if len(sub) < 50: + print(f" [SKIP] {period}: n={len(sub)}") + continue + print(f"\n ---- {period} (n={len(sub):,}) ----") + sub_fe, fe_cols = add_fe_dummies(sub) + models = run_m0m7(sub_fe, period, fe_cols, verbose=True) + for mn, mod in models.items(): + coef_rows.append(extract_coefs(mod, mn, period)) + return pd.concat(coef_rows, ignore_index=True) if coef_rows else pd.DataFrame() + + +def build_grand_table( + full_res: pd.DataFrame, + country_res: pd.DataFrame, + period_res: pd.DataFrame, +) -> pd.DataFrame: + KEY_VARS = ["fsts_c", "fsts_c2", "fsts_c3", + "tci_z", "fsts_x_tci", "fsts2_x_tci", + "dai_z", "fsts_x_dai", "fsts2_x_dai"] + KEY_MODELS = ["M3_cubic", "M4_TCI", "M5_DAI", "M7_full"] + + rows = [] + for df_res in [full_res, country_res, period_res]: + if df_res is None or len(df_res) == 0: + continue + for sample in df_res["sample"].unique(): + for model in KEY_MODELS: + sub = df_res[(df_res["sample"] == sample) & (df_res["model"] == model)] + if sub.empty: + continue + n_obs = sub["n"].iloc[0] + for var in KEY_VARS: + row = sub[sub["variable"] == var] + if row.empty: + continue + rows.append({ + "sample": sample, "model": model, "variable": var, + "coef": row["coef"].values[0], + "se": row["se"].values[0], + "p": row["p"].values[0], + "stars": row["stars"].values[0], + "n": n_obs, + }) + return pd.DataFrame(rows) + + +def build_paternoster(country_res: pd.DataFrame) -> pd.DataFrame: + """Cross-sample Paternoster z-tests for FSTS_c coefficient (M3).""" + MODEL = "M3_cubic" + VAR = "fsts_c" + samples = country_res["sample"].unique().tolist() + rows = [] + for i, s1 in enumerate(samples): + for s2 in samples[i+1:]: + def _get(s): + sub = country_res[ + (country_res["sample"] == s) & + (country_res["model"] == MODEL) & + (country_res["variable"] == VAR) + ] + if sub.empty: + return np.nan, np.nan + return sub["coef"].values[0], sub["se"].values[0] + b1, se1 = _get(s1) + b2, se2 = _get(s2) + pz = paternoster_z(b1, se1, b2, se2) + rows.append({"sample_a": s1, "sample_b": s2, + "coef_a": b1, "coef_b": b2, **pz}) + return pd.DataFrame(rows) + + +def build_descriptives(df: pd.DataFrame) -> pd.DataFrame: + cols = ["lnlp", "fsts", "TCI_thin", "DAI_thin", "log_emp", "firm_age", "fdi10"] + present = [c for c in cols if c in df.columns] + rows = [] + for (country, year), sub in df.groupby(["country", "year"]): + row = {"country": country, "year": int(year), + "icrv": sub["icrv"].iloc[0], "n": len(sub)} + for col in present: + valid = sub[col].dropna() + row[f"{col}_mean"] = round(valid.mean(), 4) if len(valid) else np.nan + row[f"{col}_sd"] = round(valid.std(), 4) if len(valid) else np.nan + row[f"{col}_median"] = round(valid.median(),4) if len(valid) else np.nan + row["exporter_pct"] = round((sub["fsts"] > 0).mean() * 100, 1) + rows.append(row) + return pd.DataFrame(rows) + + +# ============================================================== +# MAIN +# ============================================================== +def main() -> None: + print("[INFO] Loading data...") + df_raw = load_data() + print(f"[INFO] Raw rows : {len(df_raw):,}") + print(f"[INFO] Countries: {sorted(df_raw['country'].unique())}") + print(f"[INFO] Years : {sorted(df_raw['year'].unique())}") + + print("\n[INFO] Building features...") + df = build_features(df_raw) + + df = df.dropna(subset=["lnlp", "fsts_c"]) + print(f"[INFO] Analytic sample (lnlp + fsts_c): {len(df):,}") + print(f"[INFO] ICRV:\n{df['icrv'].value_counts().to_string()}") + print(f"[INFO] Period:\n{df['period'].value_counts().to_string()}") + + # ---- Descriptives ---- + desc = build_descriptives(df) + desc.to_csv(OUT_DIR / "p7_descriptives.csv", index=False) + print(f"\n[INFO] Descriptives -> {OUT_DIR}/p7_descriptives.csv") + print(desc[["country", "year", "n", "lnlp_mean", "lnlp_sd", + "fsts_mean", "exporter_pct"]].to_string(index=False)) + + # ---- Full pool ---- + full_res, lm_full = analyze_full(df) + full_res.to_csv(OUT_DIR / "p7_m0m7_full.csv", index=False) + lm_full.to_csv(OUT_DIR / "p7_lm_full.csv", index=False) + + # ---- By country / wave ---- + country_res, lm_country = analyze_by_country(df) + if len(country_res): + country_res.to_csv(OUT_DIR / "p7_m0m7_by_country.csv", index=False) + lm_country.to_csv(OUT_DIR / "p7_lm_by_country.csv", index=False) + + # ---- By period ---- + period_res = analyze_by_period(df) + if len(period_res): + period_res.to_csv(OUT_DIR / "p7_m0m7_by_period.csv", index=False) + + # ---- Grand table ---- + grand = build_grand_table(full_res, country_res, period_res) + grand.to_csv(OUT_DIR / "p7_grand_table.csv", index=False) + + # ---- Paternoster ---- + if len(country_res): + pat = build_paternoster(country_res) + pat.to_csv(OUT_DIR / "p7_paternoster.csv", index=False) + + # ---- LM summary ---- + lm_all = pd.concat([lm_full, lm_country], ignore_index=True) + lm_all.to_csv(OUT_DIR / "p7_lm_tests.csv", index=False) + + # ---- Print grand summary ---- + print("\n" + "="*65) + print("GRAND TABLE: M3 cubic coefficients (FSTS_c, FSTS_c2, FSTS_c3)") + print("="*65) + if not grand.empty: + m3 = grand[grand["model"] == "M3_cubic"][ + ["sample", "variable", "coef", "stars", "n"] + ] + for sample in m3["sample"].unique(): + sub = m3[m3["sample"] == sample] + fsts_row = sub[sub["variable"] == "fsts_c"] + fsts2_row = sub[sub["variable"] == "fsts_c2"] + fsts3_row = sub[sub["variable"] == "fsts_c3"] + def _fmt(r): + if r.empty: return " n/a" + return f" {r['coef'].values[0]:+.3f}{r['stars'].values[0]}" + n = sub["n"].values[0] if len(sub) else "?" + print(f" {sample:<25} β1={_fmt(fsts_row)} β2={_fmt(fsts2_row)} β3={_fmt(fsts3_row)} n={n:,}") + + print("\n" + "="*65) + print("LIND-MEHLUM CUBIC (TP1 / TP2 / Wald p) — M3") + print("="*65) + lm_m3 = lm_all[lm_all["model"] == "M3_cubic"][ + ["sample", "tp1_pct", "tp2_pct", "wald_p", "n"] + ].dropna(subset=["wald_p"]) + print(lm_m3.to_string(index=False)) + + print(f"\n[DONE] Outputs in {OUT_DIR}/") + + +if __name__ == "__main__": + main() diff --git a/wbes/01_download.py b/wbes/01_download.py new file mode 100644 index 00000000..8807006b --- /dev/null +++ b/wbes/01_download.py @@ -0,0 +1,168 @@ +""" +wbes/01_download.py +=================== +Helper to download WBES Stata files from the World Bank Microdata Library. + +Usage +----- + python wbes/01_download.py --list # show all 47 surveys to download + python wbes/01_download.py --check # check which files are already present + python wbes/01_download.py --download # attempt bulk download (requires login token) + +Manual download (recommended for thesis) +---------------------------------------- +1. Go to https://microdata.worldbank.org/index.php/catalog/enterprise_surveys +2. For each economy in the list below: + a. Search by country name + b. Open the most recent survey round + c. Download → "Stata" (.dta) format + d. Place the file in: raw//__wbes.dta +3. Run: python wbes/02_harmonize.py + +Note: World Bank WBES data is freely available but requires a (free) account +on the microdata portal for bulk downloads. + +Author: Đỗ Thùy Hương | thesis 2026 +""" +from __future__ import annotations + +import argparse +import os +import sys +from pathlib import Path + +sys.path.insert(0, str(Path(__file__).parent)) +from config_wbes import COUNTRY_WAVES, ICRV + +# World Bank WBES microdata portal base +PORTAL_URL = "https://microdata.worldbank.org/index.php/catalog/enterprise_surveys" + +# Country full names for the download checklist +COUNTRY_NAMES: dict[str, str] = { + "SGP": "Singapore", "HKG": "Hong Kong SAR, China", + "KOR": "Korea, Rep.", "TWN": "Taiwan, China", + "ISR": "Israel", "CYP": "Cyprus", + "SAU": "Saudi Arabia", "QAT": "Qatar", + "KWT": "Kuwait", "BHR": "Bahrain", + "BRN": "Brunei Darussalam","CHN": "China", + "MYS": "Malaysia", "THA": "Thailand", + "KAZ": "Kazakhstan", "ARM": "Armenia", + "GEO": "Georgia", "IND": "India", + "IDN": "Indonesia", "PHL": "Philippines", + "VNM": "Vietnam", "LKA": "Sri Lanka", + "JOR": "Jordan", "MNG": "Mongolia", + "BGD": "Bangladesh", "PAK": "Pakistan", + "LAO": "Lao PDR", "KHM": "Cambodia", + "MMR": "Myanmar", "NPL": "Nepal", + "BTN": "Bhutan", "MDV": "Maldives", + "UZB": "Uzbekistan", "TJK": "Tajikistan", + "KGZ": "Kyrgyz Republic", "TKM": "Turkmenistan", + "AFG": "Afghanistan", "TLS": "Timor-Leste", + "IRQ": "Iraq", "LBN": "Lebanon", + "YEM": "Yemen", "FJI": "Fiji", + "PNG": "Papua New Guinea", "SLB": "Solomon Islands", + "TON": "Tonga", "VUT": "Vanuatu", + "WSM": "Samoa", +} + + +def list_surveys() -> None: + """Print the full download checklist.""" + print("\n" + "="*72) + print("WBES DOWNLOAD CHECKLIST — 47 economies") + print(f"Portal: {PORTAL_URL}") + print("="*72) + print(f"{'ISO3':<6} {'Regime':<22} {'Years':<20} {'Country Name'}") + print("-"*72) + for iso3, years in COUNTRY_WAVES.items(): + regime = ICRV.get(iso3, "?") + name = COUNTRY_NAMES.get(iso3, iso3) + yr_str = str(years) if years else "(no WBES rounds)" + print(f"{iso3:<6} {regime:<22} {yr_str:<20} {name}") + print("-"*72) + total = sum(1 for yrs in COUNTRY_WAVES.values() if yrs) + print(f"\nTotal: {len(COUNTRY_WAVES)} economies, " + f"{total} with available WBES rounds.\n") + print("Place downloaded files at: raw//__wbes.dta") + print("Then run: python wbes/02_harmonize.py\n") + + +def check_files(raw_dir: Path) -> None: + """Show which .dta files are present vs missing.""" + print(f"\nChecking {raw_dir.resolve()} …\n") + found, missing = [], [] + for iso3, years in COUNTRY_WAVES.items(): + for year in years: + country_dir = raw_dir / iso3 + candidates = list(country_dir.glob(f"*{year}*.dta")) if country_dir.exists() else [] + target = f"raw/{iso3}/{iso3}_{year}_wbes.dta" + if candidates: + found.append((iso3, year, str(candidates[0]))) + else: + missing.append((iso3, year, target)) + + print(f"✓ FOUND ({len(found)} waves):") + for iso3, year, path in found: + print(f" {iso3} {year} → {path}") + + print(f"\n✗ MISSING ({len(missing)} waves):") + for iso3, year, target in missing: + name = COUNTRY_NAMES.get(iso3, iso3) + print(f" {iso3} {year} → {target} [{name}]") + + pct = 100 * len(found) / max(len(found) + len(missing), 1) + print(f"\nCoverage: {len(found)}/{len(found)+len(missing)} waves ({pct:.0f}%)\n") + + +def download_attempt(raw_dir: Path) -> None: + """ + Attempt programmatic download via World Bank Microdata API. + + The WBES microdata API does not support unauthenticated bulk downloads. + This function prints curl commands the user can run after logging in. + """ + print("\nWorld Bank WBES does not support anonymous bulk download.") + print("Instead, use the curl commands below after logging in to:") + print(f" {PORTAL_URL}\n") + print("Step 1: Log in and copy your session cookie (_ga, _shibsession, etc.)") + print("Step 2: Run the curl commands (replace COOKIE with your session cookie):\n") + + for iso3, years in list(COUNTRY_WAVES.items())[:5]: # show first 5 as example + for year in years: + target = raw_dir / iso3 / f"{iso3}_{year}_wbes.dta" + name = COUNTRY_NAMES.get(iso3, iso3) + print(f"# {name} {year}") + print(f"mkdir -p raw/{iso3}") + print(f'curl -b "COOKIE" -L ' + f'"https://microdata.worldbank.org/index.php/catalog/SURVEY_ID/export/dta" ' + f'-o "raw/{iso3}/{iso3}_{year}_wbes.dta"\n') + + print("(Replace SURVEY_ID with the numeric ID from the portal URL for each survey.)") + print("\nRecommended: download manually from the portal in ~30 min for all 47 economies.") + + +def main() -> None: + parser = argparse.ArgumentParser( + description="WBES download helper for 47-country thesis pool" + ) + parser.add_argument("--list", action="store_true", help="List all surveys") + parser.add_argument("--check", action="store_true", help="Check downloaded files") + parser.add_argument("--download", action="store_true", help="Show download commands") + parser.add_argument("--raw-dir", default="raw", help="Raw data directory") + args = parser.parse_args() + + raw_dir = Path(args.raw_dir) + + if args.list: + list_surveys() + elif args.check: + check_files(raw_dir) + elif args.download: + download_attempt(raw_dir) + else: + list_surveys() + check_files(raw_dir) + + +if __name__ == "__main__": + main() diff --git a/wbes/02_harmonize.py b/wbes/02_harmonize.py new file mode 100644 index 00000000..1594e57c --- /dev/null +++ b/wbes/02_harmonize.py @@ -0,0 +1,339 @@ +""" +wbes/02_harmonize.py +==================== +Harmonize raw WBES .dta files for all 47 economies → /tmp/wbes/pool.csv + +Usage +----- + python wbes/02_harmonize.py [--raw-dir RAW_DIR] [--out OUT] + +Arguments +--------- + --raw-dir Directory containing per-country subdirectories of .dta files. + Default: raw/ + Structure expected: + raw/VNM/VNM_2009_wbes.dta + raw/VNM/VNM_2015_wbes.dta + raw/CHN/CHN_2012_wbes.dta + ... + --out Output CSV path. Default: /tmp/wbes/pool.csv + +Falls back to data/analysis/pooled_wbes_6waves.csv (already harmonised, +3 countries) if no .dta files are found under --raw-dir. + +Author: Đỗ Thùy Hương | thesis 2026 +""" +from __future__ import annotations + +import argparse +import logging +import math +import re +import sys +from pathlib import Path +from typing import Optional + +import numpy as np +import pandas as pd + +# ── import catalogue ────────────────────────────────────────────────────────── +sys.path.insert(0, str(Path(__file__).parent)) +from config_wbes import ( + COUNTRY_WAVES, ICRV, + VAR_MAP_PRIMARY, VAR_MAP_OVERRIDES, SECTOR_LABELS, +) + +logging.basicConfig( + format="%(levelname)s | %(message)s", + level=logging.INFO, +) +log = logging.getLogger("harmonize") + +# ── constants ───────────────────────────────────────────────────────────────── +SURVEY_YEAR_RE = re.compile(r"_(\d{4})_") + + +# ── helpers ─────────────────────────────────────────────────────────────────── + +def _detect_year(path: Path) -> Optional[int]: + """Extract survey year from filename.""" + m = SURVEY_YEAR_RE.search(path.name) + return int(m.group(1)) if m else None + + +def _find_dta(raw_dir: Path, iso3: str, year: int) -> Optional[Path]: + """Locate any .dta file for (iso3, year) under raw_dir/iso3/.""" + country_dir = raw_dir / iso3 + if not country_dir.exists(): + return None + for p in country_dir.glob("*.dta"): + y = _detect_year(p) + if y == year: + return p + # some files are named without year — fall through + # fuzzy: any .dta in directory if only one file for iso3 + dtas = list(country_dir.glob("*.dta")) + if len(dtas) == 1: + return dtas[0] + return None + + +def _build_var_map(year: int) -> dict[str, str]: + vmap = dict(VAR_MAP_PRIMARY) + overrides = VAR_MAP_OVERRIDES.get(year, {}) + vmap.update(overrides) + return vmap + + +def _read_dta(path: Path, var_map: dict[str, str]) -> pd.DataFrame: + """Read one WBES .dta, rename to harmonised columns, return raw slice.""" + log.info(f" Reading {path.name} …") + try: + df = pd.read_stata(str(path), convert_categoricals=False) + except Exception: + df = pd.read_stata(str(path), convert_categoricals=True) + + # lower-case all column names for safe matching + df.columns = [c.lower().strip() for c in df.columns] + + rename = {} + for raw, harm in var_map.items(): + raw_l = raw.lower() + if raw_l in df.columns and harm not in rename.values(): + rename[raw_l] = harm + + df = df.rename(columns=rename) + keep = [c for c in var_map.values() if c in df.columns] + # always keep firm_id if present + for cand in ["idstd", "id_std", "firmid", "id"]: + if cand in df.columns and "firm_id" not in df.columns: + df["firm_id"] = df[cand] + keep.append("firm_id") + df = df[[c for c in keep if c in df.columns]].copy() + return df + + +def _derive_variables(df: pd.DataFrame, iso3: str, year: int) -> pd.DataFrame: + df = df.copy() + + # ── labor productivity ──────────────────────────────────────────────────── + sales = pd.to_numeric(df.get("total_sales_raw", pd.Series(dtype=float)), + errors="coerce") + empl = pd.to_numeric(df.get("employees", pd.Series(dtype=float)), + errors="coerce") + lp = sales / empl.replace(0, np.nan) + df["ln_labor_prod"] = np.log(lp.clip(lower=1e-6)).where( + (lp > 0) & lp.notna() & (empl > 0) + ) + df["ln_empl"] = np.log(empl.replace(0, np.nan)).where(empl > 0) + + # ── FSTS: export_pct already 0-100 (WBES a14b is 0-100) ───────────────── + ep = pd.to_numeric(df.get("export_pct", pd.Series(dtype=float)), errors="coerce") + df["export_pct"] = ep.clip(0, 100) + df["exporter"] = (ep > 0).astype(float).where(ep.notna()) + + # ── firm age ────────────────────────────────────────────────────────────── + yr_est = pd.to_numeric(df.get("yr_established", pd.Series(dtype=float)), + errors="coerce") + df["firm_age"] = (year - yr_est).clip(0, 150).where(yr_est.notna()) + df.drop(columns=["yr_established"], errors="ignore", inplace=True) + + # ── foreign ownership ───────────────────────────────────────────────────── + fo = pd.to_numeric(df.get("foreign_own", pd.Series(dtype=float)), errors="coerce") + df["foreign_own"] = fo.clip(0, 100) + + # ── binary indicators → 0/1 (may be coded as 1=yes/2=no in old WBES) ──── + for col in ["quality_cert", "foreign_tech", "website", + "product_innov", "process_innov", "rd_spending"]: + if col not in df.columns: + continue + s = pd.to_numeric(df[col], errors="coerce") + # WBES sometimes: 1=yes, 2=no → recode + if s.dropna().isin([1, 2]).all() and (s == 2).any(): + df[col] = (s == 1).astype(float).where(s.notna()) + else: + df[col] = s.clip(0, 1) + + # ── TCI composite ───────────────────────────────────────────────────────── + tci_items = df[["quality_cert", "foreign_tech"]].apply( + pd.to_numeric, errors="coerce" + ) + valid_n = tci_items.notna().sum(axis=1) + df["TCI_thin"] = tci_items.mean(axis=1, skipna=True).where(valid_n >= 1) + + extra = [c for c in ["product_innov", "process_innov", "rd_spending"] + if c in df.columns] + if extra: + full_items = pd.concat([tci_items, df[extra].apply(pd.to_numeric, errors="coerce")], axis=1) + valid_full = full_items.notna().sum(axis=1) + df["TCI_full"] = full_items.mean(axis=1, skipna=True).where(valid_full >= 2) + else: + df["TCI_full"] = df["TCI_thin"] + + # ── DAI composites ──────────────────────────────────────────────────────── + df["DAI_thin"] = pd.to_numeric(df.get("website", pd.Series(dtype=float)), + errors="coerce").clip(0, 1) + epay = pd.to_numeric(df.get("epayment_pct", pd.Series(dtype=float)), errors="coerce") + epay_s = pd.to_numeric(df.get("epay_supp_pct", pd.Series(dtype=float)), errors="coerce") + dai_items = pd.concat([df["DAI_thin"], (epay / 100).clip(0, 1), + (epay_s / 100).clip(0, 1)], axis=1) + valid_dai = dai_items.notna().sum(axis=1) + df["DAI_rich"] = dai_items.mean(axis=1, skipna=True).where(valid_dai >= 1) + + # ── sector ──────────────────────────────────────────────────────────────── + if "sector_isic4" in df.columns: + s2d = pd.to_numeric(df["sector_isic4"], errors="coerce") // 10 * 10 + df["sector"] = s2d.map(SECTOR_LABELS).fillna("Other") + else: + df["sector"] = "Unknown" + + # ── identifiers ────────────────────────────────────────────────────────── + df["country"] = iso3 + df["year"] = year + df["dataset"] = f"{iso3}_{year}" + + return df + + +_HARMONISED_COLS = [ + "dataset", "country", "year", + "website", "foreign_tech", "product_innov", "process_innov", + "rd_spending", "quality_cert", + "epayment_pct", "epay_supp_pct", + "total_sales_raw", "employees", + "ln_labor_prod", "ln_empl", + "export_pct", "exporter", + "firm_age", "manager_exp", "foreign_own", + "TCI_thin", "TCI_full", "DAI_thin", "DAI_rich", + "sector", +] + + +def harmonise_one(raw_dir: Path, iso3: str, year: int) -> Optional[pd.DataFrame]: + """Return harmonised DataFrame for one (iso3, year) wave, or None.""" + path = _find_dta(raw_dir, iso3, year) + if path is None: + log.warning(f" {iso3} {year}: .dta not found under {raw_dir / iso3}/") + return None + + var_map = _build_var_map(year) + try: + df = _read_dta(path, var_map) + except Exception as exc: + log.error(f" {iso3} {year}: read error — {exc}") + return None + + if df.empty: + log.warning(f" {iso3} {year}: empty after variable selection") + return None + + df = _derive_variables(df, iso3, year) + + # keep only harmonised columns that exist + cols = [c for c in _HARMONISED_COLS if c in df.columns] + return df[cols] + + +def harmonise_all(raw_dir: Path) -> pd.DataFrame: + frames: list[pd.DataFrame] = [] + total_waves = sum(len(yrs) for yrs in COUNTRY_WAVES.values()) + done = skipped = 0 + + for iso3, years in COUNTRY_WAVES.items(): + if not years: + log.info(f"[SKIP] {iso3}: no WBES rounds listed") + skipped += 1 + continue + log.info(f"[{iso3}] {len(years)} wave(s): {years}") + for year in years: + df = harmonise_one(raw_dir, iso3, year) + if df is not None and not df.empty: + frames.append(df) + done += 1 + else: + skipped += 1 + + log.info(f"\nLoaded {done}/{total_waves} waves ({skipped} skipped/missing).") + if not frames: + raise RuntimeError( + "No data loaded. Check --raw-dir contains subdirectories " + "with .dta files, e.g. raw/VNM/VNM_2009_wbes.dta" + ) + pool = pd.concat(frames, ignore_index=True) + log.info(f"Pool: {len(pool):,} rows × {pool.shape[1]} cols, " + f"{pool['country'].nunique()} countries.") + return pool + + +def _fallback_6wave(path_6w: Path) -> pd.DataFrame: + """Load the pre-harmonised 6-wave file (SGP/VNM/CHN only).""" + log.info(f"[FALLBACK] Using {path_6w}") + df = pd.read_csv(path_6w) + if "sector" not in df.columns: + df["sector"] = "Unknown" + return df + + +# ── CLI ─────────────────────────────────────────────────────────────────────── + +def main() -> None: + parser = argparse.ArgumentParser(description="Harmonise WBES → pool.csv") + parser.add_argument("--raw-dir", default="raw", + help="Root directory of raw .dta files (default: raw/)") + parser.add_argument("--out", default="/tmp/wbes/pool.csv", + help="Output CSV path (default: /tmp/wbes/pool.csv)") + parser.add_argument("--fallback", default="data/analysis/pooled_wbes_6waves.csv", + help="Fallback CSV if no .dta files found") + args = parser.parse_args() + + raw_dir = Path(args.raw_dir) + out_path = Path(args.out) + out_path.parent.mkdir(parents=True, exist_ok=True) + + # Check if any .dta files exist + has_dta = raw_dir.exists() and any(raw_dir.rglob("*.dta")) + + if has_dta: + log.info(f"Found .dta files under {raw_dir}. Running full harmonisation.") + pool = harmonise_all(raw_dir) + else: + fallback = Path(args.fallback) + if fallback.exists(): + log.warning(f"No .dta files found under {raw_dir}.") + log.warning("Using fallback 6-wave pool (VNM/CHN/SGP only).") + log.warning("To run all 47 countries: place WBES .dta files under raw//") + pool = _fallback_6wave(fallback) + else: + log.error( + f"No .dta files found under {raw_dir} " + f"and fallback {fallback} does not exist." + ) + log.error( + "\nTo obtain WBES data:\n" + " 1. Go to https://microdata.worldbank.org/index.php/catalog/enterprise_surveys\n" + " 2. Filter by country and download the Stata (.dta) files\n" + " 3. Place under raw//__wbes.dta\n" + " 4. Re-run: python wbes/02_harmonize.py\n" + ) + sys.exit(1) + + pool.to_csv(out_path, index=False) + log.info(f"\n✓ Pool saved → {out_path} ({len(pool):,} rows)") + + # Summary statistics + log.info("\n── Country coverage ──────────────────────────────────────────") + summary = ( + pool.groupby("country") + .agg(n=("country", "count"), years=("year", lambda x: sorted(x.unique()))) + .reset_index() + ) + for _, row in summary.iterrows(): + regime = ICRV.get(row["country"], "?") + log.info(f" {row['country']:5s} n={row['n']:6,} {row['years']} [{regime}]") + + log.info(f"\nTotal: {len(pool):,} firm-wave observations, " + f"{pool['country'].nunique()} countries") + + +if __name__ == "__main__": + main() diff --git a/wbes/config_wbes.py b/wbes/config_wbes.py new file mode 100644 index 00000000..d65c6063 --- /dev/null +++ b/wbes/config_wbes.py @@ -0,0 +1,193 @@ +""" +wbes/00_config.py +================= +47-country WBES catalogue for thesis: "Internationalization & Firm Performance +Across Institutional Regimes" (Đỗ Thùy Hương, 2026). + +Each entry in COUNTRY_WAVES lists the WBES survey rounds available per economy. +Waves are identified by the integer survey year that appears in the .dta filename. + +WBES filename convention (World Bank Microdata portal): + __wbes.dta e.g. VNM_2015_wbes.dta + __Enterprise-Survey.dta + +Place all raw .dta files under: raw// + +ICRV regime assignment follows thesis §3.3.6. +""" + +# ------------------------------------------------------------------ +# 47-economy catalogue (ISO-3 → list of survey years available) +# ------------------------------------------------------------------ +COUNTRY_WAVES: dict[str, list[int]] = { + # ── R1 Advanced Innovation-driven ──────────────────────────── + "SGP": [2015, 2023], + "HKG": [2018], + "KOR": [2016], + "TWN": [], # Taiwan not in standard WBES + "ISR": [2024], + "CYP": [2019], + + # ── R1' Advanced Resource-driven ────────────────────────────── + "SAU": [2013], + "QAT": [2019], + "KWT": [2019], + "BHR": [2019], + "BRN": [2015], + + # ── R2 Upper-Middle ─────────────────────────────────────────── + "CHN": [2012, 2024], + "MYS": [2015], + "THA": [2016], + "KAZ": [2019], + "ARM": [2020], + "GEO": [2020], + + # ── R3 Emerging ────────────────────────────────────────────── + "IND": [2014, 2022], + "IDN": [2015], + "PHL": [2015], + "VNM": [2009, 2015, 2023], + "LKA": [2011], + "JOR": [2019], + "MNG": [2019], + + # ── R4 Frontier ────────────────────────────────────────────── + "BGD": [2013, 2022], + "PAK": [2013], + "LAO": [2016], + "KHM": [2016], + "MMR": [2016], + "NPL": [2013], + "BTN": [2015], + "MDV": [2019], + "UZB": [2019], + "TJK": [2019], + "KGZ": [2019], + "TKM": [], # Turkmenistan: no public WBES + "AFG": [2014], + "TLS": [2015], + "IRQ": [2011], + "LBN": [2019], + "YEM": [2013], + + # ── R5 SIDS / Pacific ───────────────────────────────────────── + "FJI": [2019], + "PNG": [2015], + "SLB": [2015], + "TON": [2015], + "VUT": [2019], + "WSM": [2019], +} + +ICRV: dict[str, str] = { + # R1 + "SGP": "R1_Adv_Innovation", "HKG": "R1_Adv_Innovation", + "KOR": "R1_Adv_Innovation", "TWN": "R1_Adv_Innovation", + "ISR": "R1_Adv_Innovation", "CYP": "R1_Adv_Innovation", + # R1' + "SAU": "R1p_Adv_Resource", "QAT": "R1p_Adv_Resource", + "KWT": "R1p_Adv_Resource", "BHR": "R1p_Adv_Resource", + "BRN": "R1p_Adv_Resource", + # R2 + "CHN": "R2_Upper_Middle", "MYS": "R2_Upper_Middle", + "THA": "R2_Upper_Middle", "KAZ": "R2_Upper_Middle", + "ARM": "R2_Upper_Middle", "GEO": "R2_Upper_Middle", + # R3 + "IND": "R3_Emerging", "IDN": "R3_Emerging", "PHL": "R3_Emerging", + "VNM": "R3_Emerging", "LKA": "R3_Emerging", "JOR": "R3_Emerging", + "MNG": "R3_Emerging", + # R4 + "BGD": "R4_Frontier", "PAK": "R4_Frontier", "LAO": "R4_Frontier", + "KHM": "R4_Frontier", "MMR": "R4_Frontier", "NPL": "R4_Frontier", + "BTN": "R4_Frontier", "MDV": "R4_Frontier", "UZB": "R4_Frontier", + "TJK": "R4_Frontier", "KGZ": "R4_Frontier", "TKM": "R4_Frontier", + "AFG": "R4_Frontier", "TLS": "R4_Frontier", "IRQ": "R4_Frontier", + "LBN": "R4_Frontier", "YEM": "R4_Frontier", + # R5 + "FJI": "R5_SIDS", "PNG": "R5_SIDS", "SLB": "R5_SIDS", + "TON": "R5_SIDS", "VUT": "R5_SIDS", "WSM": "R5_SIDS", +} + +# ------------------------------------------------------------------ +# WBES raw variable → harmonised name (with wave-year overrides) +# ------------------------------------------------------------------ +# Primary mapping (most waves 2009-2024) +VAR_MAP_PRIMARY: dict[str, str] = { + # Identity + "idstd": "firm_id", + + # Performance + "d2": "total_sales_raw", # total sales last FY (local currency) + "d2b": "total_sales_raw", # alt in some waves + "l1": "employees", # full-time perm employees + "l6": "employees", # alt in some waves + + # Internationalisation (FSTS) + "a14b": "export_pct", # exports % of sales + "a14": "export_pct", # alt name + + # Technology / TCI + "b8": "quality_cert", # ISO/int'l quality cert (0/1) + "e6": "foreign_tech", # tech licensed from foreign firm (0/1) + "h7": "foreign_tech", # alt name some waves + + # Digital / DAI + "c22b": "website", # uses email/website (0/1) + "c22": "website", # alt + + # Innovation + "h1": "product_innov", # new product last 3yr + "h3": "process_innov", # new process last 3yr + "h2": "rd_spending", # has R&D expenditure (0/1) + + # Ownership / FDI + "b2b": "foreign_own", # % shares foreign-owned + + # E-payments + "j7a": "epayment_pct", # % payments received electronically + "j7b": "epay_supp_pct", # % payments to suppliers electronic + + # Firm characteristics + "b5": "yr_established", # year firm established + "b7": "manager_exp", # years manager experience + + # Sector / location + "a3b": "sector_isic4", # primary activity ISIC4 + "a3b_2d": "sector_isic4", + "d1b2": "sector_isic4", + "a2": "region_code", +} + +# Wave-specific overrides (year → {raw_var: harmonised_name}) +VAR_MAP_OVERRIDES: dict[int, dict[str, str]] = { + 2009: {"h7": "foreign_tech", "c22b": "website"}, + 2012: {"l6": "employees", "d2b": "total_sales_raw"}, + 2013: {}, + 2014: {}, + 2015: {}, + 2016: {"h3a": "product_innov"}, + 2018: {}, + 2019: {"h1a": "product_innov", "c22a": "website"}, + 2020: {}, + 2022: {}, + 2023: {"l1b": "employees"}, + 2024: {}, +} + +# ISIC 2-digit → broad sector +SECTOR_LABELS: dict[int, str] = { + 10: "Food", 11: "Beverages", 13: "Textiles", 14: "Apparel", + 15: "Leather", 16: "Wood", 17: "Paper", 18: "Printing", + 19: "Coke/Petroleum", 20: "Chemicals", 21: "Pharma", + 22: "Rubber/Plastic", 23: "NonMetal", 24: "BasicMetal", + 25: "FabricatedMetal", 26: "Electronics", 27: "ElectricEq", + 28: "Machinery", 29: "MotorVehicle", 30: "OtherTransport", + 31: "Furniture", 32: "OtherMfg", 33: "Repair", + 45: "Retail/Wholesale", 46: "Retail/Wholesale", 47: "Retail/Wholesale", + 49: "Transport", 50: "Transport", 51: "Transport", 52: "Transport", + 55: "Hotels", 56: "Food/Bev_service", + 62: "ICT", 63: "ICT", 64: "Finance", 65: "Finance", + 68: "RealEstate", 69: "ProfServices", 70: "ProfServices", + 72: "R&D", 78: "AdminServices", +}