feat(code): Update correct internal validity ranking regexes
This commit is contained in:
parent
c2d20e46ec
commit
cc9749a011
1 changed files with 24 additions and 7 deletions
|
@ -4,7 +4,7 @@ from typing import cast
|
||||||
from pandas import DataFrame
|
from pandas import DataFrame
|
||||||
|
|
||||||
METHOD_RANKINGS = {
|
METHOD_RANKINGS = {
|
||||||
2.0: ["OLS", "ordinary.least.square", "logistic.regression"],
|
2.0: ["OLS", "ordinary.least.square", "logistic.regression", "fixed.effect"],
|
||||||
3.0: [
|
3.0: [
|
||||||
"DM",
|
"DM",
|
||||||
"discontinuity.matching",
|
"discontinuity.matching",
|
||||||
|
@ -14,19 +14,24 @@ METHOD_RANKINGS = {
|
||||||
"triple.diff",
|
"triple.diff",
|
||||||
],
|
],
|
||||||
3.5: ["PSM", "propensity.score.matching", "score.matching"],
|
3.5: ["PSM", "propensity.score.matching", "score.matching"],
|
||||||
4.0: ["IV", "instrumental.variable"],
|
4.0: [
|
||||||
|
"IV",
|
||||||
|
"instrumental.variable",
|
||||||
|
"method.of.moment",
|
||||||
|
"GMM",
|
||||||
|
"GEE",
|
||||||
|
"generali(?:s|z)ed.estimating",
|
||||||
|
],
|
||||||
4.5: ["RD", "regression.discontinuity"],
|
4.5: ["RD", "regression.discontinuity"],
|
||||||
5.0: ["RCT", "randomi(?:s|z)ed.control.trial"],
|
5.0: ["RCT", "randomi(?:s|z)ed.control.trial"],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# TODO do not filter by quasi-/experimental, but analyse the whole df passed in
|
|
||||||
# This allows filtering to happen where it's needed but otherwise validity
|
|
||||||
# given for all studies passed in.
|
|
||||||
def calculate(
|
def calculate(
|
||||||
df: DataFrame,
|
df: DataFrame,
|
||||||
repr_col: str = "representativeness",
|
repr_col: str = "representativeness",
|
||||||
method_col: str = "method",
|
method_col: str = "method",
|
||||||
|
valid_design_col: str | None = None,
|
||||||
) -> DataFrame:
|
) -> DataFrame:
|
||||||
"""Add internal and external validities to a dataframe.
|
"""Add internal and external validities to a dataframe.
|
||||||
|
|
||||||
|
@ -36,15 +41,27 @@ def calculate(
|
||||||
|
|
||||||
Takes a combination of study design (simulation/observational/
|
Takes a combination of study design (simulation/observational/
|
||||||
quasi-experimental/experimental/..) and its method (OLS/DID/RD/...) to
|
quasi-experimental/experimental/..) and its method (OLS/DID/RD/...) to
|
||||||
calculate an internal validity.
|
calculate an internal validity. The column to use can be passed in as
|
||||||
|
method_col.
|
||||||
|
|
||||||
Takes a study representativeness (local/subnational/national/regional/
|
Takes a study representativeness (local/subnational/national/regional/
|
||||||
census) to calculate the external validity.
|
census) to calculate the external validity. The column to use can be
|
||||||
|
optionally passed in as repr_col.
|
||||||
|
|
||||||
|
Takes an optional valid_design_col to decide if it should only
|
||||||
|
include quasi-experimental/experimental designs in the calculation.
|
||||||
|
Pass in the column name of the design column to only include those
|
||||||
|
in calculations. Leave as None to calculate for all studies passed in.
|
||||||
"""
|
"""
|
||||||
EXT_COL_NAME: str = "external_validity"
|
EXT_COL_NAME: str = "external_validity"
|
||||||
INT_COL_NAME: str = "internal_validity"
|
INT_COL_NAME: str = "internal_validity"
|
||||||
cols = {EXT_COL_NAME: 0.0, INT_COL_NAME: 0.0}
|
cols = {EXT_COL_NAME: 0.0, INT_COL_NAME: 0.0}
|
||||||
|
|
||||||
|
if valid_design_col:
|
||||||
|
vd = df[
|
||||||
|
(df[valid_design_col] == "quasi-experimental")
|
||||||
|
| (df[valid_design_col] == "experimental")
|
||||||
|
].copy()
|
||||||
vd = df.assign(**cols)
|
vd = df.assign(**cols)
|
||||||
vd = cast(DataFrame, vd)
|
vd = cast(DataFrame, vd)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue