vivainsights.create_odds_ratios

Calculate odds ratios for ordinal metrics against a specified outcome.

vivainsights.create_odds_ratios.create_odds_ratios(data, ord_metrics, metric, return_type='table')[source]

Calculate odds ratios for ordinal metrics against a specified metric.

Parameters:
  • data (pandas.DataFrame) – Person query data.

  • ord_metrics (list of str) – Column names of the ordinal variables.

  • metric (str) – Variable to calculate proportional odds against ord_metrics.

  • return_type (str, optional) – "table" (default) returns the odds-ratio DataFrame; "plot" returns a bar chart.

Returns:

Odds-ratio table or visualization depending on return_type.

Return type:

pandas.DataFrame or matplotlib.figure.Figure

Examples

Return an odds-ratio summary table:

>>> import vivainsights as vi
>>> pq_data = vi.load_pq_data()
>>> vi.create_odds_ratios(
...     data=pq_data,
...     ord_metrics=["Engagement_Score", "Satisfaction_Score"],
...     metric="Copilot_Usage",
...     return_type="table",
... )

Return a visualization of the odds ratios:

>>> vi.create_odds_ratios(
...     data=pq_data,
...     ord_metrics=["Engagement_Score", "Satisfaction_Score"],
...     metric="Copilot_Usage",
...     return_type="plot",
... )
vivainsights.create_odds_ratios.compute_fav(data, ord_metrics, item_options=5, fav_threshold=70, unfav_threshold=40, drop_neutral=True)[source]

Convert ordinal variables into categorical favorable/unfavorable scores.

Parameters:
  • data (pandas.DataFrame) – Dataset containing the ordinal variables.

  • ord_metrics (list of str) – Column names of the ordinal variables.

  • item_options (int, optional) – Number of scale points in the ordinal metrics. Defaults to 5.

  • fav_threshold (int, optional) – Threshold on a 100-point scale above which a score is favourable. Defaults to 70.

  • unfav_threshold (int, optional) – Threshold on a 100-point scale below which a score is unfavourable. Defaults to 40.

  • drop_neutral (bool, optional) – Whether to drop neutral scores. Defaults to True.

Returns:

Input DataFrame with added <metric>_100 and <metric>_fav columns. If drop_neutral is True, rows with neutral scores are removed.

Return type:

pandas.DataFrame

Examples

Compute favourability scores with neutral rows dropped:

>>> import vivainsights as vi
>>> pq_data = vi.load_pq_data()
>>> vi.compute_fav(
...     data=pq_data,
...     ord_metrics=["eSat", "Initiative"],
...     item_options=5,
...     fav_threshold=70,
...     unfav_threshold=40,
...     drop_neutral=True,
... )

Keep neutral rows for further analysis:

>>> vi.compute_fav(
...     data=pq_data,
...     ord_metrics=["eSat"],
...     item_options=5,
...     fav_threshold=70,
...     unfav_threshold=40,
...     drop_neutral=False,
... )