Visualizing the relationship between quality score & CPC
Aug 11, 2020
Christopher Yee
2 minute read

The SEM industry has published a lot of information about the importance of improving quality score to lower average cost per click (CPC).

Most of those articles, however, just share a table with quality score in one column and its associated % increase/decrease to average CPC in the other. Although helpful I think it misses the mark on underscoring the magnitude of how much QS can help CPC.

We will do something different: the python code below will take that data and visualize the impact to average CPC for a given quality score.

Load modules

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

sns.set_style("darkgrid")

Set QS multipliers

multiplier = [4, 2.5, 0.67, 0.25, 0, -0.17, -0.29, -0.38, -0.44, -0.50]

impact = []
for m in multiplier:
    data = m + 1
    impact.append(data)

Define functions

# CALCULATE AVG CPC FOR A SPECIFIC QS MULTIPLIER
def qs_calc(cpc, cpc_impact):
    return round(cpc * cpc_impact, 2)

# LOOP THROUGH EACH QS MULTIPLIER FROM A PROVIDED CPC
def qs_estimate(cpc):
    estimate = []
    for i in impact:
        data = qs_calc(cpc, i)
        estimate.append(data)  
    return estimate

Estimate Avg CPC

We’ll assume the account has an average cost per click of $0.50 with a standard deviation of $0.10.

estimate_range = []
for i in np.random.normal(0.50, 0.10, 1000):
    data = qs_estimate(i)
    estimate_range.append(data)

Standardize data frame

df_range = pd.DataFrame.from_records(estimate_range).reset_index()
df_range = pd.melt(df_range, id_vars=['index'], var_name="quality_score", value_name="estimated_cpc")
df_range.quality_score = df_range.quality_score + 1

Visualize

plt.figure(figsize=(15,10))

sns.boxplot(x='quality_score', y='estimated_cpc', palette='Paired', data=df_range)
plt.xlabel("Quality Score")
plt.ylabel("Estimated CPC")
plt.figtext(0.9, 0.07, "by: @eeysirhc", horizontalalignment="right")

plt.show()

Now we have something a little more digestible:

  • At $0.50, the average CPC can shoot up to $2.50 (or more) with a quality score of 1
  • With a higher quality score we observe a slight decrease in CPC compared to the average
  • There is a significant difference in costs if we move ads with QS < 5 to improve by a level or two