-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.tex
More file actions
1024 lines (893 loc) · 71.9 KB
/
Copy pathmain.tex
File metadata and controls
1024 lines (893 loc) · 71.9 KB
1
2
3
4
5
6
7
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
\documentclass{article}
\PassOptionsToPackage{table,xcdraw}{xcolor}
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{hyperref}
\usepackage{biblatex}
\usepackage{pgfplotstable}
\usepackage{pdflscape}
\pgfplotsset{compat=1.18}
\usepgfplotslibrary{fillbetween}
\addbibresource{bib.bib}
\input{format}
\definecolor{NonMHIColor}{HTML}{0072B2}
\definecolor{MHIColor}{HTML}{D55E00}
\pgfplotsset{
nonmhiLine/.style={draw=NonMHIColor, very thick},
mhiLine/.style={draw=MHIColor, very thick, densely dashed}
}
\newcommand{\DataMinYear}{2011}
\newcommand{\DataMaxYear}{2025}
\newcommand{\DataNextYear}{2026}
\IfFileExists{analysis_output/descriptive_group_year_means.csv}{
\pgfplotstableread[col sep=comma]{analysis_output/descriptive_group_year_means.csv}\YearRangeTable
\pgfplotstablegetrowsof{\YearRangeTable}
\pgfmathtruncatemacro{\YearRangeLastRow}{\pgfplotsretval-1}
\pgfplotstablegetelem{0}{year}\of{\YearRangeTable}
\xdef\DataMinYear{\pgfplotsretval}
\pgfplotstablegetelem{\YearRangeLastRow}{year}\of{\YearRangeTable}
\xdef\DataMaxYear{\pgfplotsretval}
\pgfmathtruncatemacro{\DerivedNextYear}{\DataMaxYear+1}
\xdef\DataNextYear{\DerivedNextYear}
}{}
\title{Are Interdisciplinary Faculty Evaluated Equitably? Evidence from SPHS Salary Disclosures (\DataMinYear--\DataMaxYear)}
\author{Jim Wallace}
\date{\today}
\begin{document}
\maketitle
\section*{Executive Summary}
Several faculty affiliated with the Master of Health Informatics (MHI) program have raised concerns that the annual performance review (APR) process may disadvantage interdisciplinary scholarship. This report examines whether such disadvantage is observable in publicly available University of Waterloo salary disclosures for the years \DataMinYear--\DataMaxYear. Using an active-faculty sample of 37 currently listed SPHS faculty members (35 with at least one disclosure; 342 person-year observations), the analysis compares salary distributions and salary growth for MHI-affiliated faculty relative to other faculty within the School. Across the disclosure period, MHI-affiliated faculty tend to occupy lower positions within the School’s annual salary distribution, with approximately 80\% of MHI person-year observations falling below the within-year median salary compared with about 41\% of non-MHI observations. In addition, MHI-affiliated faculty experience slower salary growth over time: a three-step unconditional growth model (lme4) estimates the MHI annual growth gap at approximately \(-\$1{,}595\)/year (95\% CI: \([-\$3{,}121,\ -\$69]\), \(p = 0.049\)), and career-stage-aligned comparisons estimate differences of roughly \(-\$2{,}700\) to \(-\$3{,}000\)/year. Taken together, these results indicate that MHI-affiliated faculty have experienced systematically slower salary progression relative to their colleagues. These patterns warrant a formal review of evaluation practices to determine whether interdisciplinary scholarship is being assessed in a manner consistent with the University’s stated commitments to fair and discipline-appropriate evaluation. Without such review, small annual differences in evaluation outcomes may continue to accumulate into substantial long-term disparities.
\section*{Introduction}
Evaluating multidisciplinary scholarship within traditionally structured academic units can be challenging. Different disciplines signal quality, contribution, and impact in different ways: authorship conventions vary, publication venues carry different meanings, and applied or community-engaged work may prioritize policy briefs, technical reports, or knowledge mobilization alongside traditional journal publications.
University of Waterloo policies and agreements explicitly recognize these challenges and establish commitments intended to ensure fair evaluation. Policy 77 requires that performance reviews be conducted in a manner that is fair, consistent, and grounded in transparent criteria across academic units (\href{https://uwaterloo.ca/secretariat/policies-procedures-guidelines/policy-77}{Policy 77}). The Memorandum of Agreement between the University and the Faculty Association emphasizes procedural integrity and establishes defined processes linking performance review outcomes to salary decisions (\href{https://uwaterloo.ca/secretariat/memorandum-agreement-uw-fauw}{UW–FAUW Memorandum of Agreement}). At the School level, the SPHS performance review guidelines explicitly recognize the multidisciplinary nature of the unit and instruct that scholarly outputs be interpreted in light of disciplinary traditions, with quality and impact assessed using multiple complementary indicators (SPHS Faculty Performance Review Guidelines, 2025 update). Taken together, these documents commit the institution to evaluating interdisciplinary scholarship using standards appropriate to the relevant domain.
This report examines whether observable outcomes within the School of Public Health Sciences are consistent with that institutional commitment. Using publicly available salary disclosures from \DataMinYear--\DataMaxYear\ (\href{https://uwaterloo.ca/about/accountability/salary-disclosure}{Salary Disclosure Archives}), I analyze compensation patterns for faculty affiliated with the Master of Health Informatics (MHI) program relative to other SPHS faculty.
Because salary progression reflects the cumulative effect of repeated evaluation decisions, long-term salary patterns provide a useful lens for assessing whether evaluation systems operate consistently across disciplinary domains. Salary is an imperfect proxy for institutional valuation, but it is the only fully public and longitudinal indicator available. Because annual salary increments are closely linked to annual performance review outcomes, differences in salary trajectories may provide indirect evidence about how evaluation outcomes accumulate over time. Even modest differences in annual increments can compound across years, producing substantial disparities in compensation over the course of a career.
Accordingly, this analysis examines three related questions: whether MHI-affiliated faculty occupy different positions within the School’s salary distribution, whether their salaries grow at different rates when compared at similar career stages, and whether small differences in annual increments accumulate into meaningful long-term disparities. The results provide an empirical basis for considering whether current evaluation practices operate in a manner consistent with the University’s stated commitments regarding fair and discipline-appropriate assessment of multidisciplinary scholarship.
\section*{Methods}
This analysis uses publicly available University of Waterloo salary disclosure records for the years \DataMinYear--\DataMaxYear\ (\href{https://uwaterloo.ca/about/accountability/salary-disclosure}{Salary Disclosure Archives}). These disclosures report annual salaries for employees whose earnings exceed the provincial reporting threshold. Ontario's Public Sector Salary Disclosure Act sets that threshold at \$100{,}000, so salaries below \$100{,}000 in any given year are not reported; this produces left-censoring at career entry and explains why the panel is unbalanced rather than reflecting selection by the analyst. Faculty names were extracted for each year and harmonized across reporting periods to construct a longitudinal panel. Faculty affiliation with the Master of Health Informatics (MHI) program was determined using the publicly available SPHS Health Informatics faculty roster (\href{https://uwaterloo.ca/public-health-sciences/our-people/health-informatics-researchers}{SPHS Health Informatics Researchers}). No internal personnel records, APR ratings, merit scores, promotion histories, or workload assignments were used.
The active-faculty analysis sample includes 37 currently listed faculty, of whom 35 have at least one disclosed salary, yielding 342 person-year observations. The panel is unbalanced because faculty enter and exit the disclosure records over time, and missing years were not imputed.
The analysis examines three related aspects of compensation patterns.
\begin{enumerate}
\item \textbf{Where salaries sit each year.} I compare MHI and non-MHI salaries within the School’s annual distribution using within-year percentiles. This establishes whether one group consistently occupies lower positions in the yearly salary hierarchy and motivates the distributional evidence reported in the Results (Appendix~\ref{app:salary_position}).
\item \textbf{Whether growth differs over time.} I begin with unconditional models that quantify how much salary variation is between individuals and how much trajectories differ across faculty. This step shows that individual-level variance and slope heterogeneity matter, which justifies the multilevel growth framework used for group comparisons (Appendices~\ref{app:unconditional_means}--\ref{app:unconditional_growth}).
\item \textbf{Whether group gaps persist once timing is aligned.} I then test MHI-specific growth differences in the conditional model and confirm those patterns in entry-aligned comparisons that pair faculty at similar career stages. These steps connect the variance structure to the central claim about MHI growth gaps (Appendices~\ref{app:conditional_growth}--\ref{app:career_stage_aligned}).
\end{enumerate}
Because public salary disclosures do not include APR ratings, promotion dates, or workload assignments, salary is treated as an observable proxy for evaluation outcomes. The analysis therefore assesses whether compensation trajectories are consistent with equitable treatment across disciplinary domains, rather than attempting to identify the precise institutional mechanisms producing any observed differences.
\section*{Where Salaries Sit Each Year}
\IfFileExists{analysis_output/plot_hist_year_adj_median_mhi.csv}{
\begin{figure}[p]
\centering
\begin{tikzpicture}
\begin{axis}[
width=0.98\textwidth,
height=0.52\textwidth,
ybar=0pt,
bar width=6pt,
xlabel={Salary relative to the same-year median (\$CAD)},
ylabel={Person-years},
scaled x ticks=false,
scaled y ticks=false,
ymin=-14,
ytick={-10,0,10,20,30},
minor ytick={-5,5,15,25},
minor tick style={draw=black!60},
major tick length=3pt,
minor tick length=1.8pt,
grid=major,
axis x line*=bottom,
yticklabel style={/pgf/number format/fixed,/pgf/number format/precision=0},
xlabel style={at={(axis description cs:0.5,-0.18)},anchor=north},
xticklabel style={/pgf/number format/fixed,/pgf/number format/precision=0,/pgf/number format/1000 sep={,},rotate=45,anchor=east,yshift=-1pt},
tick label style={font=\small},
label style={font=\small},
legend style={at={(0.98,0.98)},anchor=north east,draw=none,fill=none,font=\small}
]
\addplot[black, semithick, domain=-70000:110000, samples=2, forget plot] {0};
\addplot+[bar shift=0pt, draw=none, fill=NonMHIColor!35, forget plot] table[col sep=comma, x=bin_mid, y expr={\thisrow{count} > 0 ? \thisrow{count} : nan}] {analysis_output/plot_hist_year_adj_median_nonmhi.csv};
\addplot+[bar shift=0pt, draw=none, fill=MHIColor!35, forget plot] table[col sep=comma, x=bin_mid, y expr={\thisrow{count} > 0 ? -\thisrow{count} : nan}] {analysis_output/plot_hist_year_adj_median_mhi.csv};
\addlegendimage{empty legend}
\addlegendentry{\tikz\fill[NonMHIColor!35] (0,0) circle (4pt);\hspace{0.4em}Non-MHI}
\addlegendimage{empty legend}
\addlegendentry{\tikz\fill[MHIColor!35] (0,0) circle (4pt);\hspace{0.4em}MHI}
\end{axis}
\end{tikzpicture}
\caption{Most MHI-affiliated faculty salaries fall below the School’s annual median. In the active-faculty sample, 41 of 51 MHI person-year observations (about 80\%) fall below the annual median, compared with about 41\% of non-MHI observations. Because salaries are centred within each year, this comparison reduces distortion from hiring cohorts and highlights where each group sits within the School’s salary distribution.}
\label{fig:salary_position_median}
\end{figure}
}{}
\IfFileExists{analysis_output/plot_scatter_mhi.csv}{
\begin{figure}[p]
\centering
\begin{tikzpicture}
\begin{axis}[
width=0.98\textwidth,
height=0.44\textwidth,
xlabel={Year},
ylabel={Salary (\$CAD)},
xmin=2010.5,
xmax=2025.5,
xtick={2011,...,2025},
scaled x ticks=false,
scaled y ticks=false,
grid=major,
clip=false,
yticklabel={\$\pgfmathprintnumber[fixed,precision=0,1000 sep={,}]{\tick}},
xticklabel style={/pgf/number format/fixed,/pgf/number format/precision=0,/pgf/number format/1000 sep={}},
tick label style={font=\small},
label style={font=\small}
]
\addplot[name path=nonmhi_upper, draw=none] table[col sep=comma, x=year, y=ci_high] {analysis_output/plot_trend_nonmhi.csv};
\addplot[name path=nonmhi_lower, draw=none] table[col sep=comma, x=year, y=ci_low] {analysis_output/plot_trend_nonmhi.csv};
\addplot[NonMHIColor!18, draw=none, opacity=0.35, forget plot] fill between[of=nonmhi_upper and nonmhi_lower];
\addplot[nonmhiLine] table[col sep=comma, x=year, y=fit] {analysis_output/plot_trend_nonmhi.csv}
node[pos=1, anchor=west, xshift=22pt, text=black, font=\footnotesize, overlay] {Non-MHI};
\addplot[name path=mhi_upper, draw=none] table[col sep=comma, x=year, y=ci_high] {analysis_output/plot_trend_mhi.csv};
\addplot[name path=mhi_lower, draw=none] table[col sep=comma, x=year, y=ci_low] {analysis_output/plot_trend_mhi.csv};
\addplot[MHIColor!18, draw=none, opacity=0.35, forget plot] fill between[of=mhi_upper and mhi_lower];
\addplot[mhiLine] table[col sep=comma, x=year, y=fit] {analysis_output/plot_trend_mhi.csv}
node[pos=1, anchor=west, xshift=22pt, yshift=-2pt, text=black, font=\footnotesize, overlay] {MHI};
\addplot[only marks, mark=o, mark size=1.2pt, draw=NonMHIColor, fill=white, opacity=0.35, forget plot] table[col sep=comma, x=year, y=salary] {analysis_output/plot_scatter_nonmhi.csv};
\addplot[only marks, mark=triangle*, mark size=1.5pt, draw=MHIColor, fill=MHIColor, opacity=0.35, forget plot] table[col sep=comma, x=year, y=salary] {analysis_output/plot_scatter_mhi.csv};
\end{axis}
\end{tikzpicture}
\caption{MHI-affiliated faculty salaries tend to grow more slowly over time. Across the disclosure period, the MHI trajectory remains consistently below the non-MHI trajectory, indicating slower salary progression. While individual salaries vary from year to year, the overall pattern shows that MHI-affiliated faculty tend to receive smaller annual increases on average, causing salary differences to widen gradually over time.}
\label{fig:salary_trajectories}
\end{figure}
}{}
\clearpage
To see where salaries sit each year, we centered each person’s salary against the School’s same‑year median and then looked at who falls below or above that benchmark. This puts everyone on the same annual scale and makes the comparison intuitive. In the active‑faculty sample, 41 of 51 MHI person‑year observations (80.39\%) fall below the within‑year median, compared with 118 of 291 (40.55\%) non‑MHI observations.
Permutation-based tests of the difference in these proportions indicate that this pattern is unlikely to arise from random variation alone. Faculty-cluster permutation tests yield two-sided \(p\)-values of 0.034 (person-year weighting) and 0.022 (faculty-mean weighting). While these tests are descriptive rather than causal, they indicate a consistent distributional difference between groups. Based on these findings, we decided to examine whether the gap reflects different growth trajectories over time.
\section*{Whether Growth Differs Over Time}
To see whether growth differs over time, we first asked how much of the salary variation is about stable differences between people versus year‑to‑year noise. The unconditional means model shows a sizable between‑person share (ICC \(= 0.301\)), which tells us a multilevel growth approach is appropriate (Appendix~\ref{app:unconditional_means}).
Next, to describe the typical trajectory, we added time. The unconditional growth model shows a strong overall upward trend and clear differences in individual slopes, meaning faculty do not all progress at the same rate (Appendix~\ref{app:unconditional_growth}; Tables~\ref{tab:lme4_growth} and~\ref{tab:lme4_lrt}).
Finally, with that baseline in place, we tested whether MHI affiliation predicts a different growth path. Adding MHI terms improves fit (LRT \(\chi^2(2) = 11.88\), \(p = 0.003\)); the level gap at the mean year is \(-\$34{,}477\) (\(p = 0.009\)) and the growth‑gap estimate is \(-\$1{,}595\)/year (95\% CI: \([-\$3{,}121,\ -\$69]\), \(p = 0.049\)). This implies growth of about \(\$8{,}077\)/year for non‑MHI faculty versus \(\$6{,}482\)/year for MHI faculty, roughly 20\% lower per year.
\section*{Whether Group Gaps Persist Once Timing Is Aligned}
To better approximate comparisons at similar career stages, I estimate models that align faculty by entry timing. When faculty hired within \(\pm 1\) year of one another are compared, the estimated growth differences remain negative. Full model summaries and trajectory plots are provided in Appendix~\ref{app:career_stage_aligned}.
Under the primary CV/override start-year rule, entry-cohort pooled fixed-effects models estimate a growth difference of \(-\$2{,}236\)/year (\(p=0.337\)), within-cohort fixed-effects models for the 2014--2016 entry bucket estimate \(-\$3{,}609\)/year (\(p=0.050\), exact permutation), and matched fixed-effects models estimate \(-\$2{,}726\)/year (\(p=0.058\), exact permutation). Sensitivity analyses using disclosure-based start years yield similar results: within-cohort fixed-effects models for the 2017--2019 cohort estimate \(-\$2{,}945\)/year (\(p=0.008\)), and matched fixed-effects models estimate \(-\$2{,}938\)/year (\(p=0.016\)).
\IfFileExists{analysis_output/plot_matched_model_trajectories.csv}{
\begin{figure}[h]
\centering
\begin{tikzpicture}
\begin{axis}[
width=0.98\textwidth,
height=0.44\textwidth,
xlabel={Years Since Entry},
ylabel={Salary (\$CAD)},
xmin=0,
xmax=10,
xtick={0,1,2,3,4,5,6,7,8,9,10},
scaled y ticks=false,
grid=major,
clip=false,
yticklabel={\$\pgfmathprintnumber[fixed,precision=0,1000 sep={,}]{\tick}},
tick label style={font=\small},
label style={font=\small}
]
\addplot[name path=mnon_upper, draw=none] table[col sep=comma, x=years_since_entry, y=nonmhi_ci_high] {analysis_output/plot_matched_model_trajectories.csv};
\addplot[name path=mnon_lower, draw=none] table[col sep=comma, x=years_since_entry, y=nonmhi_ci_low] {analysis_output/plot_matched_model_trajectories.csv};
\addplot[NonMHIColor!18, draw=none, opacity=0.35, forget plot] fill between[of=mnon_upper and mnon_lower];
\addplot[only marks, mark=o, mark size=1.2pt, draw=NonMHIColor, fill=white, opacity=0.30, forget plot] table[col sep=comma, x=years_since_entry, y=salary] {analysis_output/plot_matched_scatter_nonmhi.csv};
\addplot[nonmhiLine] table[col sep=comma, x=years_since_entry, y=nonmhi_fit] {analysis_output/plot_matched_model_trajectories.csv}
node[pos=1, anchor=west, xshift=10pt, text=black, font=\footnotesize, overlay] {Non-MHI};
\addplot[name path=mmhi_upper, draw=none] table[col sep=comma, x=years_since_entry, y=mhi_ci_high] {analysis_output/plot_matched_model_trajectories.csv};
\addplot[name path=mmhi_lower, draw=none] table[col sep=comma, x=years_since_entry, y=mhi_ci_low] {analysis_output/plot_matched_model_trajectories.csv};
\addplot[MHIColor!18, draw=none, opacity=0.35, forget plot] fill between[of=mmhi_upper and mmhi_lower];
\addplot[only marks, mark=triangle*, mark size=1.5pt, draw=MHIColor, fill=MHIColor, opacity=0.30, forget plot] table[col sep=comma, x=years_since_entry, y=salary] {analysis_output/plot_matched_scatter_mhi.csv};
\addplot[mhiLine] table[col sep=comma, x=years_since_entry, y=mhi_fit] {analysis_output/plot_matched_model_trajectories.csv}
node[pos=1, anchor=west, xshift=10pt, yshift=-2pt, text=black, font=\footnotesize, overlay] {MHI};
\end{axis}
\end{tikzpicture}
\caption{Even when faculty start at similar career stages, MHI salaries rise more slowly.
This figure compares salary trajectories for faculty hired at approximately the same time, plotting years since entry (0–10) for matched MHI (dashed line) and non-MHI (solid line) faculty. Because faculty are aligned by entry timing, the comparison reflects salary progression among colleagues at similar points in their careers. The MHI trajectory increases more slowly, indicating that MHI-affiliated faculty tend to receive smaller annual salary increments than comparable non-MHI faculty over time.}
\label{fig:matched_fe_trajectories}
\end{figure}
}{}
Taken together, these estimates indicate that annual salary growth for MHI-affiliated faculty tends to be smaller than for comparable non-MHI faculty. Although pooled level comparisons are sensitive to differences in career stage, the within-person and entry-aligned models consistently indicate slower salary progression among MHI-affiliated faculty. Even differences of approximately \$2{,}700--\$3{,}000 per year would compound to roughly \$27{,}000--\$30{,}000 over a decade of employment.
\section*{Implications for Annual Performance Review}
The SPHS performance review guidelines state that a central purpose of annual performance reviews is to recognize faculty members' accomplishments and provide a basis for distributing merit-based salary increments. If this process functions as intended, sustained scholarly contributions should be reflected over time in salary progression. The salary trajectories documented in this analysis raise questions about whether this recognition function operates equally across all disciplinary areas within the School. In particular, the slower salary growth observed among MHI-affiliated faculty suggests that accomplishments associated with interdisciplinary research may not always be recognized within the current evaluation framework.
The observations below highlight features of the current Annual Performance Review (APR) process that may be particularly relevant when evaluating interdisciplinary faculty.
First, the SPHS performance review guidelines emphasize the need for \emph{mutual education} when evaluating multidisciplinary scholarship. In practice, this responsibility can become uneven. Faculty working in interdisciplinary areas are often expected to explain the norms, venues, and impact pathways of their fields to colleagues who are less familiar with them. The guidelines allow the Director to seek advice from appropriate experts across campus when evaluating work outside their expertise. While this is an important safeguard, relying primarily on the Director to obtain such advice may place too little responsibility on the broader APR committee. For the principle of mutual education to function as intended, committee members may also need to actively seek out and consider disciplinary standards that differ from their own.
Second, the requirement that departments produce an average APR score of approximately 1.6 introduces structural pressure into the evaluation process. Because such a constraint forces differentiation among faculty within each review cycle, it creates relative distinctions between faculty members regardless of overall performance levels. In multidisciplinary units, these distinctions may align with disciplinary boundaries if evaluators are more familiar with some research traditions than others. Moreover, the use of a fixed average does not appear to be explicitly grounded in the SPHS guidelines, the UW--FAUW Memorandum of Agreement, or University policy governing faculty evaluation. This raises the question of whether the operational implementation of APR scoring fully reflects the principles described in those documents.
Third, APR assessments typically focus on a single review period. However, patterns of evaluation may only become visible over longer horizons. A faculty member who repeatedly falls just below perceived thresholds in successive reviews may accumulate substantial long-term disadvantages, even if each individual decision appears reasonable in isolation. The salary patterns documented in this analysis illustrate how relatively small differences in annual increments can compound across years. Examining evaluation outcomes across multiple review cycles --- rather than one cycle at a time --- may therefore provide a clearer view of whether systematic differences emerge over time.
Taken together, these observations suggest that a broader review of evaluation practices may be useful to ensure that multidisciplinary scholarship is assessed in a manner consistent with the University's stated commitments to fairness, transparency, and disciplinary awareness. Such a review could examine how interdisciplinary work is contextualized during APR deliberations, how score distributions are implemented in practice, and whether multi-year evaluation patterns reveal disparities that are not visible in single-year assessments.
\section*{Conclusion}
Using publicly available salary disclosures for \DataMinYear--\DataMaxYear, this analysis finds consistent evidence of slower salary growth for MHI-affiliated faculty. A three-step unconditional growth model (lme4) establishes the variance structure explicitly: an ICC of 0.301 confirms that multilevel modelling is warranted, sequential likelihood ratio tests confirm that both time and MHI group differences significantly improve model fit, and the primary growth-gap estimate is \(-\$1{,}595\)/year (95\% CI: \([-\$3{,}121,\ -\$69]\), \(p = 0.049\)). Career-stage-aligned comparisons indicate annual growth differences on the order of \$2{,}700–\$3{,}000 per year. Although public data cannot identify the specific institutional mechanisms producing these differences, the persistence of negative growth estimates across multiple model specifications indicates that MHI-affiliated faculty have experienced systematically slower salary progression over time. Even modest annual differences in salary increments compound into substantial disparities across a decade of employment.
Because salary progression reflects the cumulative outcome of repeated performance evaluations, these patterns strongly suggest that interdisciplinary faculty may be evaluated differently within the current system. The results therefore warrant a formal review of evaluation practices within the School. A constructive next step would be a faculty-level equity audit linking salary outcomes to rank progression, workload assignments, and APR evaluations. Such an investigation would allow the School and Faculty to determine whether current evaluation processes operate consistently with the University's stated commitments to fair, transparent, and discipline-appropriate assessment of faculty performance.
These group-level patterns translate into a concrete present-day disparity at the rank of Full Professor. Appendix~\ref{app:fp_salary_comparison} reports 2025 disclosed salaries for all SPHS Full Professors: the author's salary (\$143{,}600) is the lowest in the cohort, with gaps of \$41{,}653 to \$123{,}878 above his salary across the other Full Professors. Appendix~\ref{app:salary_projection} further estimates that, applying the matched entry-aligned growth gap of \(-\$2{,}726\)/year cumulatively from his 2014 start, the author's projected counterfactual 2025 salary is approximately \$173{,}585 (a shortfall of about \$29{,}985). Together, these figures illustrate how the documented growth-gap pattern materializes as a measurable, present-day compensation shortfall for at least one MHI-affiliated faculty member.
\clearpage
\renewcommand{\thesection}{\arabic{section}}
\setcounter{section}{0}
\refstepcounter{section}
\phantomsection
\section*{Appendix \thesection: Unconditional Means Model}
\label{app:unconditional_means}
\textbf{Methods.} The unconditional means model estimates salary with a random intercept for each faculty member (\texttt{salary \textasciitilde{} 1 + (1 | faculty)}), using REML to obtain variance components. This step establishes the baseline variance structure before time or group predictors are added.
\textbf{Key findings.} The model partitions variance into between-faculty (\(\hat{\tau}^2_{00} = 340{,}980{,}617\)) and within-faculty components (\(\hat{\sigma}^2 = 791{,}036{,}685\)), yielding an intraclass correlation of \(0.301\). Roughly 30.1\% of salary variance reflects persistent differences between faculty, supporting the use of multilevel growth models.
\textbf{Interpretation.} This model is intentionally simple: it does not include time, group membership, or any covariates. Its purpose is to establish the variance structure that later models must respect. An ICC of 0.301 indicates that a meaningful share of salary variation is attributable to stable differences across individuals rather than year-to-year noise within individuals. In other words, faculty salaries are clustered by person, which violates the independence assumptions of a single-level model.
\textbf{Implications for subsequent models.} Because salaries are not independent across repeated observations of the same person, any growth analysis must account for this clustering. The unconditional means model therefore justifies random intercepts (and later random slopes) in the growth models. It also provides the baseline against which improvements in fit are assessed when adding time and MHI group terms.
\begin{figure}[h]
\centering
\begin{tikzpicture}
\draw[->] (0,0) -- (5.2,0) node[below]{Time};
\draw[->] (0,0) -- (0,3.2) node[left]{Salary};
\draw[thick] (0.5,1.0) -- (4.8,1.0);
\draw[thick] (0.5,2.3) -- (4.8,2.3);
\foreach \x in {1.0,2.0,3.0,4.0} {
\fill (\x,1.0) circle (1.3pt);
\fill (\x,2.3) circle (1.3pt);
}
\node[anchor=west] at (4.85,2.3) {Faculty A};
\node[anchor=west] at (4.85,1.0) {Faculty B};
\end{tikzpicture}
\caption{Unconditional means model schematic: two faculty with different baseline (intercept) salaries, with repeated observations clustered around each person’s level.}
\end{figure}
\clearpage
\refstepcounter{section}
\phantomsection
\section*{Appendix \thesection: Unconditional Growth Model}
\label{app:unconditional_growth}
\textbf{Plain-language summary.} This model asks a simple question: do salaries generally rise over time, and do different faculty members rise at different rates? It lets each person have their own slope, so we can see whether some careers grow faster than others.
\textbf{Methods.} The unconditional growth model adds time as a fixed effect with faculty-specific random slopes (\texttt{salary \textasciitilde{} time + (time | faculty)}), with year centred at the grand mean (\(\overline{\text{year}}=2017.5\)). REML is used for parameter estimates, and a likelihood ratio test (ML) compares this model against the unconditional means model.
\textbf{Key findings.} Adding time improves fit substantially (LRT \(\chi^2(3) = 962.85\), \(p < 0.001\)) and yields an average annual increase of \(\$7{,}763\)/year across all faculty. The random-slope variance (\(\hat{\tau}^2_{\text{slope}} = 2{,}448{,}000\)) indicates meaningful heterogeneity in individual growth trajectories, motivating the subsequent conditional model that tests MHI-specific growth differences.
\begin{figure}[h]
\centering
\begin{tikzpicture}
\draw[->] (0,0) -- (5.2,0) node[below]{Time};
\draw[->] (0,0) -- (0,3.2) node[left]{Salary};
\draw[thick] (0.6,0.8) -- (4.8,1.8);
\draw[thick] (0.6,1.2) -- (4.8,2.8);
\draw[thick] (0.6,1.6) -- (4.8,2.2);
\foreach \x/\y in {1.0/0.95,2.0/1.15,3.0/1.35,4.0/1.55} {
\fill (\x,\y) circle (1.3pt);
}
\foreach \x/\y in {1.0/1.55,2.0/1.95,3.0/2.35,4.0/2.75} {
\fill (\x,\y) circle (1.3pt);
}
\foreach \x/\y in {1.0/1.75,2.0/1.90,3.0/2.05,4.0/2.20} {
\fill (\x,\y) circle (1.3pt);
}
\node[anchor=west] at (4.85,2.8) {Faster growth};
\node[anchor=west] at (4.85,2.2) {Moderate growth};
\node[anchor=west] at (4.85,1.8) {Slower growth};
\end{tikzpicture}
\caption{Unconditional growth model schematic: average upward salary trends with different individual slopes, illustrating that some faculty grow faster than others over time.}
\end{figure}
\IfFileExists{analysis_output/lme4_growth_model_summary_latex.csv}{
\begin{table}[h]
\centering
\small
\setlength{\tabcolsep}{3pt}
\renewcommand{\arraystretch}{1.08}
\resizebox{\linewidth}{!}{
\pgfplotstabletypeset[
col sep=semicolon,
columns={model,term,estimate,std_error,ci_lower,ci_upper,p_value},
columns/model/.style={column name=Model,string type},
columns/term/.style={column name=Term,string type,string replace*={_}{\_},string replace*={^}{\^{}}},
columns/estimate/.style={column name=Estimate,string type},
columns/std_error/.style={column name=SE,string type},
columns/ci_lower/.style={column name=95\% CI Low,string type},
columns/ci_upper/.style={column name=95\% CI High,string type},
columns/p_value/.style={column name=$p$,string type},
every head row/.style={before row=\toprule,after row=\midrule},
every last row/.style={after row=\bottomrule}
]{analysis_output/lme4_growth_model_summary_latex.csv}
}
\caption{Three-step unconditional growth model results (lme4/lmerTest). Model~1 reports variance components and the ICC (SE, CI, $p$ not applicable). Model~2 reports the average annual growth rate. Model~3 reports all fixed effects including the primary growth-gap estimate (\texttt{time:mhi}). Salary estimates in \$CAD; year centred at grand mean (\(\overline{\text{year}}=2017.5\)).}
\label{tab:lme4_growth}
\end{table}
}{}
\IfFileExists{analysis_output/lme4_lrt_summary_latex.csv}{
\begin{table}[h]
\centering
\small
\setlength{\tabcolsep}{3pt}
\renewcommand{\arraystretch}{1.08}
\resizebox{\linewidth}{!}{
\pgfplotstabletypeset[
col sep=semicolon,
columns={comparison,df_diff,AIC_reduced,AIC_full,logLik_reduced,logLik_full,chisq,p_value},
columns/comparison/.style={column name=Comparison,string type},
columns/df_diff/.style={column name=$\Delta$df},
columns/AIC_reduced/.style={column name=AIC (reduced), fixed, precision=1},
columns/AIC_full/.style={column name=AIC (full), fixed, precision=1},
columns/logLik_reduced/.style={column name=logLik (reduced), fixed, precision=1},
columns/logLik_full/.style={column name=logLik (full), fixed, precision=1},
columns/chisq/.style={column name=$\chi^2$, fixed, precision=2},
columns/p_value/.style={column name=$p$, fixed, precision=4},
every head row/.style={before row=\toprule,after row=\midrule},
every last row/.style={after row=\bottomrule}
]{analysis_output/lme4_lrt_summary_latex.csv}
}
\caption{Likelihood ratio tests (ML) comparing sequential growth models. Row~1 tests whether adding time (with random slopes) improves on the unconditional means model; Row~2 tests whether adding MHI affiliation and its interaction with time improves on the unconditional growth model. Both tests support the more complex model.}
\label{tab:lme4_lrt}
\end{table}
}{}
\clearpage
\refstepcounter{section}
\phantomsection
\section*{Appendix \thesection: Conditional Growth Model}
\label{app:conditional_growth}
\textbf{Plain-language summary.} This model asks whether MHI-affiliated faculty start at a different salary level and whether their salaries rise more slowly over time, after accounting for the general upward trend across the School. It directly tests whether MHI membership is linked to a different growth trajectory.
\textbf{Methods.} The conditional growth model adds MHI affiliation and its interaction with time (\texttt{salary \textasciitilde{} time * mhi + (time | faculty)}), with year centred at the grand mean. Model comparison uses ML to test improvement over the unconditional growth model.
\textbf{Key findings.} Adding MHI terms improves fit (LRT \(\chi^2(2) = 11.88\), \(p = 0.003\)). The MHI main effect indicates a level gap of \(-\$34{,}477\) at the mean year (\(p = 0.009\)), and the growth-gap estimate is \(-\$1{,}595\)/year (95\% CI: \([-\$3{,}121,\ -\$69]\), \(p = 0.049\)). The implied annual growth rates are \(\$8{,}077\)/year for non-MHI faculty and \(\$6{,}482\)/year for MHI faculty (about 20\% lower).
\begin{figure}[h]
\centering
\begin{tikzpicture}
\draw[->] (0,0) -- (5.2,0) node[below]{Time (centred at $\overline{\text{year}}=2017.5$)};
\draw[->] (0,0) -- (0,3.2) node[left]{Salary};
\draw[thick] (0.6,1.0) -- (4.8,2.6);
\draw[thick] (0.6,0.8) -- (4.8,2.0);
\foreach \x/\y in {1.0/1.2,2.0/1.5,3.0/1.9,4.0/2.3} {
\fill (\x,\y) circle (1.3pt);
}
\foreach \x/\y in {1.0/0.95,2.0/1.2,3.0/1.5,4.0/1.8} {
\fill (\x,\y) circle (1.3pt);
}
\draw[dashed, gray] (2.7,0) -- (2.7,3.0) node[above, font=\footnotesize, text=gray]{$t=0$ (mean year)};
\node[anchor=west] at (4.85,2.6) {Non-MHI trajectory};
\node[anchor=west] at (4.85,2.0) {MHI trajectory};
\end{tikzpicture}
\caption{Conditional growth model schematic: two group-specific trajectories with different slopes. The level gap reported by the model ($-\$34{,}477$) is anchored at the centred mean year ($t=0$, i.e., 2017.5), not at career entry; the schematic illustrates the slower growth path and the at-mean-year level difference as estimated by the model.}
\end{figure}
\clearpage
\refstepcounter{section}
\phantomsection
\section*{Appendix \thesection: Career-Stage-Aligned Comparisons}
\label{app:career_stage_aligned}
\textbf{Plain-language summary.} These models compare faculty who started around the same time, so we are lining up careers at similar stages before comparing salary growth. This makes the comparison more like‑for‑like than pooled averages.
\textbf{Methods.} To compare faculty at similar career stages, models are estimated within entry cohorts and within matched pairs (\(\pm 1\) year entry timing). These designs reduce confounding from career stage by aligning entry year before comparing growth.
\textbf{Key findings.} Across cohort-fixed-effects and matched designs, estimated growth gaps remain negative, indicating slower salary progression for MHI faculty even among peers with similar entry timing.
\begin{figure}[h]
\centering
\begin{tikzpicture}
\draw[->] (0,0) -- (5.2,0) node[below]{Years Since Entry};
\draw[->] (0,0) -- (0,3.2) node[left]{Salary};
\draw[thick] (0.6,1.0) -- (4.8,2.6);
\draw[thick] (0.6,0.9) -- (4.8,2.1);
\foreach \x/\y in {1.0/1.1,2.0/1.5,3.0/1.9,4.0/2.3} {
\fill (\x,\y) circle (1.3pt);
}
\foreach \x/\y in {1.0/1.0,2.0/1.3,3.0/1.6,4.0/1.9} {
\fill (\x,\y) circle (1.3pt);
}
\node[anchor=west] at (4.85,2.6) {Non-MHI};
\node[anchor=west] at (4.85,2.1) {MHI};
\end{tikzpicture}
\caption{Career-stage-aligned schematic: salary growth trajectories compared among faculty who entered around the same time, showing a slower growth path for MHI faculty even after aligning entry timing.}
\end{figure}
\IfFileExists{analysis_output/entry_cohort_growth_summary.csv}{
\begin{table}[h]
\centering
\small
\resizebox{0.92\textwidth}{!}{
\pgfplotstabletypeset[
col sep=comma,
columns={analysis,cohort_bucket,estimate,ci_low,ci_high,n_obs,n_clusters},
columns/analysis/.style={column name=Design,string type},
columns/cohort_bucket/.style={column name=Cohort,string type},
columns/estimate/.style={
column name=Estimate,
fixed, precision=0, 1000 sep={,},
postproc cell content/.append style={/pgfplots/table/@cell content/.add={\$}{}}
},
columns/ci_low/.style={
column name=95\% CI Low,
fixed, precision=0, 1000 sep={,},
postproc cell content/.append style={/pgfplots/table/@cell content/.add={\$}{}}
},
columns/ci_high/.style={
column name=95\% CI High,
fixed, precision=0, 1000 sep={,},
postproc cell content/.append style={/pgfplots/table/@cell content/.add={\$}{}}
},
columns/n_obs/.style={column name=N},
columns/n_clusters/.style={column name=Clusters},
% Keep exactly these rows from entry_cohort_growth_summary.csv:
% row 0 = Pooled with entry-cohort FE | All cohorts
% row 1 = Within-cohort FE | 2017-2019
% row 2 = Matched FE (±1 year) | Matched set
% row 3 = Matched average slope gap (first 5 years) | Matched ±1 year
row predicate/.code={
\ifnum\pgfplotstablerow=0\relax
\else
\ifnum\pgfplotstablerow=1\relax
\else
\ifnum\pgfplotstablerow=2\relax
\else
\ifnum\pgfplotstablerow=3\relax
\else
\pgfplotstableuserowfalse
\fi
\fi
\fi
\fi
},
every head row/.style={before row=\toprule,after row=\midrule},
every last row/.style={after row=\bottomrule}
]{analysis_output/entry_cohort_growth_summary.csv}
}
\caption{Career-stage-aligned growth-gap estimates comparing faculty at similar entry timing; these models test the report’s central claim that MHI salaries tend to grow more slowly once entry cohort is accounted for. Key takeaway: when faculty are compared at similar career stages, the estimated annual raises are generally smaller for MHI faculty.}
\label{tab:entry_aligned_growth}
\end{table}
}{}
\clearpage
\refstepcounter{section}
\phantomsection
\section*{Appendix \thesection: Salary Position Within Year (Distributional Diagnostics)}
\label{app:salary_position}
\textbf{Methods.} Salary positions are converted to within-year percentiles and evaluated using permutation-based tests that preserve faculty clustering.
\textbf{Key findings.} Permutation tests indicate that the gap in below-median rates is unlikely to arise from random variation alone.
\IfFileExists{analysis_output/plot_percentile_cdf_mhi.csv}{
\begin{figure}[h]
\centering
\begin{tikzpicture}
\begin{axis}[
width=0.98\textwidth,
height=0.52\textwidth,
xlabel={Salary percentile within year},
ylabel={Cumulative proportion of observations},
xmin=0,
xmax=100,
ymin=0,
ymax=1.02,
xtick={0,25,50,75,100},
ytick={0,0.2,0.4,0.6,0.8,1.0},
yticklabel style={/pgf/number format/fixed,/pgf/number format/precision=1},
grid=major,
tick label style={font=\small},
label style={font=\small},
legend style={at={(0.98,0.02)},anchor=south east,draw=none,fill=none,font=\small}
]
\addplot[black, dashed, semithick, forget plot] coordinates {(50,0) (50,1)};
\addplot+[const plot, no markers, very thick, NonMHIColor!35, forget plot] table[col sep=comma, x=salary_percentile, y=cum_prop] {analysis_output/plot_percentile_cdf_nonmhi.csv};
\addplot+[const plot, no markers, very thick, MHIColor!35, forget plot] table[col sep=comma, x=salary_percentile, y=cum_prop] {analysis_output/plot_percentile_cdf_mhi.csv};
\addlegendimage{empty legend}
\addlegendentry{\tikz\fill[NonMHIColor!35] (0,0) circle (4pt);\hspace{0.4em}Non-MHI}
\addlegendimage{empty legend}
\addlegendentry{\tikz\fill[MHIColor!35] (0,0) circle (4pt);\hspace{0.4em}MHI}
\end{axis}
\end{tikzpicture}
\caption{MHI faculty salaries consistently appear near the lower end of the School’s salary distribution. For each year, faculty salaries were ranked within the School and converted to percentile positions (0–100). The MHI curve lies substantially to the left of the non-MHI curve, indicating lower relative salary positions across most observations. In the active-faculty sample, the average MHI salary falls near the 24th percentile of the School’s distribution (median 18th percentile), with about 80\% of MHI observations below the median salary, compared with about 41\% for non-MHI faculty.}
\label{fig:salary_percentile_cdf}
\end{figure}
}{}
\autoref{fig:salary_position_median} and \autoref{fig:salary_percentile_cdf} compare the within-year distribution of salaries for MHI and non-MHI faculty. For each year, salaries are centred relative to the same-year median and converted to percentile ranks within the School. Across the active-faculty sample, MHI salaries tend to occupy lower positions within the annual distribution. Of the 51 MHI person-year observations, 41 (80.39\%) fall below the within-year median salary, compared with 118 of 291 (40.55\%) non-MHI observations.
Permutation-based tests of the difference in these proportions indicate that this pattern is unlikely to arise from random variation alone. Faculty-cluster permutation tests yield two-sided \(p\)-values of 0.034 (person-year weighting) and 0.022 (faculty-mean weighting). While these tests are descriptive rather than causal, they indicate a consistent distributional difference between groups.
\clearpage
\refstepcounter{section}
\phantomsection
\section*{Appendix \thesection: Robustness Checks}
\label{app:robustness}
\textbf{Methods.} Robustness checks vary centring choices, cohort definitions, and inference methods, including permutation benchmarks and leave-one-pair-out sensitivity.
\textbf{Key findings.} The direction of the MHI growth disadvantage remains negative across specifications, and the matched-pair results are not driven by a single pair.
\IfFileExists{analysis_output/plot_hist_year_adj_mean_mhi.csv}{
\begin{figure}[h]
\centering
\begin{tikzpicture}
\begin{axis}[
width=0.90\textwidth,
height=0.36\textwidth,
ybar=0pt,
bar width=6pt,
xlabel={Salary relative to the same-year average (\$CAD)},
ylabel={Person-years},
scaled x ticks=false,
scaled y ticks=false,
ymin=-14,
ytick={-10,0,10,20,30},
minor ytick={-5,5,15,25},
minor tick style={draw=black!60},
major tick length=3pt,
minor tick length=1.8pt,
grid=major,
axis x line*=bottom,
yticklabel style={/pgf/number format/fixed,/pgf/number format/precision=0},
xlabel style={at={(axis description cs:0.5,-0.36)},anchor=north},
xticklabel style={/pgf/number format/fixed,/pgf/number format/precision=0,/pgf/number format/1000 sep={,},rotate=45,anchor=east,yshift=-10pt},
tick label style={font=\small},
label style={font=\small},
legend style={at={(0.98,0.98)},anchor=north east,draw=none,fill=none,font=\small}
]
\addplot[black, semithick, domain=-70000:110000, samples=2, forget plot] {0};
\addplot+[bar shift=0pt, draw=none, fill=NonMHIColor!35] table[col sep=comma, x=bin_mid, y expr={\thisrow{count} > 0 ? \thisrow{count} : nan}] {analysis_output/plot_hist_year_adj_mean_nonmhi.csv};
\addplot+[bar shift=0pt, draw=none, fill=MHIColor!35] table[col sep=comma, x=bin_mid, y expr={\thisrow{count} > 0 ? -\thisrow{count} : nan}] {analysis_output/plot_hist_year_adj_mean_mhi.csv};
\legend{Non-MHI,MHI}
\end{axis}
\end{tikzpicture}
\caption{Appendix sensitivity figure using same-year mean centering: bars show person-years by salary band relative to the same-year average salary. In the current active-faculty sample, 49 of 51 MHI person-years are below the same-year average and 2 are above.}
\end{figure}
}{}
\IfFileExists{analysis_output/plot_percentile_binary_tests.csv}{
\begin{table}[h]
\centering
\scriptsize
\setlength{\tabcolsep}{2.4pt}
\renewcommand{\arraystretch}{1.05}
\resizebox{\linewidth}{!}{
\pgfplotstabletypeset[
col sep=comma,
columns={test,estimand,observed_diff_pp,p_one_sided,p_two_sided,n_permutations,mhi_below_p50_pct,nonmhi_below_p50_pct},
columns/test/.style={column name=Test,string type},
columns/estimand/.style={column name=Estimand,string type},
columns/observed_diff_pp/.style={column name=Observed diff (pp)},
columns/p_one_sided/.style={column name=One-sided $p$},
columns/p_two_sided/.style={column name=Two-sided $p$},
columns/n_permutations/.style={column name=Permutations},
columns/mhi_below_p50_pct/.style={column name=MHI below 50\%},
columns/nonmhi_below_p50_pct/.style={column name=Non-MHI below 50\%},
every head row/.style={before row=\toprule,after row=\midrule},
every last row/.style={after row=\bottomrule}
]{analysis_output/plot_percentile_binary_tests.csv}
}
\caption{Binary tests for the pooled percentile outcome of being below the 50th percentile within year. The first row is a naive person-year test; the latter rows are faculty-cluster permutation tests that preserve the number of MHI faculties when reassigning group labels.}
\end{table}
}{}
\IfFileExists{analysis_output/plot_hist_year_adj_median_mhi.csv}{
\begin{figure}[h]
\centering
\begin{tikzpicture}
\begin{axis}[
width=0.90\textwidth,
height=0.36\textwidth,
ybar=0pt,
bar width=6pt,
xlabel={Salary relative to the same-year median (\$CAD)},
ylabel={Person-years},
scaled x ticks=false,
scaled y ticks=false,
ymin=-14,
ytick={-10,0,10,20,30},
minor ytick={-5,5,15,25},
minor tick style={draw=black!60},
major tick length=3pt,
minor tick length=1.8pt,
grid=major,
axis x line*=bottom,
yticklabel style={/pgf/number format/fixed,/pgf/number format/precision=0},
xlabel style={at={(axis description cs:0.5,-0.36)},anchor=north},
xticklabel style={/pgf/number format/fixed,/pgf/number format/precision=0,/pgf/number format/1000 sep={,},rotate=45,anchor=east,yshift=-10pt},
tick label style={font=\small},
label style={font=\small},
legend style={at={(0.98,0.98)},anchor=north east,draw=none,fill=none,font=\small}
]
\addplot[black, semithick, domain=-70000:110000, samples=2, forget plot] {0};
\addplot+[bar shift=0pt, draw=none, fill=NonMHIColor!35] table[col sep=comma, x=bin_mid, y expr={\thisrow{count} > 0 ? \thisrow{count} : nan}] {analysis_output/plot_hist_year_adj_median_nonmhi.csv};
\addplot+[bar shift=0pt, draw=none, fill=MHIColor!35] table[col sep=comma, x=bin_mid, y expr={\thisrow{count} > 0 ? -\thisrow{count} : nan}] {analysis_output/plot_hist_year_adj_median_mhi.csv};
\legend{Non-MHI,MHI}
\end{axis}
\end{tikzpicture}
\caption{Population-pyramid view using same-year median centering: bars show person-years by salary band relative to the same-year median salary. Non-MHI is plotted above the axis; MHI is mirrored below the axis for direct distribution comparison. Values left of zero are below that year's median. In the current active-faculty sample, 41 of 51 MHI person-years fall below the within-year median (rank-based cutoff used throughout the report); the histogram itself shows 42 observations in strictly-negative bins because one observation lies at the exact same-year median and is binned with positive values. This year adjustment reduces distortion from hire timing across calendar years, but remains descriptive and does not fully control for rank or promotion stage.}
\end{figure}
}{}
\IfFileExists{analysis_output/plot_hist_year_adj_mean_mhi.csv}{
\begin{figure}[h]
\centering
\begin{tikzpicture}
\begin{axis}[
width=0.90\textwidth,
height=0.36\textwidth,
ybar=0pt,
bar width=6pt,
xlabel={Salary relative to the same-year average (\$CAD)},
ylabel={Person-years},
scaled x ticks=false,
scaled y ticks=false,
ymin=-14,
ytick={-10,0,10,20,30},
minor ytick={-5,5,15,25},
minor tick style={draw=black!60},
major tick length=3pt,
minor tick length=1.8pt,
grid=major,
axis x line*=bottom,
yticklabel style={/pgf/number format/fixed,/pgf/number format/precision=0},
xlabel style={at={(axis description cs:0.5,-0.36)},anchor=north},
xticklabel style={/pgf/number format/fixed,/pgf/number format/precision=0,/pgf/number format/1000 sep={,},rotate=45,anchor=east,yshift=-10pt},
tick label style={font=\small},
label style={font=\small},
legend style={at={(0.98,0.98)},anchor=north east,draw=none,fill=none,font=\small}
]
\addplot[black, semithick, domain=-70000:110000, samples=2, forget plot] {0};
\addplot+[bar shift=0pt, draw=none, fill=NonMHIColor!35] table[col sep=comma, x=bin_mid, y expr={\thisrow{count} > 0 ? \thisrow{count} : nan}] {analysis_output/plot_hist_year_adj_mean_nonmhi.csv};
\addplot+[bar shift=0pt, draw=none, fill=MHIColor!35] table[col sep=comma, x=bin_mid, y expr={\thisrow{count} > 0 ? -\thisrow{count} : nan}] {analysis_output/plot_hist_year_adj_mean_mhi.csv};
\legend{Non-MHI,MHI}
\end{axis}
\end{tikzpicture}
\caption{Appendix sensitivity figure using same-year mean centering: bars show person-years by salary band relative to the same-year average salary. In the current active-faculty sample, 49 of 51 MHI person-years are below the same-year average and 2 are above.}
\end{figure}
}{}
\IfFileExists{analysis_output/plot_percentile_cdf_mhi.csv}{
\begin{figure}[h]
\centering
\begin{tikzpicture}
\begin{axis}[
width=0.90\textwidth,
height=0.36\textwidth,
xlabel={Salary percentile within year},
ylabel={Cumulative proportion of observations},
xmin=0,
xmax=100,
ymin=0,
ymax=1.02,
xtick={0,25,50,75,100},
ytick={0,0.2,0.4,0.6,0.8,1.0},
yticklabel style={/pgf/number format/fixed,/pgf/number format/precision=1},
grid=major,
tick label style={font=\small},
label style={font=\small},
legend style={at={(0.98,0.02)},anchor=south east,draw=none,fill=none,font=\small}
]
\addplot[black, dashed, semithick, forget plot] coordinates {(50,0) (50,1)};
\addplot+[const plot, no markers, thick, NonMHIColor] table[col sep=comma, x=salary_percentile, y=cum_prop] {analysis_output/plot_percentile_cdf_nonmhi.csv};
\addplot+[const plot, no markers, thick, MHIColor] table[col sep=comma, x=salary_percentile, y=cum_prop] {analysis_output/plot_percentile_cdf_mhi.csv};
\legend{Non-MHI,MHI}
\end{axis}
\end{tikzpicture}
\caption{Within-year salary-percentile cumulative distributions. For each year, faculty were ranked by salary and converted to percentile rank as rank/$n$ for that year. Curves show cumulative proportions across all person-years by group. The dashed vertical line marks the 50th percentile. In the current active-faculty sample, MHI has mean percentile 24.22 and median percentile 18.18, with 80.39\% (41/51) below the 50th percentile; non-MHI has mean percentile 57.10 and median percentile 57.58, with 40.55\% (118/291) below the 50th percentile.}
\end{figure}
}{}
\IfFileExists{analysis_output/plot_percentile_binary_tests.csv}{
\begin{table}[h]
\centering
\scriptsize
\setlength{\tabcolsep}{2.4pt}
\renewcommand{\arraystretch}{1.05}
\resizebox{\linewidth}{!}{
\pgfplotstabletypeset[
col sep=comma,
columns={test,estimand,observed_diff_pp,p_one_sided,p_two_sided,n_permutations,mhi_below_p50_pct,nonmhi_below_p50_pct},
columns/test/.style={column name=Test,string type},
columns/estimand/.style={column name=Estimand,string type},
columns/observed_diff_pp/.style={column name=Observed diff (pp)},
columns/p_one_sided/.style={column name=One-sided $p$},
columns/p_two_sided/.style={column name=Two-sided $p$},
columns/n_permutations/.style={column name=Permutations},
columns/mhi_below_p50_pct/.style={column name=MHI below 50\%},
columns/nonmhi_below_p50_pct/.style={column name=Non-MHI below 50\%},
every head row/.style={before row=\toprule,after row=\midrule},
every last row/.style={after row=\bottomrule}
]{analysis_output/plot_percentile_binary_tests.csv}
}
\caption{Binary tests for the pooled percentile outcome of being below the 50th percentile within year. The first row is a naive person-year test; the latter rows are faculty-cluster permutation tests that preserve the number of MHI faculties when reassigning group labels.}
\end{table}
}{}
\IfFileExists{analysis_output/appendix_skeptic_specification_grid.csv}{
\begin{table}[h]
\centering
\scriptsize
\setlength{\tabcolsep}{2.0pt}
\renewcommand{\arraystretch}{1.05}
\resizebox{\linewidth}{!}{
\pgfplotstabletypeset[
col sep=comma,
columns={
model_check,cohort_bucket,start_year_rule,estimate,std_error,ci_low,ci_high,p_two_sided,n_permutations,n_obs,n_clusters,n_treated_clusters
},
columns/model_check/.style={column name=Model check,string type},
columns/cohort_bucket/.style={column name=Cohort,string type},
columns/start_year_rule/.style={column name=Start year rule,string type},
columns/estimate/.style={column name=Estimate},
columns/std_error/.style={column name=SE},
columns/ci_low/.style={column name=CI low},
columns/ci_high/.style={column name=CI high},
columns/p_two_sided/.style={column name=$p$-value},
columns/n_permutations/.style={column name=Permutations},
columns/n_obs/.style={column name=$N$ obs},
columns/n_clusters/.style={column name=Clusters},
columns/n_treated_clusters/.style={column name=Treated clusters},
every head row/.style={before row=\toprule,after row=\midrule},
every last row/.style={after row=\bottomrule}
]{analysis_output/appendix_skeptic_specification_grid.csv}
}
\caption{Robustness specification grid for annual slope-gap estimates across cohort definitions and start-year rules, showing how the estimated MHI growth disadvantage varies but remains directionally informative across modeling choices.}
\end{table}
}{}
\IfFileExists{analysis_output/appendix_skeptic_permutation_placebo.csv}{
\begin{table}[h]
\centering
\scriptsize
\setlength{\tabcolsep}{2.2pt}
\renewcommand{\arraystretch}{1.05}
\resizebox{\linewidth}{!}{
\pgfplotstabletypeset[
col sep=comma,
columns={
model_check,cohort_bucket,start_year_rule,observed_estimate,null_q025,null_q975,null_std_dev,p_two_sided,n_permutations,inference_method
},
columns/model_check/.style={column name=Model check,string type},
columns/cohort_bucket/.style={column name=Cohort,string type},
columns/start_year_rule/.style={column name=Start year rule,string type},
columns/observed_estimate/.style={column name=Observed},
columns/null_q025/.style={column name=Null 2.5\%},
columns/null_q975/.style={column name=Null 97.5\%},
columns/null_std_dev/.style={column name=Null SD},
columns/p_two_sided/.style={column name=$p$-value},
columns/n_permutations/.style={column name=Permutations},
columns/inference_method/.style={column name=Method,string type},
every head row/.style={before row=\toprule,after row=\midrule},
every last row/.style={after row=\bottomrule}
]{analysis_output/appendix_skeptic_permutation_placebo.csv}
}
\caption{Permutation-placebo benchmarks for each robustness specification, situating observed slope gaps against null distributions to assess whether the main growth findings exceed chance variation.}
\end{table}
}{}
\IfFileExists{analysis_output/appendix_skeptic_leave_one_pair_out.csv}{
\begin{table}[h]
\centering
\scriptsize
\setlength{\tabcolsep}{2.2pt}
\renewcommand{\arraystretch}{1.05}
\resizebox{\linewidth}{!}{
\pgfplotstabletypeset[
col sep=comma,
columns={
removed_pair,estimate,std_error,ci_low,ci_high,p_two_sided,delta_vs_full,n_obs,n_clusters,n_treated_clusters
},
columns/removed_pair/.style={column name=Removed pair,string type},
columns/estimate/.style={column name=Estimate},
columns/std_error/.style={column name=SE},
columns/ci_low/.style={column name=CI low},
columns/ci_high/.style={column name=CI high},
columns/p_two_sided/.style={column name=$p$-value},
columns/delta_vs_full/.style={column name=$\Delta$ vs full},
columns/n_obs/.style={column name=$N$ obs},
columns/n_clusters/.style={column name=Clusters},
columns/n_treated_clusters/.style={column name=Treated clusters},
every head row/.style={before row=\toprule,after row=\midrule},
every last row/.style={after row=\bottomrule}
]{analysis_output/appendix_skeptic_leave_one_pair_out.csv}
}
\caption{Leave-one-pair-out fragility analysis for the matched fixed-effects estimate, testing whether the reported growth-gap conclusion is driven by any single matched pair.}
\end{table}
}{}
\clearpage
\refstepcounter{section}
\phantomsection
\section*{Appendix \thesection: Salary Projection for James Wallace}
\label{app:salary_projection}
\textbf{Purpose.} This appendix gives a plain‑language, non‑causal projection of what James Wallace’s salary might look like if his growth had followed comparable non‑MHI trajectories. It is an approximation based on group‑level estimates and should be treated as an illustrative counterfactual rather than a personal prediction.
\IfFileExists{analysis_output/jw_peer_series_list.tex}{
\input{analysis_output/jw_peer_series_list.tex}
\begin{figure}[h]
\centering
\begin{tikzpicture}
\begin{axis}[
width=0.98\textwidth,
height=0.44\textwidth,
xlabel={Year},
ylabel={Salary (\$CAD)},
xmin=\JWPeerXMin,
xmax=2025.5,
xtick distance=1,
scaled x ticks=false,
scaled y ticks=false,
grid=major,
clip=false,
axis x line*=bottom,
axis y line*=left,
enlarge x limits={upper, value=0.12},
yticklabel={\$\pgfmathprintnumber[fixed,precision=0,1000 sep={,}]{\tick}},
xticklabel style={/pgf/number format/fixed,/pgf/number format/precision=0,/pgf/number format/1000 sep={}},
tick label style={font=\small},
label style={font=\small}
]
\IfFileExists{analysis_output/jw_peer_series_plot.tex}{
\input{analysis_output/jw_peer_series_plot.tex}
}{}
\end{axis}
\end{tikzpicture}
\caption{James Wallace’s salary trajectory compared to faculty who started within \(\pm 1\) year (start year = \JWPeerStartYear). Lines are labeled at their final observed year and colored by MHI status (Non‑MHI in blue, MHI in orange); James Wallace is emphasized in bold.}
\label{fig:jw_entry_peers}
\end{figure}
}{\textit{James Wallace peer-series figure not found. Run \texttt{python3 scripts/build\_jw\_peer\_trajectory\_plot.py}.}}
\IfFileExists{analysis_output/salary_projection_james_wallace.csv}{
\pgfplotstableread[col sep=comma]{analysis_output/salary_projection_james_wallace.csv}\JWProjection
\pgfplotstablegetelem{0}{start_year}\of{\JWProjection}\let\JWProjStartYear\pgfplotsretval
\pgfplotstablegetelem{0}{first_obs_year}\of{\JWProjection}\let\JWProjFirstObsYear\pgfplotsretval
\pgfplotstablegetelem{0}{first_obs_salary}\of{\JWProjection}\let\JWProjFirstObsSalary\pgfplotsretval
\pgfplotstablegetelem{0}{t1}\of{\JWProjection}\let\JWProjTone\pgfplotsretval
\pgfplotstablegetelem{0}{s1}\of{\JWProjection}\let\JWProjSone\pgfplotsretval
\pgfplotstablegetelem{0}{T}\of{\JWProjection}\let\JWProjT\pgfplotsretval
\pgfplotstablegetelem{0}{conservative_gap}\of{\JWProjection}\let\JWProjConservativeGap\pgfplotsretval
\pgfplotstablegetelem{0}{conservative_gap_abs}\of{\JWProjection}\let\JWProjConservativeGapAbs\pgfplotsretval
\pgfplotstablegetelem{0}{matched_gap}\of{\JWProjection}\let\JWProjMatchedGap\pgfplotsretval
\pgfplotstablegetelem{0}{matched_gap_abs}\of{\JWProjection}\let\JWProjMatchedGapAbs\pgfplotsretval
\pgfplotstablegetelem{0}{conservative_raise}\of{\JWProjection}\let\JWProjConservativeRaise\pgfplotsretval
\pgfplotstablegetelem{0}{matched_raise}\of{\JWProjection}\let\JWProjMatchedRaise\pgfplotsretval
\pgfplotstablegetelem{0}{conservative_proj}\of{\JWProjection}\let\JWProjConservativeProj\pgfplotsretval
\pgfplotstablegetelem{0}{matched_proj}\of{\JWProjection}\let\JWProjMatchedProj\pgfplotsretval
\textbf{Methods (plain language).} We start with James Wallace’s most recent disclosed salary and ask: if his salary had grown at the same pace as comparable non‑MHI faculty, how much higher would it be today? We use two estimates of the annual growth gap. The matched estimate is treated as the primary benchmark because it aligns faculty by entry timing (more comparable trajectories), while the conservative estimate is a lower‑bound reference. Both estimates assume the growth gap compounds linearly over time.
\begin{itemize}
\item \textbf{Conservative projection:} uses the pooled conditional growth model estimate of \(\Delta g = \$\pgfmathprintnumber[fixed,precision=0,1000 sep={,}]{\JWProjConservativeGap}\) per year.
\item \textbf{Matched projection:} uses the matched entry-aligned fixed-effects estimate of \(\Delta g = \$\pgfmathprintnumber[fixed,precision=0,1000 sep={,}]{\JWProjMatchedGap}\) per year.
\end{itemize}
Both projections assume linear growth differences over time and hold all other factors constant.
\textbf{Key caveats.} The growth-gap estimates are derived from group-level models and do not account for individual rank progression, workload assignments, external offers, or performance evaluation histories. The projections therefore provide a structured approximation of potential cumulative differences, not a definitive individual counterfactual.
\textbf{Numbers (in real dollars).} From the verification table (Appendix~\ref{app:faculty_verification_matrix}), James Wallace’s start year is \(\JWProjStartYear\) and the current year in the dataset is \(\JWProjTone\) (\(S_{\JWProjTone}=\$\pgfmathprintnumber[fixed,precision=2,1000 sep={,}]{\JWProjSone}\)), so \(T = \JWProjT\) years. (The first observed disclosure appears in \(\JWProjFirstObsYear\), with salary \(=\$\pgfmathprintnumber[fixed,precision=2,1000 sep={,}]{\JWProjFirstObsSalary}\).) The implied counterfactual salaries are:
\begin{itemize}
\item \textbf{Conservative projection:} Implied salary \(=\$\pgfmathprintnumber[fixed,precision=2,1000 sep={,}]{\JWProjConservativeProj}\). This equates to a \(\$\pgfmathprintnumber[fixed,precision=0,1000 sep={,}]{\JWProjConservativeRaise}\) raise.
\item \textbf{Matched projection:} Implied salary \(=\$\pgfmathprintnumber[fixed,precision=2,1000 sep={,}]{\JWProjMatchedProj}\). This equates to a \(\$\pgfmathprintnumber[fixed,precision=0,1000 sep={,}]{\JWProjMatchedRaise}\) raise.
\end{itemize}
}{\textit{Salary projection CSV not found. Run \texttt{python3 scripts/build\_salary\_projection.py}.}}
\clearpage
\clearpage
\refstepcounter{section}
\phantomsection
\section*{Appendix \thesection: Faculty Verification Matrix}
\label{app:faculty_verification_matrix}
\IfFileExists{analysis_output/appendix_analysis_verification_matrix.csv}{
\begin{landscape}
\begin{table}[p]
\centering
\scriptsize
\setlength{\tabcolsep}{2.4pt}
\renewcommand{\arraystretch}{1.05}
\resizebox{\linewidth}{!}{
\pgfplotstabletypeset[
col sep=comma,
columns={
Faculty,MHI Classification,Start Year,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2025
},
columns/Faculty/.style={column name=Faculty,string type},
columns/MHI Classification/.style={column name=MHI Classification,string type},
columns/Start Year/.style={column name=Start Year,string type},
columns/2011/.style={fixed,precision=2,1000 sep={,}},
columns/2012/.style={fixed,precision=2,1000 sep={,}},
columns/2013/.style={fixed,precision=2,1000 sep={,}},
columns/2014/.style={fixed,precision=2,1000 sep={,}},
columns/2015/.style={fixed,precision=2,1000 sep={,}},
columns/2016/.style={fixed,precision=2,1000 sep={,}},
columns/2017/.style={fixed,precision=2,1000 sep={,}},
columns/2018/.style={fixed,precision=2,1000 sep={,}},
columns/2019/.style={fixed,precision=2,1000 sep={,}},
columns/2020/.style={fixed,precision=2,1000 sep={,}},
columns/2021/.style={fixed,precision=2,1000 sep={,}},
columns/2022/.style={fixed,precision=2,1000 sep={,}},
columns/2023/.style={fixed,precision=2,1000 sep={,}},
columns/2024/.style={fixed,precision=2,1000 sep={,}},
columns/2025/.style={fixed,precision=2,1000 sep={,}},
every head row/.style={before row=\toprule,after row=\midrule},
every last row/.style={after row=\bottomrule}
]{analysis_output/appendix_analysis_verification_matrix.csv}
}
\caption{Constructed SPHS salary panel used in all analyses, showing one row per faculty member with MHI classification, derived start year, and annual disclosed salaries from \DataMinYear--\DataMaxYear; this table documents the observable evidence base behind the report’s level-gap and growth-gap claims.}
\label{tab:faculty_verification_matrix}
\end{table}
\end{landscape}
}{
\textit{Faculty analysis verification matrix CSV not found. Run \texttt{python3 scripts/build\_appendix\_analysis\_verification\_matrix.py}.}
}
\clearpage
\refstepcounter{section}
\phantomsection
\section*{Appendix \thesection: Full Professor Salary Comparison}
\label{app:fp_salary_comparison}
\textbf{Purpose.} James Wallace was promoted to Full Professor effective July~1, 2025. This appendix documents where his salary sits relative to all other SPHS faculty who hold (or are estimated to hold) the rank of Full Professor as of the 2025 disclosure year, based on disclosed salaries from the Ontario Sunshine List.
\textbf{Note on rank sources.} Promotion dates marked ``User-confirmed'' are based on information provided directly by the subject. Dates marked ``CV crosswalk'' are derived from employment history parsed from publicly available faculty CVs (see Appendix~\ref{app:faculty_verification_matrix}). Dates marked ``Tenure/appointment'' are estimated from appointment year and typical UWaterloo promotion timelines; exact promotion dates for those faculty were not available. Faculty with ``--'' in the source column were long-tenured at the time of analysis and are expected to hold Full Professor rank, but no specific promotion date was identified.
\IfFileExists{analysis_output/full_professor_salary_comparison.csv}{
\begin{table}[h]
\centering
\small