HIV/AIDS Cases in Denver, 1981-2002
By Keira Richards
A Moral Majority newsletter for 1983 portraying the stigma surrounding AIDS. Source
Introduction¶
The American HIV/AIDS epidemic is one of the most notorious public health catastrophes of the 20th century. The start of 1981 marks the initial recognition of AIDS by the Center for Disease Control (CDC) and thus the beginning of AIDS data collection. The CDC reported on clusters of diseases related to immunosuppression which researchers at the time referred to as “Gay Related Immune Deficiency” and the public labeled “Gay Cancer.” Initially the disease was heavily stigmatized as a deadly result of being a gay man. However, it was quickly discovered in other groups including IV drug users, women, and those diagnosed with the blood clotting disorder hemophilia. I sought to explore the legitimacy of the connection in pop culture between AIDS and the Gay community, focusing on the subset of Denver cases. While there are academic analyses of AIDS epicenters like San Francisco and New York, I found no such analysis of Denver. I used a CDC dataset that includes statistical categories like sex, race, and exposure type. The dataset in question is comprised of anonymized patient data for those diagnosed with HIV/AIDS between 1981 and 2002, documenting 859,000 cases and 476,000 deaths nationwide. After importing the necessary libraries, we can pull a sample of the dataset below:
import pandas as pd
import matplotlib.pyplot as plt
aids_df=pd.read_csv('aids_combo.csv', delimiter=",")
aids_df.sample(5)
count | month diagnosed | month | year | age at diagnosis | age at diagnosis code | sex | sexual orientation | sex and sexual orientation code | exposure category | exposure category code | vital status | vital status code | race or ethnicity | race or ethnicity code | cases | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
4074 | 4075 | 05-1995 | 5 | 1995 | 35 – 39 Years or age is missing | 6 | Male | homosexual or Unknown Classification | 1 | Male homosexual/bisexual contact | 1 | Alive: Not reported dead before 2001 | 0 | White (and also not Hispanic) | 2106-3 | 1 |
3208 | 3209 | 08-1993 | 8 | 1993 | 35 – 39 Years or age is missing | 6 | Male | homosexual or Unknown Classification | 1 | Male homo/bisexual , IV drug use | 3 | Dead: Reported dead before 2001 | 1 | Black (and also not Hispanic) | 2054-5 | 3 |
4382 | 4383 | 02-1996 | 2 | 1996 | 35 – 39 Years or age is missing | 6 | Male | homosexual or Unknown Classification | 1 | Male homosexual/bisexual contact | 1 | Alive: Not reported dead before 2001 | 0 | White (and also not Hispanic) | 2106-3 | 7 |
287 | 288 | 12-1986 | 12 | 1986 | 30 – 34 Years | 5 | Male | homosexual or Unknown Classification | 1 | Male homosexual/bisexual contact | 1 | Dead: Reported dead before 2001 | 1 | White (and also not Hispanic) | 2106-3 | 7 |
768 | 769 | 11-1988 | 11 | 1988 | 25 – 29 Years | 4 | Female | any | 4 | Heterosexual contact with HIV | 5 | Dead: Reported dead before 2001 | 1 | White (and also not Hispanic) | 2106-3 | 1 |
Methodology¶
This data was collected by healthcare providers and reported to the CDC in an effort to track the epidemic. The dataset is available through the CDC WONDER portal, a website offering medical datasets with the intent of encouraging public health research. It is important to note there is a question of accuracy in that the diagnosis criteria pre-1985 was a variety of symptoms or conditions related to low immune response. A compromised immune system may signal an HIV infection; however it was not necessarily indicative. Thus, there is an uncertifiable possibility the data collected at that time was inflated. The reported demographics could also be flawed, as a large portion of the data was either self-reported or assumed by the healthcare provider. Those exposed to AIDS were likely incentivized to lie about demographics like sexuality due to the illness being highly stigmatized. This stigma also points to the dataset being incomplete as it may have caused some of the afflicted to not seek treatment. Further error could stem from the wide range of symptoms and lack of knowledge about the disease leading to misdiagnosis.
The categories show assumptions from the CDC imposed on the medical practitioners, such as homosexual men being given the code “1” and being lumped with unknown sexuality, pediatric cases being lumped with heterosexual cases, and no consideration for the sexuality of female cases. This shows the CDC was bureaucratically reinforcing the stereotypes of HIV/AIDS, although it was known by 1982 that the disease was not isolated to homosexual men. The strangest assumption (to me, anyway) is “age is missing” is lumped with 35–39 years old, when the average AIDS patient in Denver was 30–34. Of course, the national average was 35-39, which explains this odd categorization to an extent, but this demonstrates how the data could be inflated or skewed.
Due to privacy concerns, The CDC amalgamated the original data based on demographics before publishing. All cases with the same data were combined in one row, the number of combined cases is denoted by the “cases” column. For the purpose of analysis, I used an Excel macro to repeat each row the number of times provided in the cases column. Thus, each row of my modified dataset represents an individual case.
To gain insight into the applicability of the “gay white man AIDS victim” stereotype, I analyzed the mortality and infection statistics for Denver cases through the following calculations and graphics.
Trends in Cases¶
As an introduction to Denver cases, I will plot the total number of cases over each month. As a point in comparison, I’ve pulled the total U.S. cases per month from the WONDER portal as well. I will overlay this with the Denver data.
aids_df['month diagnosed'] = pd.to_datetime(aids_df['month diagnosed'])
by_year=aids_df.groupby('month diagnosed')['count'].count()
us_df=pd.read_csv('cases per month.csv', delimiter=',')
us_df['month diagnosed']=pd.to_datetime(us_df['month diagnosed'])
us_cases=us_df.groupby('month diagnosed')['cases'].sum()
fig = plt.figure()
ax = fig.add_subplot(111)
ax2 = ax.twinx()
us_cases.plot(kind='line', color='teal', ax=ax, label='U.S.', legend=True, title= 'Cases Diagnosed by Month')
by_year.plot(kind='line', color='orange', ax=ax2, label='Denver', legend=True)
ax.set_ylabel('National Cases')
ax2.set_ylabel('Denver Cases')
plt.legend(loc=1, bbox_to_anchor=(1.01, 0.9))
plt.show()
At 6,062 cases recorded from 1981 to 2002, Denver was not spared from the HIV/AIDS epidemic. Although cases were less prevalent than U.S. trends at the start of data collection in 1981, they soon mirrored the national trends such as with the spike in the early 1990s. Thus, Denver may serve as a valid case study for larger, harder to study national AIDS data sets. Of course, the first medical test for HIV wasn’t made available until 1985 and even then, it wasn’t universally accessible. Therefore, these datasets of reported cases will never fully encapsulate the full magnitude of the epidemic.
To begin an analysis of AIDS stereotyping in Denver specifically, let’s take a look at the average Denver case.
aids_df.mode()[:1]
count | month diagnosed | month | year | age at diagnosis | age at diagnosis code | sex | sexual orientation | sex and sexual orientation code | exposure category | exposure category code | vital status | vital status code | race or ethnicity | race or ethnicity code | cases | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | Dec-92 | 6.0 | 1992.0 | 30 – 34 Years | 5 | Male | homosexual or Unknown Classification | 1.0 | Male homosexual/bisexual contact | 1.0 | Dead: Reported dead before 2001 | 1.0 | White (and also not Hispanic) | 2106-3 | 1.0 |
Evidently, the average Denver case was in fact a white male aged 30-34 who was reported as homosexual or of unknown sexuality and was allegedly exposed to HIV though homosexual contact. The graph below depicts the trend of each exposure type over time. Notice how homosexual contact dominates the graph and creates a pattern strikingly similar to the trend of all cases from above.
ecdf = (aids_df.reset_index()
.groupby(['month diagnosed','exposure category'], as_index=False)
.count()
.rename(columns={'index':'ct'})
)
fig, ax = plt.subplots()
for key, data in ecdf.groupby('exposure category'):
data.plot(x='month diagnosed', y='ct', ax=ax, label=key, title='Cases Per Exposure over Time')
plt.legend(loc=1, bbox_to_anchor=(1.75, 0.9))
<matplotlib.legend.Legend at 0x11b3a9e20>
The origins of portrayal of AIDS as a gay disease is apparent in this graph, given the disproportionate number of homosexual cases. In fact, exposure categories aside from homosexual contact are barely represented. However, it is important to remember we don’t know how exposure was reported and, given the stigma associated with the illness, it isn’t difficult to imagine some reporting providers may have simply assumed homosexuality.
The other category titles further allude to the mindset of the CDC and reporting providers at the time. There is a category for exposure through both IV drug use and homosexual contact, yet the CDC felt it necessary to create the intersectional “Male homo/bisexual, IV drug use” category as well. One can only conjecture why this category seemed necessary. I theorize it served as a catch-all. If a man presented with HIV/AIDS symptoms and no obvious exposure, the reporting physician could use this category to assume it was due to one of the two highest exposure risks without muddying the data by reporting it as “Risk not identified”. This category also serves to further stigmatize the Gay community by implying a high rate of IV drug users within the community.
Trends In Mortality¶
A Colorado AIDS Project ad in Gay periodical OUT FRONT, Jan. 1987. Source
AIDS arguably remains prolific in our collective memory due to how deadly it was. The most tragic, though not necessarily surprising, aspect of this data is that the average patient in Denver died. Survivor Daniel Renner recently recalled losing “79 friends and lovers” to AIDS after moving to Denver in 1990. When Renner arrived in Denver, an AIDS diagnosis was all but a death sentence, as shown below in a graph of mortality rate over time.
mortality=aids_df['vital status code']== 1
by_year_mort=aids_df[mortality].groupby('month diagnosed')['count'].count()
precent_mort=by_year_mort/by_year*100
precent_mort.plot(title= 'Mortality Rate by Month')
import datetime as dt
plt.axvline(dt.datetime(1987, 3, 19), color='green',)
plt.axvline(dt.datetime(1997, 11, 20), color='green',)
<matplotlib.lines.Line2D at 0x10b64bfd0>
The steady decline of mortality rate is emblematic of more advanced medical interventions. A major milestone in HIV/AIDS treatment was the approval of azidothymidine (AZT), an antiretroviral medication in 1987. A decade later, the FDA approved the use of AZT beginning at time of HIV exposure to halt the progression to AIDS. These major developments are denoted by the green lines on the graph.
It’s popularly believed gay men were the most likely to die from AIDS given the association between AIDS and the Gay community. However, when mortality rate is analyzed by demographic, interesting trends appear. For example, when we calculate mortality rate by exposure type…
exposure_total=aids_df.groupby('exposure category')['count'].count()
exposure_mortality=aids_df[mortality].groupby('exposure category')['count'].count()
exposure_mortality_prec=exposure_mortality/exposure_total*100
exposure_mortality_prec.sort_values(ascending=False).plot(title= 'Exposure Precent Mortality', kind='bar', color='purple')
<AxesSubplot:title={'center':'Exposure Precent Mortality'}, xlabel='exposure category'>
…we can see those exposed to HIV through blood components and hemophilia had significantly higher mortality rates than homosexual contact. One might recall the now famous AIDS diagnosis of hemophiliac Ryan White, who was banned from attending school and became a poster child for AIDS research following his death in 1990. Even though they had the highest mortality, hemophiliacs and transfusion recipients made up a mere .7% of the total cases each, while homosexual contact made up a whopping 71%. This illustrates how the stereotype of AIDS killing gay men was likely influenced by the sheer case numbers for homosexual contact, not mortality.
Interesting trends also appear in mortality by race. The code below calculates and graphs the percentage of the total cases and total deaths for each race category.
deaths=aids_df[mortality]['count'].count()
total=aids_df['count'].max()
race_mortality=aids_df[mortality].groupby('race or ethnicity')['count'].count()
race_mortality_prec=race_mortality/deaths*100
race_total=aids_df.groupby('race or ethnicity')['count'].count()
race_prec=race_total/total*100
fig = plt.figure()
ax = fig.add_subplot(111)
race_prec.plot(kind='bar', color='teal', ax=ax, label= '% of Total Cases', position=1, legend=True, title='% of Cases and Deaths by Race')
race_mortality_prec.plot(kind='bar', label= '% of Total Deaths', color='black', ax=ax, position=0, legend=True)
<AxesSubplot:title={'center':'% of Cases and Deaths by Race'}, xlabel='race or ethnicity'>
This graph illustrates a few interesting trends. When viewing the total number of cases and deaths reported, the mortality percentage should sit at about 57%. However, when the percentage of total cases and total deaths are compared for each racial category, important differences are revealed.
The mortality rate for white cases was considerably higher than the other races and inflates the average; 3 of the 5 race designations have a mortality rate of 45% except for Natives and Whites. This is especially interesting when one considers what a small number of Natives were diagnosed with AIDS in Denver (.3% of cases, 42 cases total) which is possibly indictive of substandard access to medical care.
age_total=aids_df.groupby('age at diagnosis')['count'].count()
age_mort=aids_df[mortality].groupby('age at diagnosis')['count'].count()
age_mort_prec=age_mort/age_total*100
age_mort_prec.plot(kind='bar', color='green', title= 'Mortality Percentage by Age')
<AxesSubplot:title={'center':'Mortality Percentage by Age'}, xlabel='age at diagnosis'>
It comes as no surprise to anyone living during the COVID-19 Pandemic that mortality rate is higher with age, although there are interesting variations outside of a direct correlation between worse mortality rate and advanced age as one would expect. Notice the 30–39 range is extremely close to the overall mortality rate of 57%. This variation is difficult to quantify. The odd uptick at about 20–39 might just be due to the overwhelming number of cases in that age range. It could also be affected by preexisting conditions in individual cases, inflating mortality rates at younger ages, as well as the CDC lumping in cases with unknown ages.
Conclusions¶
It’s easy to see where the stereotype of AIDS primarily affecting white, gay men originated, given the sheer number of cases in that demographic. While white homosexual men did make up most of the cases and deaths, they were not the only demographics affected. AIDS was far more deadly to those reliant on blood transfusions than to gay men and mortality correlates to age. Thus, while gay men were disproportionately affected by the HIV/AIDS epidemic, the stigma of AIDS being a gay illness is not warranted by the data. Of course, this analysis is far from exhaustive, and arguments can be made the accuracy of the dataset is dubious. However, it is one of the few datasets pertaining to the HIV/AIDS from the era itself and it offers some insight into the progression of the epidemic in Denver as well as how it was viewed and categorized at the time.