Skip to content

Utils

This module contains utility functions for reliability analyses.

utils

Functions:

icc_to_markdown_table

icc_to_markdown_table(icc_results: DataFrame, variable_rename_dict: Optional[Dict[str, str]] = None, column_rename_dict: Optional[Dict[str, str]] = None, round_dict: Optional[Dict[str, int]] = None) -> str

Convert the summary table produced by the calculate_intraclass_correlations function to a markdown table.

Parameters:

  • icc_results

    (DataFrame) –

    The DataFrame containing the intraclass correlation results.

  • variable_rename_dict

    (Optional[Dict[str, str]], default: None ) –

    A dictionary to rename variables table. If not included, predictors will be tidied slightly instead. Defaults to None.

  • exclude_predictors

    (Optional[List[str]]) –

    A list of predictors to exclude from the summary table. Defaults to [].

  • column_rename_dict

    (Optional[Dict[str, str]], default: None ) –

    A dictionary to rename the summary table columns. Defaults to a pre-specified dictionary if not provided.

  • round_dict

    (Optional[Dict[str, int]], default: None ) –

    A dictionary to set the rounding precision for each column. Defaults to a pre-specified dictionary if not provided.

  • alpha_corr

    (float) –

    The alpha level for multiple comparison correction. If provided, the p-values will be corrected using the Holm-Bonferroni method and a new column will be added to the table with the corrected p-values (i.e., multiplied by 0.05 / alpha_corr). Defaults to None.

Returns:

  • str ( str ) –

    The markdown table representing the summary table of the ICC results.

Source code in stats_utils/reliability/utils.py
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
def icc_to_markdown_table(
    icc_results: pd.DataFrame,
    variable_rename_dict: Optional[Dict[str, str]] = None,
    column_rename_dict: Optional[Dict[str, str]] = None,
    round_dict: Optional[Dict[str, int]] = None,
) -> str:
    """
    Convert the summary table produced by the
    `calculate_intraclass_correlations` function to a markdown table.

    Args:
        icc_results (pd.DataFrame): The DataFrame containing the intraclass
            correlation results.
        variable_rename_dict (Optional[Dict[str, str]], optional): A
            dictionary to rename variables table. If not included, predictors
            will be tidied slightly instead. Defaults to `None`.
        exclude_predictors (Optional[List[str]], optional): A list of
            predictors to exclude from the summary table. Defaults to `[]`.
        column_rename_dict (Optional[Dict[str, str]], optional): A
            dictionary to rename the summary table columns. Defaults to a
            pre-specified dictionary if not provided.
        round_dict (Optional[Dict[str, int]], optional): A dictionary to set
            the rounding precision for each column. Defaults to a pre-specified
            dictionary if not provided.
        alpha_corr (float, optional): The alpha level for multiple comparison
            correction. If provided, the p-values will be corrected using the
            Holm-Bonferroni method and a new column will be added to the table
            with the corrected p-values (i.e., multiplied by
            0.05 / alpha_corr). Defaults to `None`.

    Returns:
        str: The markdown table representing the summary table of the ICC
             results.

    """

    # Default column renaming dict
    if column_rename_dict is None:
        column_rename_dict = {
            "ICC": "$ICC$",
            "F": "$F$",
            "df1": "$df_1$",
            "df2": "$df_2$",
            "pval": "$p$",
            "CI2.5%": "$CI_{2.5}$",
            "CI97.5%": "$CI_{97.5}$",
        }

    # Default rounding precision dict
    if round_dict is None:
        round_dict = {
            "$ICC$": 2,
            "$F$": 2,
            "$df_1$": 0,
            "$df_2$": 0,
            "$p$": 3,
            "$CI_{2.5}$": 2,
            "$CI_{97.5}$": 2,
        }

    # Drop the 'Type' and 'Description' columns
    summary_df = icc_results.drop(columns=["Type", "Description"])

    # Split the 'CI95%' column into 'CI2.5%' and 'CI97.5%' columns
    summary_df["CI2.5%"] = summary_df["CI95%"].apply(lambda x: x[0])
    summary_df["CI97.5%"] = summary_df["CI95%"].apply(lambda x: x[1])

    # Convert the CI columns to float
    summary_df["CI2.5%"] = summary_df["CI2.5%"].astype(float)
    summary_df["CI97.5%"] = summary_df["CI97.5%"].astype(float)

    # Drop the original 'CI95%' column
    summary_df = summary_df.drop(columns=["CI95%"])

    # Set 'variable' as the single index
    summary_df = summary_df.set_index("variable")
    summary_df.index.name = None

    # Process the summary table
    summary_df = process_summary_table(
        summary_df,
        predictor_rename_dict=variable_rename_dict,
        exclude_predictors=None,
        column_rename_dict=column_rename_dict,
        round_dict=round_dict,
    )

    # Convert to markdown table
    markdown_table = dataframe_to_markdown(
        summary_df,
        rename_dict={},
        pval_columns=None,
        round_dict=round_dict,
        rename_index='Variable'
    )

    return markdown_table