Compare commits

...

7 commits

Author SHA1 Message Date
9b8d8f04ef
fix(script): Fix spelling and grammar issues 2024-07-29 12:54:47 +02:00
f3eb053f49
feat(script): Add shortened growth and trade liberalisation section 2024-07-29 12:52:03 +02:00
2b986b46a6
chore(script): Fix type error 2024-07-29 12:50:18 +02:00
bd25353fa1
chore(repo): Switch preview to article 2024-07-29 09:50:18 +02:00
7b31ac15f6
feat(script): Add structural findings table 2024-07-29 09:50:05 +02:00
6ece5f2735
chore(script): Ignore unused imports in manuscript
Mainly for standard imports on top and for imports which are not used in
code cells but in-text through little in-text code cells (such as
strength_for function).
2024-07-29 09:49:33 +02:00
6089b64665
chore(script): Refactor study strength bin calc
Move calculation into validity modelling to have one source of truth
which all in-text representations will use.
2024-07-29 09:48:25 +02:00
3 changed files with 170 additions and 27 deletions

View file

@ -50,6 +50,8 @@ from matplotlib import pyplot as plt
from tabulate import tabulate
import seaborn as sns
sns.set_style("whitegrid")
# pyright: reportUnusedImport=false
```
```{python}
@ -222,27 +224,16 @@ to better identify areas of strong analytical lenses or areas of more limited an
```{python}
# | label: tbl-findings-institutional
from src.model import validity
from src.model.validity import strength_for # Careful: ruff org imports will remove
study_strength_bins = {
0.0: r"\-",
5.0: r"\+",
10.0: r"\++",
}
def strength_for(val):
return list(study_strength_bins.keys())[
list(study_strength_bins.values()).index(val)
]
findings_institutional = pd.read_csv(f"{g.SUPPLEMENTARY_DATA}/findings-institutional.csv")
findings_institutional = pd.read_csv(
f"{g.SUPPLEMENTARY_DATA}/findings-institutional.csv"
)
fd_df = validity.add_to_findings(findings_institutional, df_by_intervention)
outp = Markdown(
tabulate(
validity.add_to_findings(
findings_institutional, df_by_intervention, study_strength_bins
)[
fd_df[
[
"area of policy",
"internal_validity",
@ -262,8 +253,8 @@ outp = Markdown(
tablefmt="grid",
)
)
del findings_institutional
outp
del findings_institutional, fd_df
outp # type: ignore[ReportUnusedExpression]
```
Note: Each main finding is presented with an internal strength of evidence and an external strength of evidence which describe the combined validities of the evidence base for the respective finding.
@ -332,7 +323,7 @@ In MENA, SSA, LAC and to some extent AP, they find stricter labour and business
with market regulation having no significant impacts.
They identify lacking institutional capability to accomplish regulatory policies optimized for benefits in developing countries and see the need for policies aimed at more specific targeting of inequality reduction.[^adams-targeting]
The study also analyses the effects of FDI and school enrolment which are reviewed in their respective sections,
though its focus remains primarily on regional trends rather than individual factors as causes for inequality.
though the focus remains primarily on regional trends rather than individual factors as causes for inequality.
[^adams-targeting]: The authors furthermore suggest that regulatory policy in developing countries thus needs to be built specifically for their individual contexts and can not be exported in unaltered form from developed countries due to different structural make-up and institutional capabilities.
@ -371,7 +362,7 @@ as well as requiring the prior assumption of decreased inequality through increa
@Alinaghi2020 conduct a microsimulation to estimate the effects of a minimum wage increase in New Zealand on overall income inequality and further disaggregate along gender and poverty lines.
It finds limited redistributional effects for the policy, with negligible impact on overall income inequality and the possibility of actually increasing inequalities among lower percentile income households.
The authors caution against overestimation of the results' generalisability due to large sample weights possibly biasing results towards sole parent outcomes.
The authors caution against overestimation of the results' generalizability due to large sample weights possibly biasing results towards sole parent outcomes.
While the effects on poverty measures overall also remain insignificant for sole parents,
it does find significant poverty reduction for sole parents which are in employment.
The authors suggest these findings point to bad programme targeting,
@ -449,7 +440,8 @@ it may be one factor towards an increase in relative inequality for women which
@Cardinaleschi2019 investigate turn to collective organisation's effects on the gender wage gap in Italy.
They identify occupational segregation as the principal cause of wage disparity as opposed to educational inequalities,
with women predominantly working in more 'feminized' industries.
with women predominantly working in more 'feminised' industries.
<!-- TODO explain feminised industry term? used again for Rendall2013 -->
While collective bargaining practices specifically targeting managerial representation and wages show some reduction in the wage gap,
the impact is only marginally significant.[^cardinaleschi-msg]
The authors suggest a stronger mix of policy approaches such as including human capital development through well targeted active labour market policies.
@ -531,7 +523,7 @@ due to its requirement of demonstrating inability to work creating a negative de
<!-- TODO Potentially mention single sentence of Standing also looking into UBI -->
@Cieplinski2021 conducted a simulation study on a working hours reduction and introduction of UBI in Italy,
finding that both decreased overall income inequality through different mechanisms.
UBI sustains aggregate demand, promoting more equtiable income distribution,
UBI sustains aggregate demand, promoting more equitable income distribution,
while working time reductions significantly decrease aggregate demand through lower individual incomes,
but in turn increases overall labour force participation and employment.[^cieplinski-notes]
@ -539,6 +531,145 @@ but in turn increases overall labour force participation and employment.[^ciepli
## Structural factors
{{< portrait >}}
::: {#tbl-findings-structural}
```{python}
# | label: tbl-findings-structural
from src.model import validity
from src.model.validity import strength_for # Careful: ruff org imports will remove
findings_structural = pd.read_csv(f"{g.SUPPLEMENTARY_DATA}/findings-structural.csv")
fd_df = validity.add_to_findings(findings_structural, df_by_intervention)
outp = Markdown(
tabulate(
fd_df[
[
"area of policy",
"internal_validity",
"external_validity",
"findings",
"channels",
]
].fillna(""),
showindex=False,
headers=[
"area of policy",
"internal strength",
"external strength",
"main findings",
"channels",
],
tablefmt="grid",
)
)
del findings_structural, fd_df
outp # type: ignore[ReportUnusedExpression]
```
Note: Each main finding is presented with an internal strength of evidence and an external strength of evidence which describe the combined validities of the evidence base for the respective finding.
Validities are segmented to a weak (-) evidence base under a validity ranking of `{python} strength_for(r"\+")`,
evidential (+) from `{python} strength_for(r"\+")` and under `{python} strength_for(r"\++")` and strong evidence base (++) for `{python} strength_for(r"\++")` and above.
Summary of main findings for structural policies
:::
{{< landscape >}}
### Fiscal growth and trade liberalisation
Complementing their research on institutional labour regulation,
@Adams2015 explore how business regulation, credit regulation and FDI impact long-term income inequality in developing countries.
They find a positive correlation between FDI and income inequality,
arguing for it to be unlikely to generate positive welfare effects in developing countries primarily through bad targeting,
while business regulations show more mixed outcomes.[^adams-targeting-fdi]
However, as with their results for labour regulation,
the regional focus of the results makes it hard to disaggregate individual causes for individual national contexts.
[^adams-targeting-fdi]: The primary channel, they argue, is FDI often operating on the wrong targeting incentive structure. It would only be able to generate more equity when correctly targeting the creation of rooted connections from the local economy to surrounding economies instead of moving capital directly to surrounding economies.
@Liyanaarachchi2016 investigate the effects of trade liberalisation on income inequality and absolute poverty in Sri Lanka, using a simulation model.
They find complete elimination of tariffs resulting in absolute poverty reduction,
with tariff elimination combined with resulting fiscal policy responses for budget balancing having more mixed effects but still an absolute reduction in poverty.
Income inequality, however, sees short-term increases in most sectors and in all sectors over the long term.
The study identifies rising wage differences,
especially increases for managers, professionals and technicians,
as well as widening gaps between urban workers,
while low-income households become more dependent on private or government transfers that do not increase with the liberalisation.
@Xu2021 look at both trade liberalisation and FDI effects in 38 sub-Saharan countries,
finding a negative correlation between FDI and income inequality,
with positive relationships instead found with trade liberalisation, corruption level, political stability and rule of law and education.
The contradicting findings to @Adams2015 and @Liyanaarachchi2016 might arise due to differences in sample, variables used or the different periods under study.[^xu-adams-contradictions]
They identify income inequality reductions through FDI benefiting the agricultural sector,
primarily employing low-skilled labour,
while trade liberalisation instead creates jobs in other countries through higher import than export rates.
[^xu-adams-contradictions]: While both use a generalized method of moments approach utilizing the Gini indicator and an analysis on the regional level, the latter includes a broader range of independent domestic structural variables.
Additionally, while @Adams2015 study long-term processes from 1970 to 2012, @Xu2021 use panel data from 2000 to 2015 restricted to sub-Saharan countries, which may account for some of the differences.
@Khan2021 paint a more nuanced picture for trade liberalisation effects in a simulation study on free trade agreements (FTAs) in Pakistan,
with some trade agreements related negatively to income inequality and others positively,
for large-scale, regional and bilateral agreements.
Impacts are more dependent on micro-economic factors:
The authors identify grain and livestock as the primary channels through which trade agreements affect income inequality,
as these are the predominant sources of income for poor rural households.
Farm-worker incomes generally increase if trade agreements increase grain or livestock exports,
leading to more equitable distribution,
while inequality increases instead if this does not happen.[^khan-notes]
While most of these changes are obscured short-term by greater mobility with more even distribution across regions and households,
in the long term the study finds more equitable distribution if agricultural growth can be sustained.
[^khan-notes]: Additionally, the authors identify some wage compression effects between urban and rural households, with richer urban households often decreasing service and processed food production in this case. Generalizability may also be limited due to this strong focus on production factor reallocations within the context of rural Pakistan.
@Rendall2013 focus on the impacts of structural changes in Brazil, Mexico, Thailand and India 1987 to 2008,
especially on female labour market participation and the gender wage gap.
The results are quite divergent, with India having largely stable participation inequality,
mixed results in Mexico and Thailand and Brazil a stronger change towards equity similar to that of the US,
identifying the move from mostly physical labour to more service-oriented economies as primary driver.[^rendall-brain-brawn]
Female wage gap fell most rapidly in Brazil, though widening again since 2005,
widening in Mexico during the 1990s, closing again more recently,
and produced more mixed results in Thailand and India.
The authors argue this disconnect between participation and wage shows the impacts of contextually different structural labour market changes:
a quick rise in less physically-oriented occupations in Brazil,
the introduction of a feminised manufacturing sector Mexico in the 1990s,
and more subsistence-oriented labour markets with diverging skill structures in Thailand and India.
[^rendall-brain-brawn]: They use a framework which they term 'brawn' (physical labour) to 'brain' (less physically demanding labour, such as office work and service economy). The concept sees capital displacing brawn in production for transition economies which they find confirmed in all countries, though to different extents.
As with the study's results for wage gap fluctuations, there are a variety of mediating factors at play in each context, some of which may be unidentified.
@Wang2020 in turn use a simulation to focus on the spatial income inequality effects of terminating subsidies for the agricultural grain sectors in China.
They see the removal leading to gradual improvements in the industrial economic infrastructure,
though a short-term rural-urban income inequality increase is observed.
Long-term the decreases in real wages for rural workers would alleviate,
increasing the rural income ratio, though with a gap that would remain incompletely closed.[^wang-channels]
Thus, the authors identify a trade-off between improvements to the national economic output,
benefited by the removal,
and rural-urban income disparity,
benefiting instead more from the subsidies, especially short-term.
[^wang-channels]: Especially for the short-term increase, but also the remaining inequality gap, the study sees the displacement of rural unskilled labour resulting in increased supply of unskilled labour which is challenging to absorb into manufacturing or service sectors as slowing down the process,
in addition to low price elasticity of agricultural products contributing to an overall decline of rural incomes.
Thereby the study strongly binds its findings to the structural economic characteristics of the Chinese labour market and its results only hold for the assumption of static national employment.
Finally, @Go2010 model the effects of a wage subsidy targeted at employers of low- and medium-skilled workers on poverty and income inequality in South Africa.
They find overall income inequality significantly reduced by 0.5 percentage points through an income redistribution due to an increase in formal employment for low- and medium-skilled workers,
as the subsidy works as an incentive for new job creations.
An equally significant 1.6 percent of households move out of poverty using an absolute poverty headcount ratio,
which equally holds for both urban and rural spaces,
through the targeting being most beneficial for the poorest households through greater income gains and more households being affected.[^go-limits]
[^go-limits]: This approach also restricts the study somewhat by being unable to account for exogenous shocks or remaining unobservables and prior assumptions binding it more closely to the structure of the South African labour market.
The prevalence of equilibrium modelling simulations may exacerbate several limitations:
A heavy reliance on initial assumptions for results to hold makes these studies susceptible to overlooking exogenous factors or shocks to the system and struggle to accurately represent long-term dynamics.
Additionally, they often fail to account for the practical challenges to policy implementations through institutional frameworks or political contexts,
Recognizing such shortcomings is crucial when assessing the reliability and applicability of their findings,
as will be discussed in considering study robustness.
## Agency factors
# Robustness of evidence
@ -554,6 +685,7 @@ the overall output volume strongly increased during this period.
```{python}
#| label: fig-publications-per-year
#| fig-cap: Publications per year
from typing import cast
df_study_years = (
df.groupby(["author", "year", "title"])
@ -563,6 +695,8 @@ df_study_years = (
["year"].value_counts()
.sort_index()
)
df_study_years = cast(pd.DataFrame, df_study_years) # fix potential type errors
# use order to ensure all years are displayed, even ones without values
years_range = list(range(df_study_years.index.min(), df_study_years.index.max()+1))
ax = sns.barplot(df_study_years, order=years_range)

View file

@ -33,7 +33,7 @@ typeCheckingMode="basic"
poetry_command = ""
[tool.poe.tasks.preview]
help = "Preview the main review in the browser"
cmd = "quarto preview scoping_review.qmd --to=html"
cmd = "quarto preview manuscript/article.qmd --to=html"
[tool.poe.tasks.render]
help = "Render all project files"
cmd = "quarto render"

View file

@ -26,13 +26,22 @@ METHOD_RANKINGS = {
5.0: ["RCT", "randomi(?:s|z)ed.control.trial"],
}
VALIDITY_STRENGTH_BINS = {
STRENGTH_BINS: dict[float, str] = {
0.0: r"\-",
5.0: r"\+",
10.0: r"\++",
}
def strength_for(val: str):
"""Returns the numeric value for a specific strength bin str representation.
Does a reverse lookup of a strength bin for its representation as a string,
such as looking for '++' and finding 10.0 as its required validity strength.
"""
return list(STRENGTH_BINS.keys())[list(STRENGTH_BINS.values()).index(val)]
def calculate(
df: DataFrame,
repr_col: str = "representativeness",
@ -94,7 +103,7 @@ def calculate(
def add_to_findings(
findings_df: DataFrame,
studies_by_intervention: DataFrame,
strength_bins: dict[float, str] | None = None,
strength_bins: dict[float, str] | None = STRENGTH_BINS,
) -> DataFrame:
"""Returns summary of findings with validities added.