dplecko/CFA

The signs of expse_x0 and expse_x1 seems to be flipped

Opened this issue · 0 comments

The signs of expse_x0 and expse_x1 seem to be flipped, I calculated TV using the TV decomposition 1 provided in your slides, but the answer doesn't match up with the actual TV. However, the answer does match up if I flip the signs of expse_x0 and expse_x1. Could you take a look at this, please?

library(faircause)
library(ggspectra)

census <- head(faircause::gov_census, n = 20000L)
TV <- mean(census$salary[census$sex == "male"]) -
  mean(census$salary[census$sex == "female"])

X <- "sex" # protected attribute
Z <- c("age", "race", "hispanic_origin", "citizenship", "nativity", 
       "economic_region") # confounders
W <- c("marital", "family_size", "children", "education_level", "english_level", 
       "hours_worked", "weeks_worked", "occupation", "industry") # mediators
Y <- "salary" # outcome

# decompose the total variation measure
set.seed(2022)
tvd <- fairness_cookbook(data = census, X = X, W = W, Z = Z, Y = Y, 
                         x0 = "female", x1 = "male")

expse_x1=mean(tvd$measures$value[tvd$measures$measure == "expse_x1"])
expse_0=mean(tvd$measures$value[tvd$measures$measure == "expse_x0"])
nde=mean(tvd$measures$value[tvd$measures$measure == "nde"])
nie=mean(tvd$measures$value[tvd$measures$measure == "nie"])
tv=mean(tvd$measures$value[tvd$measures$measure == "tv"])
print(paste("Tv Decomposition 1: nde - nie - (expse_x1 - expse_0)", nde - nie - (expse_x1 - expse_0), sep=":"))
print(paste("Actual TV", tv, sep = ":"))
print(paste("Tv Decomposition 1 with flipped signs: nde - nie + (expse_x1 - expse_0)", nde - nie + (expse_x1 - expse_0), sep=":"))