Cadillac vs Germans, Path to a New Brand

Paul Grech
Posted on Nov 16, 2015

Scope:

Analyse fuel economy ratings in the automotive industry.

Compare vehicle efficiency of American automotive manufacturer, Cadillac with the automotive industry as a whole.

Sept 2014 - “We cannot deny the fact that we are leaving behind our traditional customer base,” de Nysschen said. “It will take several years before a sufficiently large part of the audience who until now have been concentrating on the German brands will find us in their consideration set.” Cadillac’s President - Johan de Nysschen http://www.autonews.com/article/20140915/RETAIL03/140919894/cadillacs-new-chief-vows-no-retreat-on-pricing-strategy

Compare vehicle efficiency of American automotive manufacturer, Cadillac, with self declared competition, the German luxury market.

What further comparisons will display insight into EPA ratings?

Analysis Overview

  1. Automotive Industry
  2. Cadillac vs Automotive Industry
  3. Cadillac vs German Luxury Market
  4. Cadillac vs German Luxury Market by Vehicle Class

Importing the Data

Import FuelEconomy.gov data and filter rows needed for analysis. Then remove all zero’s included in city and highway MPG data as this will skew results. - Replace this information with NA as to not perform calculations on data not present.

library(lsr)
library(dplyr)
library(ggplot2)

# Import Data and convert to Dplyr data frame
FuelData <- read.csv("Project1.data/FuelEconomyGov.csv", stringsAsFactors = FALSE)
FuelData <- tbl_df(FuelData)

# Create data frame including information necessary for analysis
FuelDataV1 <- select(FuelData,
  mfrCode, year, make, model,
  engId, eng_dscr, cylinders, displ, sCharger, tCharger,
  trans_dscr, trany, drive,
  startStop, phevBlended,
  city08, comb08, highway08,
  VClass)

# Replace Zero values in MPG data with NA
FuelDataV1$city08U[FuelDataV1$city08 == 0] <- NA
FuelDataV1$comb08U[FuelDataV1$comb08 == 0] <- NA
FuelDataV1$highway08U[FuelDataV1$highway08 == 0] <- NA

1: Automotive Industry

Visualize city and highway EPA ratings of the entire automotive industry.

Question:

How have EPA ratings for city and highway improved across the automotive industry as a whole?

Note: No need to include combined as combined is simply a percentage based calculation defaulting to 60/40 but can be adjusted on the website.

# VISUALIZE INDUSTRY EPA RATINGS
IndCityMPG <- group_by(FuelDataV1, year) %>%
  summarise(., MPG = mean(city08, na.rm = TRUE)) %>%
  mutate(., Label = "Industry") %>%
  mutate(., MPGType = "City")
IndHwyMPG <-  group_by(FuelDataV1, year) %>%
  summarise(., MPG = mean(highway08, na.rm = TRUE)) %>%
  mutate(., Label = "Industry") %>%
  mutate(., MPGType = "Highway")

Comp.Ind <- rbind(IndCityMPG, IndHwyMPG)
ggplot(data = Comp.Ind, aes(x = year, y = MPG, linetype = MPGType)) +
  geom_point() + geom_line() + theme_bw() + 
  ggtitle("Industry\n(city & highway MPG)")

unnamed-chunk-3-1

Conclusion:

Data visualization shows relatively poor EPA ratings throughout the 1980's, 1990's and early to mid 2000's with the first drastic improvement in these ratings occurring around 2008. One significant event around this time period was the recession hitting America. Consumers having less disposable income along with increased oil prices likely fueled competition to develop fuel efficient powertrains across the automotive industry as a whole.

2: Cadillac vs Automotive Industry

Visualize Cadillac's city and highway EPA ratings with that of the automotive industry.

Question:

How does Cadillac perform when compared to the automotive industry as a whole?

# COMPARE INDUSTRY EPA RATINGS FOR CITY AND HIGHWAY WITH THAT OF CADILLAC
IndCityMPG <- group_by(FuelDataV1, year) %>%
  summarise(., MPG = mean(city08, na.rm = TRUE)) %>%
  mutate(., Label = "Industry") %>%
  mutate(., MPGType = "City")
IndHwyMPG <-  group_by(FuelDataV1, year) %>%
  summarise(., MPG = mean(highway08, na.rm = TRUE)) %>%
  mutate(., Label = "Industry") %>%
  mutate(., MPGType = "Highway")
CadCityMPG <- filter(FuelDataV1, make == "Cadillac") %>%
  group_by(., year) %>%
  summarize(., MPG = mean(city08, na.rm = TRUE)) %>%
  mutate(., Label = "Cadillac") %>%
  mutate(., MPGType = "City")
CadHwyMPG <-  filter(FuelDataV1, make == "Cadillac") %>%
  group_by(., year) %>%
  summarize(., MPG = mean(highway08, na.rm = TRUE)) %>%
  mutate(., Label = "Cadillac") %>%
  mutate(., MPGType = "Highway")

Comp.Ind.Cad <- rbind(IndCityMPG, IndHwyMPG, CadCityMPG, CadHwyMPG)
ggplot(data = Comp.Ind.Cad, aes(x = year, y = MPG, color = Label, linetype = MPGType)) +
  geom_point() + geom_line() + theme_bw() + 
  scale_color_manual(name = "Cadillac / Industry", values = c("blue","#666666")) +
  ggtitle("Cadillac vs Industry\n(city & highway MPG)")

unnamed-chunk-5-1

Conclusion:

Cadillac was chosen as a brand of interest because they are currently redefining their brand as a whole. It is important to analyze past performance to have a complete understanding of how Cadillac has been viewed for several decades.

In 2002, Cadillac dropped to its lowest performance. Why did this occur? Because the entire fleet was made up of the same 4.6L V8 mated to a 4-speed automatic transmission, or as some would say... slush-box. The image that Cadillac had of this time was of a retirement vehicle to be shipped to its owners new retirement home in Florida with a soft ride, smooth powerful delivery and no performance. With the latest generation of Cadillac's being performance oriented beginning with the LS2 sourced CTS-V and now containing the ATS-V, CTS-V along with several other V-Sport models, a rebranding is crucial in order to appeal to a new market of buyers.

Also interesting to note is that although there is an increased amount of performance models being produced, fuel efficiency is not lacking. The gap noted above has decreased although there has been an increase in performance models being developed, a concept not often found to align.

3: Cadillac vs German Luxury Market

Cadillac has recently targeted the German luxury market consisting of the following manufacturers:

  • Audi
  • BMW
  • Mercedes-Benz

Question:

How does Cadillac perform when compared with the German Luxury Market?

# Calculate Cadillac average Highway / City MPG past 2000
CadCityMPG <- filter(CadCityMPG, year > 2000)
CadHwyMPG <-  filter(CadHwyMPG, year > 2000)

# Calculate Audi average Highway / City MPG
AudCityMPG <- filter(FuelDataV1, make == "Audi", year > 2000) %>%
  group_by(., year) %>%
  summarize(., MPG = mean(city08, na.rm = TRUE)) %>%
  mutate(., Label = "Audi") %>%
  mutate(., MPGType = "City")
AudHwyMPG <-  filter(FuelDataV1, make == "Audi", year > 2000) %>%
  group_by(., year) %>%
  summarize(., MPG = mean(highway08, na.rm = TRUE)) %>%
  mutate(., Label = "Audi") %>%
  mutate(., MPGType = "Highway")

# Calculate BMW average Highway / City MPG
BMWCityMPG <- filter(FuelDataV1, make == "BMW", year > 2000) %>%
  group_by(., year) %>%
  summarize(., MPG = mean(city08, na.rm = TRUE)) %>%
  mutate(., Label = "BMW") %>%
  mutate(., MPGType = "City")
BMWHwyMPG <-  filter(FuelDataV1, make == "BMW", year > 2000) %>%
  group_by(., year) %>%
  summarize(., MPG = mean(highway08, na.rm = TRUE)) %>%
  mutate(., Label = "BMW") %>%
  mutate(., MPGType = "Highway")

# Calculate Mercedes-Benz average Highway / City MPG
MbzCityMPG <- filter(FuelDataV1, make == "Mercedes-Benz", year > 2000) %>%
  group_by(., year) %>%
  summarize(., MPG = mean(city08, na.rm = TRUE)) %>%
  mutate(., Label = "Merc-Benz") %>%
  mutate(., MPGType = "City")
MbzHwyMPG <-  filter(FuelDataV1, make == "Mercedes-Benz", year > 2000) %>%
  group_by(., year) %>%
  summarize(., MPG = mean(highway08, na.rm = TRUE)) %>%
  mutate(., Label = "Merc-Benz") %>%
  mutate(., MPGType = "Highway")

# Concatenate all Highway/City MPG data for:
#     v.s. German Competitors
CompGerCadCity <- rbind(CadCityMPG, AudCityMPG, BMWCityMPG, MbzCityMPG)
CompGerCadHwy <- rbind(CadHwyMPG, AudHwyMPG, BMWHwyMPG, MbzHwyMPG)
ggplot(data = CompGerCadCity, aes(x = year, y = MPG, color = Label)) + 
  geom_line() + geom_point() + theme_bw() + 
  scale_color_manual(name = "Cadillac vs German Luxury Market", 
                     values = c("#333333", "#666666", "blue","#999999")) +
  ggtitle("CITY MPG\n(Cad vs Audi vs BMW vs Mercedes-Benz)")

unnamed-chunk-7-1

ggplot(data = CompGerCadHwy, aes(x = year, y = MPG, color = Label)) + 
  geom_line() + geom_point() + theme_bw() + 
  scale_color_manual(name = "Cadillac vs German Luxury Market", 
                     values = c("#333333", "#666666", "blue","#999999")) +
  ggtitle(label = "HIGHWAY MPG\n(Cad vs Audi vs BMW vs Mercedes-Benz)")

unnamed-chunk-8-1

Conclusion:

“Mr. Ellinghaus, a German who came to Cadillac in January from pen maker Montblanc International after more than a decade at BMW, said he has spent the past 11 months doing”foundational work" to craft an overarching brand theme for Cadillac’s marketing, which he says relied too heavily on product-centric, me-too comparisons.

“In engineering terms, it makes a lot of sense to benchmark the cars against BMW,” Mr. Ellinghaus said. But he added: “From a communication point of view, you must not follow this rule.” http://adage.com/article/cmo-strategy/ellinghaus-cadillac-a-luxury-brand-makes-cars/296016/

Despite comments made by Mr. Ellinghaus, the end goal is for consumers to be comparing Cadillac with Audi, BMW and Mercedes-Benz. The fact that this is already happening is a huge success for the company which only ten years ago, would never be mentioned in the same sentence as the German Luxury market.

Data visualization shows that Cadillac is equally rated as its German competitors and at the same time, has not had any significant dips unlike all other manufacturers. The continued increase in performance combined with rebranding signify that Cadillac is on a path to success.

4: Cadillac vs German Luxury Market by Vehicle Class

Every manufacturer has its strengths and weaknesses. It is important to assess and recognize these attributes to best determine where an increase in R&D spending is needed and where to maintain a competitive advantage for the consumer by vehicle class.

Question:

In what vehicle class is Cadillac excelling or falling behind?

# Filter only Cadillac and german luxury market
German <- filter(FuelDataV1, make %in% c("Cadillac", "Audi", "BMW", "Mercedes-Benz"))
# Group vehicle classes into more generic classes
German$VClass.new <- ifelse(grepl("Compact", German$VClass, ignore.case = T), "Compact", 
                          ifelse(grepl("Wagons", German$VClass), "Wagons", 
                                 ifelse(grepl("Utility", German$VClass), "SUV", 
                                        ifelse(grepl("Special", German$VClass), "SpecUV", German$VClass))))

# Focus on vehicle model years past 2000
German <- filter(German, year > 2000)
# Vans, Passenger Type are only specific to one company and are not needed for this analysis
German <- filter(German, VClass.new != "Vans, Passenger Type")



# INDUSTRY
IndClass <- filter(German, make %in% c("Audi", "BMW", "Mercedes-Benz")) %>%
  group_by(VClass.new, year) %>%
  summarize(AvgCity = mean(city08), AvgHwy = mean(highway08))
# CADILLAC
CadClass <- filter(German, make %in% c("Cadillac")) %>%
  group_by(VClass.new, year) %>%
  summarize(AvgCity = mean(city08), AvgHwy = mean(highway08))


##### Join tables #####
CadIndClass <- left_join(IndClass, CadClass, by = c("year", "VClass.new"))
CadIndClass$DifCity <- (CadIndClass$AvgCity.y - CadIndClass$AvgCity.x)
CadIndClass$DifHwy <- (CadIndClass$AvgHwy.y - CadIndClass$AvgHwy.x)
ggplot(CadIndClass, aes(x = year, ymax = DifCity, ymin = 0) ) + 
  geom_linerange(color='grey20', size=0.5) + 
  geom_point(aes(y=DifCity), color = 'blue') +
  geom_hline(yintercept = 0) +
  theme_bw() + 
  facet_wrap(~VClass.new) +
  ggtitle("Cadillac vs Germany Luxury Market\n(city mpg by class)") +
  xlab("Year") + 
  ylab("MPG Difference")

unnamed-chunk-10-1

ggplot(CadIndClass, aes(x = year, ymax = DifHwy, ymin = 0) ) + 
  geom_linerange(color='grey20', size=0.5) + 
  geom_point(aes(y=DifHwy), color='blue') +
  geom_hline(yintercept = 0) +
  theme_bw() + 
  facet_wrap(~VClass.new) +
  ggtitle("Cadillac vs German Luxury Market\n(highway mpg by class)") +
  xlab("Year") + 
  ylab("MPG Difference")

unnamed-chunk-11-1

Conclusion:

The above data visualization displays the delta between Cadillac and the average (Audi, BMW, Mercedes-Benz) fuel economy ratings. Positive can then be considered above the average competition and negative, below the average competition.

There is a lack of performance across all vehicle classes. Reasoning may be because the same power trains are being used across multiple chassis.

 

Conclusion & Continued Analysis

  1. There is a clear improvement in EPA ratings as federal emission standards drive innovation for increased fleet fuel economy. It is important for automotive manufacturers to continue innovation and push for increased efficiency.
  2. Further analysis on the following areas provides greater researcher opportunity:
    • Drivetrain v.s. MPG
    • Sales data
    • Consumer reaction to new marketing strategies
    • Consumer demand for product or badge

About Author

Paul Grech

Paul Grech

Paul Grech is a Data Scientist with passion for exploring insight in big data. He is eager to advance his skills and build value in a professional environment. Previous experience include several years of professional consulting experience in...
View all posts by Paul Grech >

Related Articles

Leave a Comment

No comments found.

View Posts by Categories


Our Recent Popular Posts


View Posts by Tags

#python #trainwithnycdsa 2019 airbnb Alex Baransky 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 Instructor Blog Instructor Interview 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 Meet the team meetup Networking neural network Neural networks New Courses nlp NYC NYC Data Science nyc data science academy NYC Open Data NYCDSA NYCDSA Alumni Online Online Bootcamp 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