Burger King vs McDonald’s - A user study to compare applications and ordering processes

Samuele Mazzei, Federico Manzoni, Lorenzo Zambotto, Nataliya Zhigalina, Samuele Nigrone

2025-05-21

This report details the analysis of user experience data for the Burger King (BK) and McDonald’s (MC) mobile applications, with a specific focus on app usability and the food ordering process.

Setup and Data Loading

Color Definitions

First, we define specific RGB color codes for Burger King (orange) and McDonald’s (red) for consistent visualization throughout the analysis.

bk_rgb <- rgb(255 / 255, 135 / 255, 51 / 255)
mc_rgb <- rgb(218 / 255, 41 / 255, 28 / 255)
primary_rgb <- rgb(203 / 255, 97 / 255, 32 / 255)
graph_rgb <- c(rgb(236 / 255, 139 / 255, 73 / 255), rgb(203 / 255, 97 / 255, 32 / 255), rgb(157 / 255, 67 / 255, 16 / 255), rgb(64 / 255, 32 / 255, 13 / 255))

Data Loading

The dataset, EXPORT.csv, is loaded from the main directory. The Preference column, indicating user preference for BK or MC, is converted to a factor. The Age column is converted to numeric, and the Gender column is also converted to a factor. The frequency of app usage for both BK and MC (BKfreq and MCfreq) is converted to numeric. We also provide summary statistics for Age and Gender to understand the demographic distribution of the respondents.

data <- read.csv2("./EXPORT.csv", sep = ",")
head(data)
##   Age Gender FFfreq BKfreq MCfreq Preference SUS1 SUS2 SUS3 SUS4 SUS5 SUS6 SUS7
## 1  22      F      2      3      2         BK    3    2    4    2    1    2    3
## 2  22      F      2      4      2         BK    5    1    5    1    5    1    5
## 3  20      F      2      4      2         BK    3    2    4    1    4    1    5
## 4  25      F      1      3      2         BK    3    2    3    3    3    2    4
## 5  23      F      1      3      2         BK    3    2    4    1    3    1    5
## 6  23      M      2      4      2         BK    4    2    4    1    3    4    4
##   SUS8 SUS9 SUS10 UEQ1 UEQ2 UEQ3 UEQ4 UEQ5 UEQ6 UEQ7 UEQ8 OF1 OF2 OF3 OF4 OF5
## 1    2    4     1    5    5    6    4    4    5    2    1   3   5   5   4   5
## 2    1    5     1    7    1    7    7    4    6    5    6   5   5   5   5   5
## 3    1    5     1    6    6    7    5    6    6    6    6   2   4   5   2   4
## 4    2    3     3    4    4    5    5    4    4    5    4   3   4   4   4   4
## 5    1    3     1    6    5    6    4    4    5    3    3   5   5   5   4   4
## 6    1    4     2    6    6    5    3    5    5    4    6   4   4   5   1   5
##   OF6
## 1   5
## 2   5
## 3   5
## 4   4
## 5   4
## 6   5
data$Preference <- as.factor(data$Preference)
data$Age <- as.numeric(data$Age)
data$Gender <- as.factor(data$Gender)

data$BKfreq <- as.ordered(data$BKfreq)
data$MCfreq <- as.ordered(data$MCfreq)
summary(data$Age)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   17.00   21.00   23.00   25.21   25.00   69.00
summary(data$Gender)
##  F  H  M NB 
## 60  2 40  6
pie(
  table(data$Gender),
  main = "Gender distribution",
  # col = c(rgb(102 / 255, 160 / 255, 200 / 255), rgb(49 / 255, 113 / 255, 178 / 255), rgb(26 / 255, 79 / 255, 140 / 255), rgb(18 / 255, 37 / 255, 59 / 255)),
  col = graph_rgb,
  cex = 2,
  labels = c("60", "2", "40", "6")
)

legend(
  "bottomright",
  legend = c("Female", "Hidden", "Male", "Non Binary"),
  # fill = c(rgb(102 / 255, 160 / 255, 200 / 255), rgb(49 / 255, 113 / 255, 178 / 255), rgb(26 / 255, 79 / 255, 140 / 255), rgb(18 / 255, 37 / 255, 59 / 255)),
  fill = graph_rgb
)

hist(data$Age,
  main = "Age distribution",
  xlab = "Age",
  ylab = "Frequency",
  xlim = c(0, 80),
  ylim = c(0, 60),
  col = primary_rgb
)

Usability Score Calculations

SUS Score Calculation

The System Usability Scale (SUS) scores are calculated. For odd-numbered SUS questions (SUS1, SUS3, SUS5, SUS7, SUS9), 1 is subtracted from the raw score. For even-numbered SUS questions (SUS2, SUS4, SUS6, SUS8, SUS10), the raw score is subtracted from 5. The sum of these adjusted scores is then multiplied by 2.5 to obtain the final SUS score, ranging from 0 to 100.

data$SUS1 <- data$SUS1 - 1
data$SUS3 <- data$SUS3 - 1
data$SUS5 <- data$SUS5 - 1
data$SUS7 <- data$SUS7 - 1
data$SUS9 <- data$SUS9 - 1

data$SUS2 <- 5 - data$SUS2
data$SUS4 <- 5 - data$SUS4
data$SUS6 <- 5 - data$SUS6
data$SUS8 <- 5 - data$SUS8
data$SUS10 <- 5 - data$SUS10

data$SUSscore <- (data$SUS1 + data$SUS2 + data$SUS3 + data$SUS4 + data$SUS5 + data$SUS6 + data$SUS7 + data$SUS8 + data$SUS9 + data$SUS10) * 2.5
head(data)
##   Age Gender FFfreq BKfreq MCfreq Preference SUS1 SUS2 SUS3 SUS4 SUS5 SUS6 SUS7
## 1  22      F      2      3      2         BK    2    3    3    3    0    3    2
## 2  22      F      2      4      2         BK    4    4    4    4    4    4    4
## 3  20      F      2      4      2         BK    2    3    3    4    3    4    4
## 4  25      F      1      3      2         BK    2    3    2    2    2    3    3
## 5  23      F      1      3      2         BK    2    3    3    4    2    4    4
## 6  23      M      2      4      2         BK    3    3    3    4    2    1    3
##   SUS8 SUS9 SUS10 UEQ1 UEQ2 UEQ3 UEQ4 UEQ5 UEQ6 UEQ7 UEQ8 OF1 OF2 OF3 OF4 OF5
## 1    3    3     4    5    5    6    4    4    5    2    1   3   5   5   4   5
## 2    4    4     4    7    1    7    7    4    6    5    6   5   5   5   5   5
## 3    4    4     4    6    6    7    5    6    6    6    6   2   4   5   2   4
## 4    3    2     2    4    4    5    5    4    4    5    4   3   4   4   4   4
## 5    4    2     4    6    5    6    4    4    5    3    3   5   5   5   4   4
## 6    4    3     3    6    6    5    3    5    5    4    6   4   4   5   1   5
##   OF6 SUSscore
## 1   5     65.0
## 2   5    100.0
## 3   5     87.5
## 4   4     60.0
## 5   4     80.0
## 6   5     72.5

UEQ Score Calculation

The User Experience Questionnaire (UEQ) scores are calculated. Each of the 8 UEQ items is first centered by subtracting 4 (assuming the original scale was 1-7, this transforms it to -3 to +3). Then, overall UEQ, Pragmatic Quality (UEQscorePQ), and Hedonic Quality (UEQscoreHQ) scores are computed. UEQscorePQ is the average of the first four items, UEQscoreHQ is the average of the last four items, and the overall UEQscore is the average of all eight items.

data$UEQ1 <- data$UEQ1 - 4
data$UEQ2 <- data$UEQ2 - 4
data$UEQ3 <- data$UEQ3 - 4
data$UEQ4 <- data$UEQ4 - 4
data$UEQ5 <- data$UEQ5 - 4
data$UEQ6 <- data$UEQ6 - 4
data$UEQ7 <- data$UEQ7 - 4
data$UEQ8 <- data$UEQ8 - 4

data$UEQscorePQ <- (data$UEQ1 + data$UEQ2 + data$UEQ3 + data$UEQ4) / 4
data$UEQscoreHQ <- (data$UEQ5 + data$UEQ6 + data$UEQ7 + data$UEQ8) / 4
data$UEQscore <- (data$UEQ1 + data$UEQ2 + data$UEQ3 + data$UEQ4 + data$UEQ5 + data$UEQ6 + data$UEQ7 + data$UEQ8) / 8

head(data)
##   Age Gender FFfreq BKfreq MCfreq Preference SUS1 SUS2 SUS3 SUS4 SUS5 SUS6 SUS7
## 1  22      F      2      3      2         BK    2    3    3    3    0    3    2
## 2  22      F      2      4      2         BK    4    4    4    4    4    4    4
## 3  20      F      2      4      2         BK    2    3    3    4    3    4    4
## 4  25      F      1      3      2         BK    2    3    2    2    2    3    3
## 5  23      F      1      3      2         BK    2    3    3    4    2    4    4
## 6  23      M      2      4      2         BK    3    3    3    4    2    1    3
##   SUS8 SUS9 SUS10 UEQ1 UEQ2 UEQ3 UEQ4 UEQ5 UEQ6 UEQ7 UEQ8 OF1 OF2 OF3 OF4 OF5
## 1    3    3     4    1    1    2    0    0    1   -2   -3   3   5   5   4   5
## 2    4    4     4    3   -3    3    3    0    2    1    2   5   5   5   5   5
## 3    4    4     4    2    2    3    1    2    2    2    2   2   4   5   2   4
## 4    3    2     2    0    0    1    1    0    0    1    0   3   4   4   4   4
## 5    4    2     4    2    1    2    0    0    1   -1   -1   5   5   5   4   4
## 6    4    3     3    2    2    1   -1    1    1    0    2   4   4   5   1   5
##   OF6 SUSscore UEQscorePQ UEQscoreHQ UEQscore
## 1   5     65.0       1.00      -1.00    0.000
## 2   5    100.0       1.50       1.25    1.375
## 3   5     87.5       2.00       2.00    2.000
## 4   4     60.0       0.50       0.25    0.375
## 5   4     80.0       1.25      -0.25    0.500
## 6   5     72.5       1.00       1.00    1.000

SUS and UEQ Analysis + Correlation Analysis

Summary statistics (Min, 1st Qu., Median, Mean, 3rd Qu., Max) for SUS scores, overall UEQ scores, UEQ Pragmatic Quality scores, and UEQ Hedonic Quality scores are presented separately for users who prefer BK and users who prefer MC.

summary(data[data$Preference == "BK", 31:34])
##     SUSscore        UEQscorePQ        UEQscoreHQ         UEQscore     
##  Min.   : 32.50   Min.   :-2.0000   Min.   :-3.0000   Min.   :-1.500  
##  1st Qu.: 47.50   1st Qu.: 0.0000   1st Qu.:-0.2500   1st Qu.: 0.000  
##  Median : 65.00   Median : 0.7500   Median : 0.5000   Median : 0.500  
##  Mean   : 63.88   Mean   : 0.6735   Mean   : 0.3724   Mean   : 0.523  
##  3rd Qu.: 77.50   3rd Qu.: 1.5000   3rd Qu.: 1.2500   3rd Qu.: 1.125  
##  Max.   :100.00   Max.   : 3.0000   Max.   : 2.7500   Max.   : 2.500
summary(data[data$Preference == "MC", 31:34])
##     SUSscore       UEQscorePQ       UEQscoreHQ         UEQscore      
##  Min.   :42.50   Min.   :-2.000   Min.   :-3.0000   Min.   :-2.2500  
##  1st Qu.:70.00   1st Qu.: 0.750   1st Qu.:-0.6250   1st Qu.: 0.1250  
##  Median :77.50   Median : 1.500   Median : 0.2500   Median : 0.8750  
##  Mean   :77.37   Mean   : 1.284   Mean   : 0.1271   Mean   : 0.7055  
##  3rd Qu.:86.25   3rd Qu.: 2.250   3rd Qu.: 0.7500   3rd Qu.: 1.5000  
##  Max.   :97.50   Max.   : 3.000   Max.   : 3.0000   Max.   : 3.0000

Correlation Analysis

A Pearson’s product-moment correlation test is performed to assess the linear relationship between SUS scores and overall UEQ scores specifically for users who prefer Burger King. The output includes the t-statistic, degrees of freedom, p-value, 95% confidence interval for the correlation, and the sample correlation coefficient. The test is performed also for McDonald’s users.

cor.test(data$SUSscore[data$Preference == "BK"], data$UEQscore[data$Preference == "BK"])
## 
##  Pearson's product-moment correlation
## 
## data:  data$SUSscore[data$Preference == "BK"] and data$UEQscore[data$Preference == "BK"]
## t = 6.3029, df = 47, p-value = 9.352e-08
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.4885972 0.8048309
## sample estimates:
##       cor 
## 0.6768061
cor.test(data$SUSscore[data$Preference == "MC"], data$UEQscore[data$Preference == "MC"])
## 
##  Pearson's product-moment correlation
## 
## data:  data$SUSscore[data$Preference == "MC"] and data$UEQscore[data$Preference == "MC"]
## t = 6.3522, df = 57, p-value = 3.787e-08
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.4642659 0.7725242
## sample estimates:
##       cor 
## 0.6438059

Boxplot Comparisons

Boxplots are generated to visually compare the distributions of SUS scores, overall UEQ scores, UEQ Pragmatic Quality scores, and UEQ Hedonic Quality scores between BK and MC users.

  • For SUS scores, a horizontal line at 70 is added, often considered a threshold for acceptable usability.
  • For UEQ scores, horizontal lines at 0.8 and -0.8 are added, which can serve as benchmarks for positive and negative evaluations based on UEQ benchmark data (though context is important).
layout(matrix(c(1, 2, 3, 4), nrow = 2, byrow = TRUE))

boxplot(data$SUSscore[data$Preference == "BK"], data$SUSscore[data$Preference == "MC"],
  names = c("BK", "MC"),
  main = "SUS Score",
  col = c(bk_rgb, mc_rgb),
  ylim = c(0, 100)
)
abline(h = 70, col = "black", lty = 3)

boxplot(data$UEQscore[data$Preference == "BK"], data$UEQscore[data$Preference == "MC"],
  names = c("BK", "MC"),
  main = "UEQ Overall Score",
  col = c(bk_rgb, mc_rgb),
  ylim = c(-3, 3)
)
abline(h = 0.8, col = "black", lty = 3)
abline(h = -0.8, col = "black", lty = 3)

boxplot(data$UEQscorePQ[data$Preference == "BK"], data$UEQscorePQ[data$Preference == "MC"],
  names = c("BK", "MC"),
  main = "UEQ Pragmatic Quality Score",
  col = c(bk_rgb, mc_rgb),
  ylim = c(-3, 3)
)
abline(h = 0.8, col = "black", lty = 3)
abline(h = -0.8, col = "black", lty = 3)

boxplot(data$UEQscoreHQ[data$Preference == "BK"], data$UEQscoreHQ[data$Preference == "MC"],
  names = c("BK", "MC"),
  main = "UEQ Hedonic Quality Score",
  col = c(bk_rgb, mc_rgb),
  ylim = c(-3, 3)
)
abline(h = 0.8, col = "black", lty = 3)
abline(h = -0.8, col = "black", lty = 3)

Ordering Food (OF) Analysis

This section analyzes specific questions related to the food ordering process (OF1 to OF6). Histograms are generated to show the distribution of scores for each OF question, separately for BK and MC users. The x-axis represents the score (assumed to be 1-5), and the y-axis represents the frequency. Questions were the following:

  • I can comfortably select the location for my order.
  • I can efficiently navigate the app to locate the products I want to order.
  • I can clearly see the cost of each product and any associated charges.
  • I can easily find the ingredient lists and nutritional information for the products.
  • I can customize the ingredients or options for the food items I select in an easy way.
  • I can effortlessly make adjustments to the contents of my order before checking out.

Each question had a picture of the app part associated with it, which was not included in the analysis. The histograms are plotted with different colors for BK and MC users.

layout(matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12), nrow = 6, byrow = TRUE))

hist(data$OF1[data$Preference == "BK"],
  main = "Distribution OF1 BK",
  xlab = "Score",
  ylab = "Frequency",
  xlim = c(1, 5),
  ylim = c(0, 30),
  col = bk_rgb
)
hist(data$OF1[data$Preference == "MC"],
  main = "Distribution OF1 MC",
  xlab = "Score",
  ylab = "Frequency",
  xlim = c(1, 5),
  ylim = c(0, 30),
  col = mc_rgb
)
hist(data$OF2[data$Preference == "BK"],
  main = "Distribution OF2 BK",
  xlab = "Score",
  ylab = "Frequency",
  xlim = c(1, 5),
  ylim = c(0, 30),
  col = bk_rgb
)
hist(data$OF2[data$Preference == "MC"],
  main = "Distribution OF2 MC",
  xlab = "Score",
  ylab = "Frequency",
  xlim = c(1, 5),
  ylim = c(0, 30),
  col = mc_rgb
)
hist(data$OF3[data$Preference == "BK"],
  main = "Distribution OF3 BK",
  xlab = "Score",
  ylab = "Frequency",
  xlim = c(1, 5),
  ylim = c(0, 30),
  col = bk_rgb
)
hist(data$OF3[data$Preference == "MC"],
  main = "Distribution OF3 MC",
  xlab = "Score",
  ylab = "Frequency",
  xlim = c(1, 5),
  ylim = c(0, 30),
  col = mc_rgb
)
hist(data$OF4[data$Preference == "BK"],
  main = "Distribution OF4 BK",
  xlab = "Score",
  ylab = "Frequency",
  xlim = c(1, 5),
  ylim = c(0, 30),
  col = bk_rgb
)
hist(data$OF4[data$Preference == "MC"],
  main = "Distribution OF4 MC",
  xlab = "Score",
  ylab = "Frequency",
  xlim = c(1, 5),
  ylim = c(0, 30),
  col = mc_rgb
)
hist(data$OF5[data$Preference == "BK"],
  main = "Distribution OF5 BK",
  xlab = "Score",
  ylab = "Frequency",
  xlim = c(1, 5),
  ylim = c(0, 30),
  col = bk_rgb
)
hist(data$OF5[data$Preference == "MC"],
  main = "Distribution OF5 MC",
  xlab = "Score",
  ylab = "Frequency",
  xlim = c(1, 5),
  ylim = c(0, 30),
  col = mc_rgb
)
hist(data$OF6[data$Preference == "BK"],
  main = "Distribution OF6 BK",
  xlab = "Score",
  ylab = "Frequency",
  xlim = c(1, 5),
  ylim = c(0, 30),
  col = bk_rgb
)
hist(data$OF6[data$Preference == "MC"],
  main = "Distribution OF6 MC",
  xlab = "Score",
  ylab = "Frequency",
  xlim = c(1, 5),
  ylim = c(0, 30),
  col = mc_rgb
)

T-tests for Usability and Ordering Food Scores

Two-sample t-tests are conducted to determine if there are statistically significant differences in the mean scores between BK and MC users for:

  • SUS scores
  • Overall UEQ scores
  • UEQ Pragmatic Quality scores
  • UEQ Hedonic Quality scores
  • Each of the six Ordering Food (OF) questions
t.test(data$SUSscore[data$Preference == "BK"], data$SUSscore[data$Preference == "MC"])
## 
##  Welch Two Sample t-test
## 
## data:  data$SUSscore[data$Preference == "BK"] and data$SUSscore[data$Preference == "MC"]
## t = -4.5875, df = 83.168, p-value = 1.57e-05
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -19.346245  -7.644416
## sample estimates:
## mean of x mean of y 
##  63.87755  77.37288
t.test(data$UEQscore[data$Preference == "BK"], data$UEQscore[data$Preference == "MC"])
## 
##  Welch Two Sample t-test
## 
## data:  data$UEQscore[data$Preference == "BK"] and data$UEQscore[data$Preference == "MC"]
## t = -0.94475, df = 105.33, p-value = 0.347
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.5656665  0.2005679
## sample estimates:
## mean of x mean of y 
## 0.5229592 0.7055085
t.test(data$UEQscorePQ[data$Preference == "BK"], data$UEQscorePQ[data$Preference == "MC"])
## 
##  Welch Two Sample t-test
## 
## data:  data$UEQscorePQ[data$Preference == "BK"] and data$UEQscorePQ[data$Preference == "MC"]
## t = -2.6125, df = 105.88, p-value = 0.01029
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -1.0736756 -0.1471823
## sample estimates:
## mean of x mean of y 
## 0.6734694 1.2838983
t.test(data$UEQscoreHQ[data$Preference == "BK"], data$UEQscoreHQ[data$Preference == "MC"])
## 
##  Welch Two Sample t-test
## 
## data:  data$UEQscoreHQ[data$Preference == "BK"] and data$UEQscoreHQ[data$Preference == "MC"]
## t = 1.0809, df = 104.04, p-value = 0.2822
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.2047586  0.6954193
## sample estimates:
## mean of x mean of y 
## 0.3724490 0.1271186
t.test(data$OF1[data$Preference == "BK"], data$OF1[data$Preference == "MC"])
## 
##  Welch Two Sample t-test
## 
## data:  data$OF1[data$Preference == "BK"] and data$OF1[data$Preference == "MC"]
## t = 0.39283, df = 102.65, p-value = 0.6953
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.3543226  0.5293486
## sample estimates:
## mean of x mean of y 
##  3.816327  3.728814
t.test(data$OF2[data$Preference == "BK"], data$OF2[data$Preference == "MC"])
## 
##  Welch Two Sample t-test
## 
## data:  data$OF2[data$Preference == "BK"] and data$OF2[data$Preference == "MC"]
## t = -1.7226, df = 88.063, p-value = 0.08848
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.73154603  0.05219632
## sample estimates:
## mean of x mean of y 
##  3.795918  4.135593
t.test(data$OF3[data$Preference == "BK"], data$OF3[data$Preference == "MC"])
## 
##  Welch Two Sample t-test
## 
## data:  data$OF3[data$Preference == "BK"] and data$OF3[data$Preference == "MC"]
## t = -0.20329, df = 101.86, p-value = 0.8393
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.4316309  0.3513819
## sample estimates:
## mean of x mean of y 
##  4.163265  4.203390
t.test(data$OF4[data$Preference == "BK"], data$OF4[data$Preference == "MC"])
## 
##  Welch Two Sample t-test
## 
## data:  data$OF4[data$Preference == "BK"] and data$OF4[data$Preference == "MC"]
## t = -8.0618, df = 83.183, p-value = 4.837e-12
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -2.149719 -1.298915
## sample estimates:
## mean of x mean of y 
##  2.326531  4.050847
t.test(data$OF5[data$Preference == "BK"], data$OF5[data$Preference == "MC"])
## 
##  Welch Two Sample t-test
## 
## data:  data$OF5[data$Preference == "BK"] and data$OF5[data$Preference == "MC"]
## t = -3.1964, df = 88.476, p-value = 0.00193
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -1.0248414 -0.2390811
## sample estimates:
## mean of x mean of y 
##  3.571429  4.203390
t.test(data$OF6[data$Preference == "BK"], data$OF6[data$Preference == "MC"])
## 
##  Welch Two Sample t-test
## 
## data:  data$OF6[data$Preference == "BK"] and data$OF6[data$Preference == "MC"]
## t = -1.5785, df = 97.346, p-value = 0.1177
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.67461990  0.07690284
## sample estimates:
## mean of x mean of y 
##  3.836735  4.135593
Metric t-value p-value
SUS Score -4.5875 1.57e-05
UEQ Overall Score -0.94475 0.347
UEQ Pragmatic Quality Score -2.6125 0.01029
UEQ Hedonic Quality Score 1.0809 0.2822
OF1 0.39283 0.6953
OF2 -1.7226 0.08848
OF3 -0.20329 0.8393
OF4 -8.0618 4.837e-12
OF5 -3.1964 0.00193
OF6 -1.5785 0.1177

Sum of Ordering Food Scores

A total score for the ordering food process (OFsum) is calculated by summing the scores of the six OF questions. Histograms are then plotted to show the distribution of this sum for BK and MC users. Finally, a t-test is performed to compare the mean OFsum between the two groups.

data$OFsum <- data$OF1 + data$OF2 + data$OF3 + data$OF4 + data$OF5 + data$OF6

layout(matrix(c(1, 2), nrow = 1, byrow = TRUE))

hist(data$OFsum[data$Preference == "BK"],
  main = "Distribution OFsum BK",
  xlab = "Score",
  ylab = "Frequency",
  xlim = c(0, 30),
  ylim = c(0, 20),
  col = bk_rgb
)
hist(data$OFsum[data$Preference == "MC"],
  main = "Distribution OFsum MC",
  xlab = "Score",
  ylab = "Frequency",
  xlim = c(0, 30),
  ylim = c(0, 20),
  col = mc_rgb,
)

t.test(data$OFsum[data$Preference == "BK"], data$OFsum[data$Preference == "MC"])
## 
##  Welch Two Sample t-test
## 
## data:  data$OFsum[data$Preference == "BK"] and data$OFsum[data$Preference == "MC"]
## t = -3.6493, df = 99.975, p-value = 0.0004201
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -4.549813 -1.345033
## sample estimates:
## mean of x mean of y 
##  21.51020  24.45763
Metric t-value p-value
OFsum -3.6493 0.0004201

Linear Regression Analysis

This section explores the relationship between SUS scores, frequency of app use, and user preference (BK or MC).

Data Preparation for Regression

A new column Frequency is created by combining the frequency of use data (BKfreq and MCfreq) based on user preference.

data$Frequency <- ifelse(data$Preference == "BK", data$BKfreq, data$MCfreq)

Linear Model 1 (with Interaction)

A linear regression model (model1) is fitted to predict SUS scores based on Frequency, Preference, and the interaction term between Frequency and Preference. The summary of this model provides coefficients, standard errors, t-values, p-values, R-squared, and F-statistic. The plot for this model is commented out in the original script.

model1 <- lm(data$SUSscore ~ data$Frequency + data$Preference + data$Frequency * data$Preference)
summary(model1)
## 
## Call:
## lm(formula = data$SUSscore ~ data$Frequency + data$Preference + 
##     data$Frequency * data$Preference)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -31.091  -9.672   0.801   8.330  32.904 
## 
## Coefficients:
##                                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                        53.077      8.721   6.086 1.95e-08 ***
## data$Frequency                      3.505      2.749   1.275    0.205    
## data$PreferenceMC                   8.708     11.632   0.749    0.456    
## data$Frequency:data$PreferenceMC    1.467      3.637   0.403    0.688    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 14.46 on 104 degrees of freedom
## Multiple R-squared:  0.2198, Adjusted R-squared:  0.1973 
## F-statistic: 9.765 on 3 and 104 DF,  p-value: 9.864e-06

Linear Model 2 (without Interaction)

A second linear regression model (model2) is fitted to predict SUS scores based on Frequency and Preference, but without the interaction term. The summary of this model is also presented. A scatter plot shows SUS scores versus frequency of use, with different colors for BK and MC users, and separate regression lines for each group.

model2 <- lm(data$SUSscore ~ data$Frequency + data$Preference)
summary(model2)
## 
## Call:
## lm(formula = data$SUSscore ~ data$Frequency + data$Preference)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -31.023 -10.037   0.716   8.873  32.134 
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         50.494      5.894   8.566 9.86e-14 ***
## data$Frequency       4.343      1.792   2.423   0.0171 *  
## data$PreferenceMC   13.261      2.786   4.760 6.22e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 14.4 on 105 degrees of freedom
## Multiple R-squared:  0.2185, Adjusted R-squared:  0.2037 
## F-statistic: 14.68 on 2 and 105 DF,  p-value: 2.384e-06
layout(matrix(c(1), nrow = 1, byrow = TRUE))

plot(data$Frequency[data$Preference == "BK"], data$SUSscore[data$Preference == "BK"],
  pch = 23,
  bg = bk_rgb,
  col = rgb(0, 0, 0),
  cex = 2,
  ylab = "SUS Score",
  xlab = "Frequency",
  main = "SUS Score vs. Frequency of Use",
  xaxt = "n"
)

axis(1, at = c(0, 1, 2, 3, 4, 5))

points(data$Frequency[data$Preference == "MC"], data$SUSscore[data$Preference == "MC"],
  pch = 23,
  bg = mc_rgb,
  col = rgb(0, 0, 0),
  cex = 1
)

abline(lm(data$SUSscore[data$Preference == "BK"] ~ data$Frequency[data$Preference == "BK"]), col = bk_rgb)
abline(lm(data$SUSscore[data$Preference == "MC"] ~ data$Frequency[data$Preference == "MC"]), col = mc_rgb)

legend("bottomright",
  legend = c("Burger King", "McDonald's"),
  fill = c(bk_rgb, mc_rgb),
)

Other Analyses

We also conduct correlation tests between SUS scores, UEQ scores, and age. However none of these correlations are significant.

data$SUSscore <- as.numeric(data$SUSscore)

cor.test(data$SUSscore, data$Age)
## 
##  Pearson's product-moment correlation
## 
## data:  data$SUSscore and data$Age
## t = -0.68562, df = 106, p-value = 0.4944
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.2522528  0.1240857
## sample estimates:
##         cor 
## -0.06644634
cor.test(data$UEQscore, data$Age)
## 
##  Pearson's product-moment correlation
## 
## data:  data$UEQscore and data$Age
## t = -0.04785, df = 106, p-value = 0.9619
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.1934516  0.1844885
## sample estimates:
##          cor 
## -0.004647522
cor.test(data$OFsum, data$Age)
## 
##  Pearson's product-moment correlation
## 
## data:  data$OFsum and data$Age
## t = -0.09446, df = 106, p-value = 0.9249
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.1978054  0.1801118
## sample estimates:
##          cor 
## -0.009174402

Reflection

Based on this user study, the McDonald’s (MC) mobile application demonstrates a statistically significant advantage in user experience compared to the Burger King (BK) application, particularly in overall usability and key aspects of the food ordering process.

Users of the McDonald’s app reported significantly higher System Usability Scale (SUS) scores (mean 77.37 for MC vs. 63.88 for BK, p < .001), with McDonald’s mean score surpassing the conventional 70-point benchmark for acceptable usability, while Burger King’s mean fell below this threshold. This superior usability for McDonald’s was further supported by significantly higher UEQ Pragmatic Quality scores (p = .010). While overall UEQ scores and UEQ Hedonic Quality scores did not show a statistically significant difference between the two apps (p = .347 and p = .282 respectively), the analysis of the food ordering process (OF) revealed critical distinctions. Specifically, McDonald’s users rated their experience significantly higher in tasks such as finding ingredient and nutritional information (OF4, p < .001) and customizing food items (OF5, p = .002). This culminated in a significantly higher sum score for the ordering food tasks (OFsum) for McDonald’s users compared to Burger King users (p < .001).

Linear regression analysis indicated that while increased frequency of app use was a significant positive predictor of SUS scores (p = .017), user preference for McDonald’s remained a strong and significant predictor of higher SUS scores (p < .001), even after accounting for usage frequency. No significant correlations were found between age and the key usability (SUS), user experience (UEQ), or ordering food (OFsum) metrics. The strong positive Pearson correlations observed between SUS scores and overall UEQ scores for both BK (r = .677, p < .001) and MC (r = .644, p < .001) users affirm the convergent validity of these user experience measures.

Artificial Intelligence tools were used to enhance the style this document