1 PREPARATION

1.1 Variables in our analysis

Variables in the model

  • X: International migrant status

  • Y.Stress: Stress

  • Y.Wage: Wage is quantified in terms of thousands of Jordanian Dinars per month

  • M: Collective voice (The percentage of management practices adopted by the company constitutes a portion of the types of practices mandated by audit requirements, which is ranged from 0-1)

  • W: Responsible sourcing

Control variables

  • abuse and abuse_mean: Concern of abuse is concern among employees regarding abuse from management at the employee- and factory-level respectively.

  • female and female_mean: Gender indicates the gender of the employee, with a focus on female identification at the employee-level and the percentage of female at factory level.

  • edu and edu_mean: Level of education attained by the employee. tenure and tenure_mean: The duration or length of time the employee has been working with the company at the employee- and factory-level respectively.

  • BA20size: The size of the company, often quantified by the number of employees or total revenue for the year 2020.

  • BA20union: The presence of unionization in the company, indicating the proportion of unionized workforce as of 2020.

  • BA20regularwkpc: The percentage of regular workers is the percentage of regular, full-time employees compared to part-time or contractual staff within the company in

  • BA20Cycle: Audit cycle/years with better work audit

1.2 Hypotheses

H1: Buyer’s responsible sourcing is positively associated with collective voice of association rights.

H2a: Collective voice of association rights amplifies the association between migrant status and wage.

H2b. Collective voice of association amplifies the association between migrant status and stress.

H3a: Collective voice of association rights mediates the moderating effect of responsible sourcing on the association between migrant status and wage.

H3b: Collective voice of association rights mediates the moderating effect of responsible sourcing on the association between migrant status and stress.

2 PRIMARY ANALYSIS

2.1 Descriptive analysis

Describe(DA.data)

2.2 Multilevel correlation

MLM.cor=cor_multilevel(DA.data, "clus")

2.3 ICC

HLM_ICC_rWG(data, group="clus", icc.var="Y.Wage")
HLM_ICC_rWG(data, group="clus", icc.var="Y.Stress")
HLM_ICC_rWG(data, group="clus", icc.var="X")
#HLM_ICC_rWG(data, group="clus", icc.var="abuse")
#HLM_ICC_rWG(data, group="clus", icc.var="female")
#HLM_ICC_rWG(data, group="clus", icc.var="edu")
#HLM_ICC_rWG(data, group="clus", icc.var="tenure")
#sqrt(var(data$X)*.407)
#sqrt(var(data$X)*(1-.407))

3 ANALYSIS

data$X=factor(data$X, levels=0:1, labels=c("Imigrants", "Local"))

3.1 H1. The effect of buyer’s responsible sourcing on collective voice

H1=lmer(M~W+ BA20size+BA20union+BA20regularwkpc+BA20Cycle+
                abuse_mean+female_mean+edu_mean+tenure_mean+
                abuse+female+edu+tenure+(1|clus), na.action = na.exclude, data = data,control=lmerControl(optimizer="bobyqa"))

#HLM_summary(H1)

3.2 H2a. Cross-level moderation of collective voice of association rights for wage

H2a=lmer(Y.Wage~Xb*M + Xb*W + W*X +
                M*X+BA20size+BA20union+BA20regularwkpc+BA20Cycle+
                abuse_mean+female_mean+edu_mean+tenure_mean+abuse+female+edu+tenure+
                (X|clus), na.action = na.exclude, data = data, control=lmerControl(optimizer="bobyqa"))
sim_slopes(H2a, pred = X, modx = M, johnson_neyman = TRUE)

3.3 H2b. Cross-level moderation of collective voice of association rights for stress

H2b=lmer(Y.Stress~Xb*M + Xb*W + W*X +
                M*X+BA20size+BA20union+BA20regularwkpc+BA20Cycle+
                abuse_mean+female_mean+edu_mean+tenure_mean+abuse+female+edu+tenure+
                (X|clus), na.action = na.exclude, data = data, control=lmerControl(optimizer="bobyqa"))
sim_slopes(H2b, pred = X, modx = M, johnson_neyman = TRUE)

3.4 H3a. Mediated moderation

MoMe.Wage=AutoMC.Me(H2a,H1,cc("M:X"),OutReg=F)

3.5 H3b. Mediated moderation

MoMe.stress.M=AutoMC.Me(H2b,H1,cc("M:X"),OutReg=F)

4 TABLES AND FIGURES

4.1 Correlation table

BW.MeanSD <- MLM.MeanSD(dat, 
                     group1 = cc("Y.Wage, Y.Stress,X,
                                 abuse,female,edu,tenure,
                                  M, W,BA20size,BA20union,BA20regularwkpc,BA20Cycle"), 
                     group2 = cc("Y.Wage.GroC, Y.Stress.GroC,Xw, 
                                 abuse.GroC,female.GroC,edu.GroC,tenure.GroC,
                                  M, W,BA20size,BA20union,BA20regularwkpc,BA20Cycle"), 
                     group3 = cc("Y.Wage_mean, Y.Stress_mean,Xb, 
                                 abuse_mean,female_mean,edu_mean,tenure_mean,
                                  M, W,BA20size,BA20union,BA20regularwkpc,BA20Cycle"),
                     OutClean = T)
MLM.FullCor=cbind(BW.MeanSD,MLM.cor$cors)
new_variable <- c("Stress", "Wage", "International migrant status", "Concern of abuse", 
                  "Gender", "Level of education", "Organization tenure", 
                  "Collective voice", "Responsible sourcing", 
                  "The size of the company", "The presence of unionization in the company", 
                  "The percentage of regular workers", "Audit cycle/years with better work audit")

MLM.FullCor[, 1] <- new_variable
new_variable_names <- cc("Variable", "Mean", "Within_SD", "Between_SD",1:13)

setnames(MLM.FullCor, names(MLM.FullCor), new = new_variable_names)
MLM.FullCor$Within_SD <- substr(MLM.FullCor$Within_SD, 1, 5)
MLM.FullCor$Within_SD[8:length(MLM.FullCor$Within_SD)] <- ""
print_table(MLM.FullCor,title = "Table 1. Means, Standard Deviations, and Correlations among Study Variables",note = "Note: Correlations below and above the diagonal represent within-level and between-level correlations, respectively; For within-level, correlations are significant when absolute value above 0.030 (p < .05), 0.040 (p < .01) and 0.047 (p < .001); For between-level, correlations are significant when absolute value above 0.226 (p < .05), 0.317 (p < .01) and 0.371 (p < .001); Between-level N = 77")

4.2 Summary of multilevel analysis

model_summary(list(H1,H2a,H2b), single.row = T)#,file="MLM Table.doc")

#tab_model(H1,H2a,H2b,show.se = T,show.ci = F,file="MLM Table.doc")#,pred.labels = c())

4.3 Cross-level moderation figures

F1.bar=ggpredict(H2a, c("X", "M [-.027,.027]"))
F2.bar=ggpredict(H2b, c("X", "M [-.027,.027]"))

F1.bar
F2.bar

ggplot(F1.bar, aes(x = x, y = predicted, fill = group)) +
  geom_col(position = "dodge") +
  scale_fill_manual(values = c("black", "gray"),
                    labels = c("Low group", "High group"), 
                    name = "Collective voice") +
  scale_x_continuous(breaks = c(0, 1), labels = c("Local workers (0)", "Migrant workers (1)")) +
  geom_text(aes(label = sprintf("%.3f K JOD", predicted)), vjust = -0.5, position = position_dodge(width = 0.9)) +
  labs(x = "International immigrant status", 
       y = "Wage (1000 JOD per Month)", 
       title = "Predicted Wage by Immigrant Status and Compliance") +
  ggtitle("Figure 1. Compliance with Freedom as a Moderator of \nthe Relationship Between International Immigrant Status and Wage") +
  theme_minimal() +
  theme(legend.position = "right",
        panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(), 
        panel.background = element_blank(),
        axis.line = element_line(colour = "black"))

ggplot(F2.bar, aes(x = x, y = predicted, fill = group)) +
  geom_col(position = "dodge") +
  scale_fill_manual(values = c("black", "gray"),
                    labels = c("Low group", "High group"), 
                    name = "Collective voice") +
  scale_x_continuous(breaks = c(0, 1), labels = c("Local workers (0)", "Migrant workers (1)")) +
  geom_text(aes(label = sprintf("%.3f", predicted)), vjust = -0.5, position = position_dodge(width = 0.9)) +
  labs(x = "International immigrant status", 
       y = "Stress", 
       title = "Predicted Wage by Immigrant Status and Compliance") +
  ggtitle("Figure 2. Collective voice as a Moderator of \nthe Relationship between international immigrant status and stress") +
  theme_minimal() +
  theme(legend.position = "right",
        panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(), 
        panel.background = element_blank(),
        axis.line = element_line(colour = "black"))
interact_plot(H2a, pred = X, modx = M,#Basic setup
              modx.values = "plus-minus", modx.labels= c("Low group", "High group"),legend.main="Collective voice",)+#Set moderators in plot
  ylab("Wage")+xlab("International immigrant status")+ ggtitle("Figure 3. Collective voice as a Moderator of \nthe Relationship between international immigrant status and wage")
#+#Set labels of X and Y

interact_plot(H2b, pred = X, modx = M,#Basic setup
              modx.values = "plus-minus", modx.labels= c("Low group", "High group"),legend.main="Collective voice",)+#Set moderators in plot
  ylab("Stress")+xlab("International immigrant status")+ ggtitle("Figure 4. Collective voice as a Moderator of \nthe Relationship between international immigrant status and stress")
#+#Set labels of X and Y