import pandas as pd
import matplotlib.pyplot as plt
from aequitas.group import Group
from aequitas.bias import Bias
from aequitas.fairness import Fairness

# Load dataset
df = pd.read_csv("data/ethics_audit.csv")
df['score'] = df['ethical_score']
df['label_value'] = (df['decision'] == 'Approve').astype(int)

# Configure Aequitas
group = Group()
xtab, _ = group.get_crosstabs(df, attr_cols=['gender', 'ethnicity'])

# Compute bias metrics
bias = Bias()
bdf = bias.get_disparity_predefined_groups(
    xtab, original_df=df, ref_groups_dict={'gender': 'M', 'ethnicity': 'A'}
)

# Visualize results
bdf[['attribute_name', 'attribute_value', 'fpr', 'fnr']].plot.bar(
    x='attribute_value', y=['fpr', 'fnr'], title="Fairness Metrics by Group"
)
plt.ylabel("Rate")
plt.show()
