CMMi and K&S are competitors providing multimedia solutions to enterprise businesses. CMMi develops custom services of multimedia applications for digital video and sound, including hardware and software. They have obtained a national reputation for their innovative work in the development of high-end multi-media applications.Although the market for multi-media is booming, CMMi has not seen much growth over the past few years. New customers are acquired, but many clients just do not return. Based on focus group discussions, the following drivers of satisfaction were identified:
Focused group discussions also revealed that many customers had moved from CMMi to K&S.Therefore the beliefs of satisfaction drivers and overall evaluations of satisfaction were obtained for both CMMi (brand 1), and Knights & Schoening (brand 2).
CMMi is interested to understand how customers evaluate CMMi and Knights & Schoening on the drivers and overall satisfaction. Also, she is interested to know what the importance is of each of the drivers. Which satisfaction driver(s) should CMMi focus on to improve satisfaction and retain its customers?
#Reading the data
rm(list = ls())
cust <- read.csv("1. custsatcase.csv")
#sapply(cust,class)
cust$brand <- as.factor(cust$brand)
cust$brand1 <- ifelse(cust$brand == 1,1,0)
#Average of all metrics
averages <- aggdata <-aggregate(cust[,-(1:2)], by=list(cust$brand),FUN=mean, na.rm=TRUE)
library(data.table)
setattr(averages, "row.names", c("CMMi","K&S"))
averages <- as.data.frame(t(averages[,-1]))
#Rearranging the dataframe to plot
averages["metrics"] <- rownames(averages)
df.molten <- melt( averages, id.vars="metrics", value.name= "Averages", variable.name="Brand")
colnames(df.molten) <- c("metrics", "Brand", "Averages")
#Removing row brand1
df.molten <- df.molten[-c(14,28),]
#Plotting the average c-sat scores
library(ggplot2)
ggplot(df.molten, aes( x = metrics, y = Averages, fill = Brand ) ) +
geom_bar( position = "identity", stat = "identity", alpha = .5 ) +
theme(axis.text.x = element_text(angle = 45,vjust = 1, hjust = 1, color = "black", size = 12), axis.title=element_text(size=14,face="bold"), plot.title = element_text(color="black", face="bold", size=18, hjust=0.5)) +
labs(x = "Customer Satisfaction Metrics",y = "Average C-Sat Scores",color = "black", title = "Average C-Sat Scores across Brands")
We observe that customers are more satisfied with K&S as compared to CMMi. Though CMMi scores higher on time to delivery, documentation of its products, features offered and response time support, it’s almost at par at operating costs and price. It lags behind at ease of using the product, expertise support, longevity, performance and reliability - factors which play a vital role in improving the overall product satisfaction.
#Determine the importance of customer satisfaction drivers
csat_imp <- lm(overall_satisfaction ~ ., data = cust[,-(1:2)])
summary(csat_imp)
##
## Call:
## lm(formula = overall_satisfaction ~ ., data = cust[, -(1:2)])
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.8558 -0.5593 -0.0052 0.4451 2.5374
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.81307 0.35043 2.320 0.02085 *
## information 0.07736 0.02910 2.658 0.00818 **
## longevity 0.06443 0.03657 1.762 0.07892 .
## performance 0.20560 0.02996 6.862 2.71e-11 ***
## features 0.03818 0.03021 1.264 0.20704
## price 0.22675 0.03747 6.052 3.40e-09 ***
## ease_of_use 0.15173 0.03219 4.713 3.41e-06 ***
## reliability 0.05988 0.03681 1.627 0.10459
## documentation 0.17961 0.03242 5.539 5.62e-08 ***
## operating_costs 0.06131 0.03150 1.946 0.05234 .
## delivery.time_orders 0.30243 0.03353 9.019 < 2e-16 ***
## response.time_support 0.04098 0.03140 1.305 0.19262
## expertise_support 0.07571 0.02923 2.590 0.00995 **
## brand1 -2.90288 0.17885 -16.231 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7993 on 386 degrees of freedom
## Multiple R-squared: 0.7771, Adjusted R-squared: 0.7696
## F-statistic: 103.5 on 13 and 386 DF, p-value: < 2.2e-16
#Creating the dataset for plots
var_imp <- as.data.frame(csat_imp$coefficients)
pval <- as.data.frame(summary(csat_imp)$coefficients[,4])
var_imp <- cbind(var_imp,pval)
var_imp$metrics <- rownames(var_imp)
colnames(var_imp) <- c("Coef","p-value","metrics")
var_imp <- var_imp[order(-var_imp$Coef),]
var_imp <- subset(var_imp, var_imp$metrics != "(Intercept)")
var_imp$Statistical.Significance <- ifelse(var_imp$`p-value`< 0.05,"Significant","Insignificant")
#Plotting the drivers of C-Sat
ggplot(var_imp, aes(reorder(metrics,-Coef), y= Coef, fill = Statistical.Significance) ) +
geom_bar( position = "identity", stat = "identity", alpha = .5) +
theme(axis.text.x = element_text(angle = 45,vjust = 1, hjust = 1, color = "black", size = 12), axis.title=element_text(size=14,face="bold"), plot.title = element_text(color="black", face="bold", size=18, hjust=0.5)) +
labs(x = "Customer Satisfaction Metrics",y = "Importance Scores",color = "black", title = "Drivers of Customer Satisfaction")
On determining the drivers of customer satisfaction we observe customers value the brand, time to delivery, performance, ease of use and price the most. The performance factors which CMMi scores the most either drive lesser towards overall satisfaction or are statistically insignificant.
Looking at interaction between all metrics and brand to understand the brand effect:
#Intreacting Brand and all variables
csat_imp_interact <- lm(overall_satisfaction ~ . + (brand1:.), data = cust[,-c(1:2)])
summary(csat_imp_interact)
##
## Call:
## lm(formula = overall_satisfaction ~ . + (brand1:.), data = cust[,
## -c(1:2)])
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.4895 -0.3091 0.0349 0.3920 2.1914
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.446585 0.436630 5.603 4.08e-08 ***
## information 0.121232 0.036568 3.315 0.00101 **
## longevity 0.023514 0.048925 0.481 0.63107
## performance 0.095646 0.038886 2.460 0.01436 *
## features 0.056568 0.035500 1.593 0.11190
## price -0.002178 0.050232 -0.043 0.96544
## ease_of_use 0.082908 0.042041 1.972 0.04934 *
## reliability -0.009922 0.046468 -0.214 0.83103
## documentation 0.085164 0.040785 2.088 0.03747 *
## operating_costs 0.081601 0.039028 2.091 0.03722 *
## delivery.time_orders 0.048138 0.049714 0.968 0.33352
## response.time_support 0.054647 0.048602 1.124 0.26158
## expertise_support 0.078052 0.036923 2.114 0.03518 *
## brand1 -5.896205 0.609101 -9.680 < 2e-16 ***
## information:brand1 -0.091049 0.052565 -1.732 0.08407 .
## longevity:brand1 0.098551 0.065981 1.494 0.13612
## performance:brand1 0.182438 0.054027 3.377 0.00081 ***
## features:brand1 -0.021696 0.054580 -0.398 0.69122
## price:brand1 0.381248 0.067633 5.637 3.41e-08 ***
## ease_of_use:brand1 0.160925 0.057713 2.788 0.00557 **
## reliability:brand1 0.127150 0.066967 1.899 0.05837 .
## documentation:brand1 0.157612 0.058193 2.708 0.00707 **
## operating_costs:brand1 -0.048773 0.056577 -0.862 0.38921
## delivery.time_orders:brand1 0.394376 0.062879 6.272 9.85e-10 ***
## response.time_support:brand1 0.014423 0.059663 0.242 0.80911
## expertise_support:brand1 -0.015762 0.052358 -0.301 0.76355
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.707 on 374 degrees of freedom
## Multiple R-squared: 0.831, Adjusted R-squared: 0.8197
## F-statistic: 73.58 on 25 and 374 DF, p-value: < 2.2e-16
Test to validate whether there is competition prevalent or not:
anova(csat_imp,csat_imp_interact, test = "F")
## Analysis of Variance Table
##
## Model 1: overall_satisfaction ~ information + longevity + performance +
## features + price + ease_of_use + reliability + documentation +
## operating_costs + delivery.time_orders + response.time_support +
## expertise_support + brand1
## Model 2: overall_satisfaction ~ information + longevity + performance +
## features + price + ease_of_use + reliability + documentation +
## operating_costs + delivery.time_orders + response.time_support +
## expertise_support + brand1 + (brand1:(information + longevity +
## performance + features + price + ease_of_use + reliability +
## documentation + operating_costs + delivery.time_orders +
## response.time_support + expertise_support + brand1))
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 386 246.63
## 2 374 186.94 12 59.689 9.9511 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
The low p-value of F-test indicates that the competition is indeed significant and should not be taken lightly.
#Imporatance of variables in presence of competition
imp_coef_interact <- as.data.frame(csat_imp_interact$coefficients)
colnames(imp_coef_interact) <- "coef"
imp_coef_interact["metrics"] <- rownames(imp_coef_interact)
#Taking a subset of only non-interacted betas
imp_coef_interact_wo_comb <- imp_coef_interact[1:14,]
#Extracting all interacted variables
imp_coef_interact_comb <- as.data.frame(imp_coef_interact[grep(":brand1", rownames(imp_coef_interact)),])
#Removing "brand" from the string
for(i in 1:nrow(imp_coef_interact_comb)){
imp_coef_interact_comb$metrics_interacted[i] <- unlist(strsplit(imp_coef_interact_comb$metrics[i], split=':'))[1]
}
#Joining imp_coef_interact_wo_comb and imp_coef_interact_comb
imp_coef_interact_final <- merge(imp_coef_interact_wo_comb, imp_coef_interact_comb[,c(1,3)], by.x=c("metrics"),by.y=c("metrics_interacted"),all.x = T)
#Treat NAs - convert to 0
imp_coef_interact_final$coef.y <- ifelse(is.na(imp_coef_interact_final$coef.y),0,imp_coef_interact_final$coef.y)
#View(imp_coef_interact_final)
#Creating the final coef in presence of competition
imp_coef_interact_final$coef_final <- imp_coef_interact_final$coef.x + imp_coef_interact_final$coef.y
#Removing intercept and brand
imp_coef_interact_final <- imp_coef_interact_final[3:nrow(imp_coef_interact_final),]
#Merging performance and importance data
for_mds <- merge(imp_coef_interact_final,averages[-1,], by = "metrics")
#Plotting the importance plot after in precense of competition
library(ggplot2)
ggplot(for_mds, aes( x = reorder(metrics, -coef_final), y = coef_final)) +
geom_bar( position = "identity", stat = "identity", alpha = .5, fill = "deepskyblue1") +
theme(axis.text.x = element_text(angle = 45,vjust = 1, hjust = 1, color = "black", size = 12), axis.title=element_text(size=14,face="bold"), plot.title = element_text(color="black", face="bold", size=18, hjust=0.5)) +
labs(x = "Customer Satisfaction Metrics",y = "Importance Scores",color = "black", title = "Drivers of C-Sat in presence of Competition")
Factoring the competition of K&S to CMMi, we observe that K&S is indeed a significant threat to CMMi. We notice that customers value performance, ease of use, documentation, response time of support and delivery time of the product, the most. They care the least about information, operating costs, features and expertise support. Hence, CMMi should make some re-budgeting decisions to make smart investments into metrics that their customers’ value leading to decreased customer churn and pave way to re-attract their lost customers back.
par(mar=c(0,0,0,0))
#2*2 plot
ggplot(for_mds, aes(x = abs(coef_final) , y= CMMi) ) +
geom_point( position = "identity", stat = "identity", aes(size = 0.5)) +
#geom_point( aes(y = for_mds$`K&S`, color = "red", size = 0.5)) +
geom_text(label = for_mds$metrics, vjust = -0.5) +
geom_hline(yintercept = 3, col = "red") +
geom_vline(xintercept = 0.225, col = "red") +
xlab("Importance")+
ylab("Performance - CMMi")+
ggtitle("Budget Reallocation") +
theme(axis.title=element_text(size=14,face="bold"), plot.title = element_text(color="black", face="bold", size=18, hjust=0.5))+
theme(legend.position="none")
Hence, we recommend CMMI to invest more into making the product easier to use and in its performance. Its also recommended to reduce the price of the product since CMMi customers are more price sensitive. They are doing very well in providing great documentation and time to delivery. They can improve on the longevity, reliability and expertise support for the product, but customers do not value these features as much as they value others, hence CMMi should not make investments in these domains. On the other hand, CMMi is doing very well in support response time, information, operating costs and features offered, but unfortunately customers do not value them as much, hence CMMi should look into disinvesting from these and allocate the money into recommended areas of improvement. Itâs understandable that making the product easy to use and increasing the performance demands design changes, which may take a number of iterations and would be a time consuming process. Hence, we might not be able to see the desired results right away, but itâs worth investing in the same. Also, offering competitive price in a no growth environment can be difficult.