A Case Study in Market Failure: Prescription Drug Pricing in the US

Avatar
Posted on Jul 29, 2019

Living in the only developed nation without universal health coverage, Americans are at the mercy of pharmaceutical companies, insurers, and pharmacy benefit managers when it comes to the cost of prescription drugs. As a result, we pay substantially more for our medication than people in other countries:

Drug prices by country

The out-of-pocket cost of a prescription drug largely depends on the patient’s insurance. Data on insurance formularies is spread across numerous disparate sources. Even for patients paying out of pocket, US pharmacies do not publish their prices online. The resulting confusion, plus the inelastic demand for medicine, creates a highly dysfunctional market environment, with consumers footing the bill. This is a textbook example of market failure, wherein the market’s natural price-setting mechanisms become wildly distorted and inefficient, leading to a net social welfare loss.

Current Drug Pricing Mechanisms

The current pricing model involves three major players: pharmaceutical companies, insurers, and pharmacy benefit managers. With so many intermediaries taking a piece of the pie, prices have become inflated. The actual workings of this system are too complex to summarize here, but if you want to know more, Hasan Minhaj gives an informative (and hilarious) take on the situation.

Take the example of Lipitor: Buying directly from the manufacturer, a month’s supply costs around $3. Because pharmaceutical companies know insurance companies (by way of pharmacy benefit managers) negotiate heavy discounts, they price their product exorbitantly in anticipation of these negotiations. In the case of a common generic like Lipitor, most patients will end up paying a small co-pay. But patients without insurance are left to foot the bill. In this regard, a $3 bottle of Lipitor can cost an uninsured or underinsured patient as much as $130:

Prescription drug pricing scheme

In recent years, prescription savings clubs such as GoodRx, WellRx, and Familywize have emerged to help combat this problem. They negotiate directly with pharmacies and provide search aggregation tools for consumers to compare prices across pharmacies in their area. However, in spite of these tools, the market is still comically inefficient. A quick search on WellRx shows that $3 bottle of Lipitor selling for between $9 and $57 in New York, as of this writing. Looking in Dallas, it could cost as little as $5.50.

That got me thinking — if prices vary so much within a city and between cities, are there any other patterns that could help consumers make more educated decisions about where they buy their prescriptions?

The Data

Given the utter lack of transparency in this industry, it is extremely difficult to find large, authoritative datasets on retail drug pricing. However, aggregators provide a useful, albeit imperfect, view on the state of the market. To get a better view on this, I built a scraping tool to perform automated searches on WellRx and log prices of the 30 most prescribed drugs across the 30 largest US cities, yielding approximately 12,000 data points after outliers were removed.

A histogram grid gives a sense of the price variation among different drugs. I added in red dashed lines to indicate the price paid by Medicaid based on data from NADAC. It doesn’t take a data scientist to note that the red lines tend toward the left of their respective charts, sometimes dramatically so.

It’s a poignant indication of how the government uses its bargaining power to bring down prices. In all developed countries, with the exception of the US, citizens expect their governments to apply this leverage to keep prices low for everyone. Here, only a select few — limited to low-income people and those over 65 — benefit from that leverage. The rest of us, meanwhile, are left to fend for ourselves. The data reveals this hasn't been working out in our favor.

Location, Location, Location

To better visualize geographic price variation, I constructed a heatmap of z-scores for each city-drug pair relative to the average price of each drug across all cities, with higher (red) z-scores indicating higher-than-average prices:

Most Expensive Least Expensive
1. San Francisco, CA 1. Los Angeles, CA
2. Chicago, IL 2. Riverside, CA
3. St. Louis, MO 3. Minneapolis, MN
4. Portland, OR 4. Houston, TX
5. Austin, TX 5. Detroit, MI

Interestingly, the price variations do not appear to correlate with differences in cost of living, given Los Angeles’s top spot on the list. Nor does it necessarily reflect effectiveness of policy, considering the most expensive city, San Francisco, is in the same state.

Turning my attention to pharmacies, I calculated average z-scores for the 20 large pharmacy franchises, with lower z-scores indicating lower prices:

Pharmacy Z-Score Pharmacy Z-Score
1. PUBLIX PHARMACY -1.17 11. GIANT PHARMACY -0.32
2. KROGER PHARMACY -1.04 12. BENZER PHARMACY -0.21
3. FRED MEYER PHARMACY -0.99 13. COSTCO PHARMACY 0.23
4. WINN DIXIE -0.94 14. RITE AID PHARMACY 0.25
5. HEB PHARMACY -0.84 15. VONS PHARMACY 0.43
6. HARRIS TEETER PHARMACY -0.76 16. RANDALLS PHARMACY 0.51
7. MEIJER PHARMACY -0.75 17. SAFEWAY PHARMACY 0.51
8. WALMART PHARMACY -0.73 18. WALGREENS 0.59
9. RALPHS PHARMACY -0.63 19. SAVON PHARMACY 0.72
10. MEDICAL PLAZA PHARMACY -0.36 20. CVS PHARMACY 1.1

Caveats

Given the distorted state of the market, this data does not give a definitive answer as to how much people are paying for their prescription drugs. However, the emergence of prescription price aggregators such as WellRx are making the market more transparent. The transparency they provide creates a quasi-free market among their users as pharmacies compete to appear at the top of the search results.

The data are also influenced by other externalities, such as WellRx’s ability to negotiate in a given market or the introduction of a major competitor such as Walmart, for example. Furthermore, the z-score metric is based on the average price, which fails to take user behavior into account. After all, most consumers shop around, which is why WellRx exists in the first place. That said, using the minimum price as a metric carries its share of caveats as well, as the cheapest option may not be available to all residents of a particular city.

Next Steps

This analysis serves as a starting point for further research on drug pricing. It would be interesting to overlay more data, such as demographic data and cost-of-living indices, to identify further trends. With more granular data, geocoding the data to facilitate analysis of higher-level regional trends as well as neighborhood-level micro-trends to highlight underserved communities.

About Author

Related Articles

Leave a Comment

No comments found.

View Posts by Categories


Our Recent Popular Posts


View Posts by Tags

2019 airbnb alumni Alumni Interview Alumni Reviews Alumni Spotlight alumni story Alumnus API Application artist aws beautiful soup Best Bootcamp Best Data Science 2019 Best Data Science Bootcamp Best Data Science Bootcamp 2020 Best Ranked Big Data Book Launch Book-Signing bootcamp Bootcamp Alumni Bootcamp Prep Bundles California Cancer Research capstone Career Career Day citibike clustering Coding Course Demo Course Report D3.js data Data Analyst data science Data Science Academy Data Science Bootcamp Data science jobs Data Science Reviews Data Scientist Data Scientist Jobs data visualization Deep Learning Demo Day Discount dplyr employer networking feature engineering Finance Financial Data Science Flask gbm Get Hired ggplot2 googleVis Hadoop higgs boson Hiring hiring partner events Hiring Partners Industry Experts Job Job Placement Jobs Jon Krohn JP Morgan Chase Kaggle Kickstarter lasso regression Lead Data Scienctist Lead Data Scientist leaflet linear regression Logistic Regression machine learning Maps matplotlib Medical Research meetup Networking neural network Neural networks New Courses nlp NYC NYC Data Science nyc data science academy NYC Open Data NYCDSA NYCDSA Alumni Online Open Data painter pandas Part-time Portfolio Development prediction Prework Programming PwC python python machine learning python scrapy python web scraping python webscraping Python Workshop R R language R Programming R Shiny r studio R Visualization R Workshop R-bloggers random forest Ranking recommendation recommendation system regression Remote remote data science bootcamp Scrapy scrapy visualization seaborn Selenium sentiment analysis Shiny Shiny Dashboard Spark Special Special Summer Sports statistics streaming Student Interview Student Showcase SVM Switchup Tableau team TensorFlow Testimonial tf-idf Top Data Science Bootcamp twitter visualization web scraping Weekend Course What to expect word cloud word2vec XGBoost yelp