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.
This commit is contained in:
parent
07d3efbcd7
commit
6089b64665
2 changed files with 20 additions and 22 deletions
|
@ -220,29 +220,18 @@ to better identify areas of strong analytical lenses or areas of more limited an
|
|||
::: {#tbl-findings-institutional}
|
||||
|
||||
```{python}
|
||||
#| label: tbl-findings-institutional
|
||||
# | 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 +251,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.
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
Loading…
Reference in a new issue