Nama: Geis Nurani Khafiyys NIM: M0725079 Kelas: E (Statistika 2025)

Tugas Coffee Chain Datasets

Import Data

getwd()
## [1] "/Users/moer"
data_coffee_chain <- readxl::read_excel("/Users/moer/1. Tugas SIM 2025B - Coffee Chain Datasets.xlsx")
data_coffee_chain
## # A tibble: 4,248 × 20
##    `Area Code` Date                Market  `Market Size` Product  `Product Line`
##          <dbl> <dttm>              <chr>   <chr>         <chr>    <chr>         
##  1         719 2012-01-01 00:00:00 Central Major Market  Amaretto Beans         
##  2         970 2012-01-01 00:00:00 Central Major Market  Colombi… Beans         
##  3         970 2012-01-01 00:00:00 Central Major Market  Decaf I… Beans         
##  4         303 2012-01-01 00:00:00 Central Major Market  Green T… Leaves        
##  5         303 2012-01-01 00:00:00 Central Major Market  Caffe M… Beans         
##  6         720 2012-01-01 00:00:00 Central Major Market  Decaf E… Beans         
##  7         970 2012-01-01 00:00:00 Central Major Market  Chamomi… Leaves        
##  8         719 2012-01-01 00:00:00 Central Major Market  Lemon    Leaves        
##  9         970 2012-01-01 00:00:00 Central Major Market  Mint     Leaves        
## 10         719 2012-01-01 00:00:00 Central Major Market  Darjeel… Leaves        
## # ℹ 4,238 more rows
## # ℹ 14 more variables: `Product Type` <chr>, State <chr>, Type <chr>,
## #   `Budget COGS` <dbl>, `Budget Margin` <dbl>, `Budget Profit` <dbl>,
## #   `Budget Sales` <dbl>, COGS <dbl>, Inventory <dbl>, Margin <dbl>,
## #   Marketing <dbl>, Profit <dbl>, Sales <dbl>, `Total Expenses` <dbl>
head(data_coffee_chain)
## # A tibble: 6 × 20
##   `Area Code` Date                Market  `Market Size` Product   `Product Line`
##         <dbl> <dttm>              <chr>   <chr>         <chr>     <chr>         
## 1         719 2012-01-01 00:00:00 Central Major Market  Amaretto  Beans         
## 2         970 2012-01-01 00:00:00 Central Major Market  Colombian Beans         
## 3         970 2012-01-01 00:00:00 Central Major Market  Decaf Ir… Beans         
## 4         303 2012-01-01 00:00:00 Central Major Market  Green Tea Leaves        
## 5         303 2012-01-01 00:00:00 Central Major Market  Caffe Mo… Beans         
## 6         720 2012-01-01 00:00:00 Central Major Market  Decaf Es… Beans         
## # ℹ 14 more variables: `Product Type` <chr>, State <chr>, Type <chr>,
## #   `Budget COGS` <dbl>, `Budget Margin` <dbl>, `Budget Profit` <dbl>,
## #   `Budget Sales` <dbl>, COGS <dbl>, Inventory <dbl>, Margin <dbl>,
## #   Marketing <dbl>, Profit <dbl>, Sales <dbl>, `Total Expenses` <dbl>
tail(data_coffee_chain)
## # A tibble: 6 × 20
##   `Area Code` Date                Market `Market Size` Product    `Product Line`
##         <dbl> <dttm>              <chr>  <chr>         <chr>      <chr>         
## 1         425 2013-12-01 00:00:00 West   Small Market  Lemon      Leaves        
## 2         206 2013-12-01 00:00:00 West   Small Market  Caffe Lat… Beans         
## 3         509 2013-12-01 00:00:00 West   Small Market  Caffe Moc… Beans         
## 4         360 2013-12-01 00:00:00 West   Small Market  Decaf Esp… Beans         
## 5         360 2013-12-01 00:00:00 West   Small Market  Colombian  Beans         
## 6         206 2013-12-01 00:00:00 West   Small Market  Decaf Iri… Beans         
## # ℹ 14 more variables: `Product Type` <chr>, State <chr>, Type <chr>,
## #   `Budget COGS` <dbl>, `Budget Margin` <dbl>, `Budget Profit` <dbl>,
## #   `Budget Sales` <dbl>, COGS <dbl>, Inventory <dbl>, Margin <dbl>,
## #   Marketing <dbl>, Profit <dbl>, Sales <dbl>, `Total Expenses` <dbl>
str(data_coffee_chain)
## tibble [4,248 × 20] (S3: tbl_df/tbl/data.frame)
##  $ Area Code     : num [1:4248] 719 970 970 303 303 720 970 719 970 719 ...
##  $ Date          : POSIXct[1:4248], format: "2012-01-01" "2012-01-01" ...
##  $ Market        : chr [1:4248] "Central" "Central" "Central" "Central" ...
##  $ Market Size   : chr [1:4248] "Major Market" "Major Market" "Major Market" "Major Market" ...
##  $ Product       : chr [1:4248] "Amaretto" "Colombian" "Decaf Irish Cream" "Green Tea" ...
##  $ Product Line  : chr [1:4248] "Beans" "Beans" "Beans" "Leaves" ...
##  $ Product Type  : chr [1:4248] "Coffee" "Coffee" "Coffee" "Tea" ...
##  $ State         : chr [1:4248] "Colorado" "Colorado" "Colorado" "Colorado" ...
##  $ Type          : chr [1:4248] "Regular" "Regular" "Decaf" "Regular" ...
##  $ Budget COGS   : num [1:4248] 90 80 100 30 60 80 140 50 50 40 ...
##  $ Budget Margin : num [1:4248] 130 110 140 50 90 130 160 80 70 70 ...
##  $ Budget Profit : num [1:4248] 100 80 110 30 70 80 110 20 40 20 ...
##  $ Budget Sales  : num [1:4248] 220 190 240 80 150 210 300 130 120 110 ...
##  $ COGS          : num [1:4248] 89 83 95 44 54 72 170 63 60 58 ...
##  $ Inventory     : num [1:4248] 777 623 821 623 456 ...
##  $ Margin        : num [1:4248] 130 107 139 56 80 108 171 87 80 72 ...
##  $ Marketing     : num [1:4248] 24 27 26 14 15 23 47 57 19 22 ...
##  $ Profit        : num [1:4248] 94 68 101 30 54 53 99 0 33 17 ...
##  $ Sales         : num [1:4248] 219 190 234 100 134 180 341 150 140 130 ...
##  $ Total Expenses: num [1:4248] 36 39 38 26 26 55 72 87 47 55 ...
dim(data_coffee_chain)
## [1] 4248   20
names(data_coffee_chain)
##  [1] "Area Code"      "Date"           "Market"         "Market Size"   
##  [5] "Product"        "Product Line"   "Product Type"   "State"         
##  [9] "Type"           "Budget COGS"    "Budget Margin"  "Budget Profit" 
## [13] "Budget Sales"   "COGS"           "Inventory"      "Margin"        
## [17] "Marketing"      "Profit"         "Sales"          "Total Expenses"
summary(data_coffee_chain)
##    Area Code          Date                        Market         
##  Min.   :203.0   Min.   :2012-01-01 00:00:00   Length:4248       
##  1st Qu.:417.0   1st Qu.:2012-06-23 12:00:00   Class :character  
##  Median :573.0   Median :2012-12-16 12:00:00   Mode  :character  
##  Mean   :582.3   Mean   :2012-12-15 22:00:00                     
##  3rd Qu.:772.0   3rd Qu.:2013-06-08 12:00:00                     
##  Max.   :985.0   Max.   :2013-12-01 00:00:00                     
##  Market Size          Product          Product Line       Product Type      
##  Length:4248        Length:4248        Length:4248        Length:4248       
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##     State               Type            Budget COGS     Budget Margin   
##  Length:4248        Length:4248        Min.   :  0.00   Min.   :-210.0  
##  Class :character   Class :character   1st Qu.: 30.00   1st Qu.:  50.0  
##  Mode  :character   Mode  :character   Median : 50.00   Median :  70.0  
##                                        Mean   : 74.83   Mean   : 100.8  
##                                        3rd Qu.: 90.00   3rd Qu.: 130.0  
##                                        Max.   :450.00   Max.   : 690.0  
##  Budget Profit      Budget Sales         COGS          Inventory      
##  Min.   :-320.00   Min.   :   0.0   Min.   :  0.00   Min.   :-3534.0  
##  1st Qu.:  20.00   1st Qu.:  80.0   1st Qu.: 43.00   1st Qu.:  432.0  
##  Median :  40.00   Median : 130.0   Median : 60.00   Median :  619.0  
##  Mean   :  60.91   Mean   : 175.6   Mean   : 84.43   Mean   :  749.4  
##  3rd Qu.:  80.00   3rd Qu.: 210.0   3rd Qu.:100.00   3rd Qu.:  910.5  
##  Max.   : 560.00   Max.   :1140.0   Max.   :364.00   Max.   : 8252.0  
##      Margin          Marketing          Profit           Sales    
##  Min.   :-302.00   Min.   :  0.00   Min.   :-638.0   Min.   : 17  
##  1st Qu.:  52.75   1st Qu.: 13.00   1st Qu.:  17.0   1st Qu.:100  
##  Median :  76.00   Median : 22.00   Median :  40.0   Median :138  
##  Mean   : 104.29   Mean   : 31.19   Mean   :  61.1   Mean   :193  
##  3rd Qu.: 132.00   3rd Qu.: 39.00   3rd Qu.:  92.0   3rd Qu.:230  
##  Max.   : 613.00   Max.   :156.00   Max.   : 778.0   Max.   :912  
##  Total Expenses  
##  Min.   : 10.00  
##  1st Qu.: 33.00  
##  Median : 46.00  
##  Mean   : 54.06  
##  3rd Qu.: 65.00  
##  Max.   :190.00

Deskripsi Data yang Diambil

.

Visualisasi Data

Bar Chart Rata-Rata Keuntungan Berdasarkan Tipe Produk

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
df_avg_profit <- data_coffee_chain %>%
  group_by(`Product Type`) %>%
  summarise(Average_Profit = mean(Profit, na.rm = TRUE))
library(ggplot2)
ggplot(df_avg_profit, aes(x = reorder(`Product Type`, -Average_Profit), y = Average_Profit, fill = Average_Profit)) +
  geom_bar(stat = "identity", show.legend = FALSE, color = "black") +
  geom_text(aes(label = round(Average_Profit, 2)), vjust = -0.5, size = 4) +
  labs(title = "Rata-Rata Keuntungan (Profit) Berdasarkan Tipe Produk",
       x = "Tipe Produk",
       y = "Rata-Rata Profit") +
  scale_fill_gradient(low = "lightblue", high = "navy") +
  theme_minimal()

Interpretasi: Berdasarkan grafik tersebut, terlihat bahwa kategori Coffee merupakan kontributor keuntungan tertinggi dengan rata-rata profit mencapai 70.72, jauh mengungguli tipe produk lainnya seperti Herbal Tea (59.9), Espresso (58.35), dan Tea (55.19). Visualisasi yang diurutkan secara menurun serta penggunaan gradasi warna biru tua (navy) memberikan penegasan bahwa Coffee adalah produk “bintang” yang paling efisien dalam menghasilkan margin bagi bisnis. Sebaliknya, kategori Tea memiliki rata-rata profit terendah di angka 55.19, sehingga perusahaan disarankan untuk memprioritaskan alokasi sumber daya dan strategi pemasaran pada produk berbasis Coffee guna memaksimalkan profitabilitas keseluruhan secara lebih efektif.

Clustered Bar Chart Perbandingan Target vs Kinerja per Wilayah

library(tidyr) 

df_wilayah <- data_coffee_chain %>%
  group_by(State) %>%
  summarise(
    Actual = sum(Profit, na.rm = TRUE),
    Budget = sum(`Budget Profit`, na.rm = TRUE) 
  ) %>%
  pivot_longer(
    cols = c(Actual, Budget), 
    names_to = "Kategori",  
    values_to = "Total"
  )
ggplot(df_wilayah, aes(x = State, y = Total, fill = Kategori)) +
  geom_bar(stat = "identity", width = 0.7, position = position_dodge(width = 0.85), color = "black") +
  
  labs(title = "Perbandingan Target vs Kinerja Aktual Berdasarkan Wilayah",
       subtitle = "Berdasarkan Total Profit",
       x = "Negara Bagian (State)",
       y = "Total Keuntungan",
       fill = "Keterangan") +

  scale_fill_manual(values = c("Actual" = "lightblue", "Budget" = "navy"), labels = c("Actual" = "Kinerja Aktual", "Budget" = "Target")) +
  theme_minimal() + theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1))

Interpretasi: Visualisasi ini membandingkan capaian keuntungan riil terhadap target di berbagai negara bagian, di mana California, Illinois, dan New York muncul sebagai wilayah dengan performa tertinggi karena berhasil melampaui target profit yang ditetapkan. Sebaliknya, wilayah seperti Missouri dan New Mexico menunjukkan kinerja yang kurang optimal karena hasil aktualnya berada di bawah target, sementara sebagian besar wilayah lain seperti Texas dan Oregon menunjukkan kinerja yang sangat stabil dan presisi dengan target. Secara keseluruhan, grafik ini mengindikasikan bahwa meskipun sebagian besar wilayah berhasil mencapai atau mendekati target, strategi pertumbuhan profitabilitas dapat difokuskan pada replikasi keberhasilan di California ke wilayah-wilayah yang saat ini masih mengalami defisit pencapaian target.

Scatter Plot Penjualan vs.Keuntungan (Sales vs. Profit).

ggplot(data_coffee_chain, aes(x = Sales, y = Profit)) +
  geom_point(color = "lightblue", alpha = 0.6) +
  theme_minimal() +
  labs(
    title = "Hubungan Sales dan Profit",
    x = "Penjualan (Sales)",
    y = "Keuntungan (Profit)") +
  theme_minimal()

Interpretasi: Scatter plot ini menunjukkan adanya korelasi positif yang sangat kuat dan linier antara Penjualan (Sales) dan Keuntungan (Profit), di mana peningkatan volume penjualan secara konsisten diikuti oleh kenaikan profit. Pola data yang cenderung membentuk garis lurus menanjak mengonfirmasi hasil analisis regresi sebelumnya bahwa Sales adalah penggerak utama keuntungan bisnis Anda. Meskipun terdapat beberapa titik pencilan (outliers) di bagian bawah yang menunjukkan kerugian meskipun ada penjualan, mayoritas data berkumpul pada jalur positif, menandakan bahwa model bisnis operasional saat ini sudah sangat efisien dalam mengubah setiap nilai penjualan menjadi margin keuntungan.

Analisis Data

Analisis Regresi Linear Berganda

model_complex <- lm(Profit ~ Marketing + Sales , data = data_coffee_chain)

summary(model_complex)
## 
## Call:
## lm(formula = Profit ~ Marketing + Sales, data = data_coffee_chain)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -334.62  -13.59   -0.19   15.64  276.60 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -25.172413   0.931639  -27.02   <2e-16 ***
## Marketing    -2.592300   0.029526  -87.80   <2e-16 ***
## Sales         0.865916   0.005279  164.02   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 36.59 on 4245 degrees of freedom
## Multiple R-squared:  0.8706, Adjusted R-squared:  0.8706 
## F-statistic: 1.428e+04 on 2 and 4245 DF,  p-value: < 2.2e-16

Hipotesis

Uji Simultan

H0 : β1 = β2 = 0 (Secara bersama-sama, Marketing dan sales tidak memiliki pengaruh terhadap Profit) H1 : minimal salah satu β ≠ 0 (Secara bersama-sama, Marketing dan Sales memiliki pengaruh terhadap Profit)

Uji Parsial

Variabel Marketing H0 : β1 = 0 (Marketing tidak berpengaruh terhadap Profit) H1 : β1 ≠ 0 (Marketing berpengaruh terhadap Profit)

Variabel Sales H0 : β2 = 0 (Sales tidak berpengaruh terhadap Profit) H1 : β2 ≠ 0 (Sales berpengaruh terhadap Profit)

Interpretasi Hasil Regresi

Berdasarkan hasil analisis regresi linear berganda, diperoleh persamaan:

Profit = -25.172413 - 2.592300(Marketing) + 0.865916(Sales)

Artinya:

Setiap ada kenaikan 1 unit biaya Marketing, maka Profit diprediksi akan TURUN sebesar 2.59 unit (dengan asumsi variabel Sales tetap)

Setiap ada kenaikan 1 unit Sales, maka Profit diprediksi akan NAIK sebesar 0.87 unit (dengan asumsi biaya Marketing tetap)

Hasil: Nilai p-value untuk variabel Sales dan Marketing ditemukan kurang dari 0.05. Kesimpulan: Hal ini menunjukkan bahwa kedua variabel tersebut memiliki pengaruh yang signifikan secara statistik terhadap Profit. Artinya, perubahan yang terjadi pada angka Penjualan dan biaya Pemasaran benar-benar berdampak nyata pada keuntungan perusahaan, bukan karena faktor kebetulan.

Hasil: Nilai R-squared sebesar 0.8706. Kesimpulan: Angka ini menunjukkan bahwa 87.06% variasi (naik-turunnya) nilai Profit dapat dijelaskan secara akurat oleh variabel Sales dan Marketing dalam model ini.

Uji Normalitas Residual

shapiro.test(residuals(model_complex))
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(model_complex)
## W = 0.82338, p-value < 2.2e-16

Interpretasi Uji Normalitas

Hasil uji Shapiro-Wilk menunjukkan nilai p-value sebesar < 2.2e-16, yang berarti residual tidak berdistribusi normal. Namun, mengingat model memiliki nilai R-squared yang tinggi (87.06%) dan jumlah observasi yang besar, model tetap dianggap representatif untuk menjelaskan hubungan antar variabel.

Kesimpulan

Berdasarkan hasil analisis, model regresi ini memiliki tingkat akurasi yang sangat tinggi dengan nilai R-squared sebesar 0.8706, yang berarti 87,06% variasi profit dipengaruhi secara nyata oleh variabel Penjualan dan Marketing.

Secara parsial, kedua variabel tersebut memiliki p-value < 0.05, sehingga terbukti berpengaruh signifikan terhadap keuntungan perusahaan. Namun, terdapat temuan menarik pada arah pengaruhnya: variabel Penjualan berkontribusi positif (0.87), sedangkan biaya Marketing justru memberikan dampak negatif (-2.59), yang mengindikasikan bahwa setiap kenaikan anggaran pemasaran saat ini justru menurunkan profit karena biayanya lebih besar daripada margin yang dihasilkan.

Meskipun model ini sangat kuat dalam menjelaskan data, hasil uji Shapiro-Wilk menunjukkan bahwa residual model tidak berdistribusi normal (p-value < 0.05). Hal ini kemungkinan besar dipengaruhi oleh ukuran sampel yang besar atau adanya beberapa data pencilan (outlier) dalam transaksi. Walaupun asumsi normalitas tidak terpenuhi secara sempurna, model tetap dianggap valid dan dapat diandalkan untuk pengambilan keputusan strategis mengingat nilai R-squared yang tinggi dan signifikansi variabel yang sangat kuat.

Kesimpulannya, perusahaan disarankan untuk memaksimalkan volume penjualan dan segera mengevaluasi efisiensi biaya pemasaran guna memperbaiki performa keuntungan.