Industri kopi merupakan salah satu sektor bisnis yang terus mengalami pertumbuhan signifikan di Amerika Serikat. Persaingan ketat di antara para pengusaha mendorong perlunya pengambilan keputusan berbasis data guna mempertahankan dan meningkatkan kinerja bisnis. Salah satu instrumen utama dalam proses ini adalah analisis statistik yang mendalam.
Laporan ini disusun untuk menggali informasi dalam data penjualan kopi guna memahami pola operasional di berbagai wilayah serta efektivitas variabel keuangan terhadap keuntungan perusahaan. Dengan pendekatan statistik deskriptif dan inferensial, diharapkan pengusaha dapat melakukan evaluasi terhadap performa penjualan dan mengidentifikasi faktor-faktor kunci yang mempengaruhi profitabilitas secara strategis.
Dataset yang digunakan adalah Coffee Chain Datasets yang berisi data transaksi penjualan jaringan kedai kopi di berbagai wilayah Amerika Serikat selama periode Januari 2012 – Desember 2013.
Dataset terdiri dari 4.248 observasi dengan 20 variabel yang mencakup informasi terkait produk, lokasi pasar, serta aspek keuangan. Data ini bersifat kuantitatif dan kategorikal, sehingga memungkinkan dilakukan berbagai analisis statistik seperti ANOVA dan regresi linear.
| Variabel | Deskripsi |
|---|---|
Market |
Wilayah pasar (Central, East, South, West) |
Product Type |
Jenis produk (Coffee, Espresso, Tea, Herbal Tea) |
Sales |
Total penjualan (USD) |
Profit |
Keuntungan bersih (USD) |
COGS |
Cost of Goods Sold — biaya pokok penjualan (USD) |
Marketing |
Biaya pemasaran (USD) |
Margin |
Margin keuntungan (USD) |
Apakah terdapat perbedaan rata-rata Profit yang signifikan antar wilayah pasar (Market)?
Faktor apa saja yang signifikan mempengaruhi besarnya Profit? dianalisis menggunakan Regresi Linear Berganda dengan prediktor Sales, COGS, dan Marketing, disertai pengecekan asumsi lengkap.
library(readxl)
library(dplyr)
library(ggplot2)
library(scales)
library(knitr)
library(kableExtra)
library(car) # untuk uji Levene dan VIF
library(lmtest) # untuk uji Breusch-Pagan
library(rstatix)
library(sandwich)
coffee = read_excel("C:/Users/LENOVO/Downloads/1. Tugas SIM 2025B - Coffee Chain Datasets.xlsx", sheet = "data")
# Konversi tipe data
coffee = coffee %>%
mutate(
Market = as.factor(Market),
`Product Type` = as.factor(`Product Type`)
)
cat("Dimensi data:", nrow(coffee), "baris x", ncol(coffee), "kolom\n")
## Dimensi data: 4248 baris x 20 kolom
cat("Jumlah missing values:", sum(is.na(coffee)), "\n")
## Jumlah missing values: 0
glimpse(coffee)
## Rows: 4,248
## Columns: 20
## $ `Area Code` <dbl> 719, 970, 970, 303, 303, 720, 970, 719, 970, 719, 303…
## $ Date <dttm> 2012-01-01, 2012-01-01, 2012-01-01, 2012-01-01, 2012…
## $ Market <fct> Central, Central, Central, Central, Central, Central,…
## $ `Market Size` <chr> "Major Market", "Major Market", "Major Market", "Majo…
## $ Product <chr> "Amaretto", "Colombian", "Decaf Irish Cream", "Green …
## $ `Product Line` <chr> "Beans", "Beans", "Beans", "Leaves", "Beans", "Beans"…
## $ `Product Type` <fct> Coffee, Coffee, Coffee, Tea, Espresso, Espresso, Herb…
## $ State <chr> "Colorado", "Colorado", "Colorado", "Colorado", "Colo…
## $ Type <chr> "Regular", "Regular", "Decaf", "Regular", "Regular", …
## $ `Budget COGS` <dbl> 90, 80, 100, 30, 60, 80, 140, 50, 50, 40, 50, 150, 10…
## $ `Budget Margin` <dbl> 130, 110, 140, 50, 90, 130, 160, 80, 70, 70, 70, 210,…
## $ `Budget Profit` <dbl> 100, 80, 110, 30, 70, 80, 110, 20, 40, 20, 40, 130, 1…
## $ `Budget Sales` <dbl> 220, 190, 240, 80, 150, 210, 300, 130, 120, 110, 120,…
## $ COGS <dbl> 89, 83, 95, 44, 54, 72, 170, 63, 60, 58, 64, 144, 95,…
## $ Inventory <dbl> 777, 623, 821, 623, 456, 558, 1091, 435, 336, 338, 96…
## $ Margin <dbl> 130, 107, 139, 56, 80, 108, 171, 87, 80, 72, 76, 201,…
## $ Marketing <dbl> 24, 27, 26, 14, 15, 23, 47, 57, 19, 22, 19, 47, 30, 7…
## $ Profit <dbl> 94, 68, 101, 30, 54, 53, 99, 0, 33, 17, 36, 111, 87, …
## $ Sales <dbl> 219, 190, 234, 100, 134, 180, 341, 150, 140, 130, 140…
## $ `Total Expenses` <dbl> 36, 39, 38, 26, 26, 55, 72, 87, 47, 55, 40, 90, 52, 1…
desc = coffee %>%
group_by(Market) %>%
summarise(
N = n(),
Rata2_Profit = round(mean(Profit), 2),
SD_Profit = round(sd(Profit), 2),
Min_Profit = min(Profit),
Max_Profit = max(Profit),
.groups = "drop"
)
kable(desc,
col.names = c("Wilayah", "N", "Rata-rata Profit",
"Std. Deviasi", "Min", "Maks"),
format.args = list(big.mark = ",")) %>%
kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE)
| Wilayah | N | Rata-rata Profit | Std. Deviasi | Min | Maks |
|---|---|---|---|---|---|
| Central | 1,344 | 69.83 | 73.74 | -65 | 362 |
| East | 888 | 66.69 | 138.22 | -420 | 778 |
| South | 672 | 48.33 | 54.30 | -65 | 345 |
| West | 1,344 | 55.06 | 113.88 | -638 | 511 |
Analisis ini menguji apakah rata-rata Profit berbeda secara signifikan antar wilayah pasar (Market).
Hipotesis:
ANOVA memiliki dua asumsi utama yang harus dipenuhi: normalitas dan homogenitas varians.
# Uji Shapiro-Wilk per wilayah
shapiro_hasil <- coffee %>%
group_by(Market) %>%
summarise(
Statistik_W = round(shapiro.test(Profit)$statistic, 4),
p_value = round(shapiro.test(Profit)$p.value, 4),
Kesimpulan = ifelse(shapiro.test(Profit)$p.value > 0.05,
"Normal", "Tidak Normal"),
.groups = "drop"
)
kable(shapiro_hasil,
col.names = c("Wilayah", "Statistik W", "p-value", "Kesimpulan")) %>%
kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE) %>%
column_spec(4, bold = TRUE,
color = ifelse(shapiro_hasil$Kesimpulan == "Normal", "#F4A7B9", "black"))
| Wilayah | Statistik W | p-value | Kesimpulan |
|---|---|---|---|
| Central | 0.8745 | 0 | Tidak Normal |
| East | 0.7932 | 0 | Tidak Normal |
| South | 0.8577 | 0 | Tidak Normal |
| West | 0.8057 | 0 | Tidak Normal |
Catatan: Pada sampel besar (n > 30), uji Shapiro-Wilk sangat sensitif sehingga hampir selalu menolak H₀ meskipun distribusi sudah mendekati normal. Berdasarkan Central Limit Theorem, dengan n = 4.248, distribusi sampling rata-rata dapat dianggap normal sehingga ANOVA masih valid untuk digunakan.
# Q-Q Plot per wilayah
ggplot(coffee, aes(sample = Profit)) +
stat_qq(color = "#7A9E4D", alpha = 0.5) +
stat_qq_line(color = "#E89CA9", linewidth = 1) +
facet_wrap(~ Market) +
labs(
title = "Q-Q Plot Profit per Wilayah Pasar",
subtitle = "Jika titik mengikuti garis merah → distribusi mendekati normal",
x = "Theoretical Quantiles",
y = "Sample Quantiles"
) +
theme_minimal() +
theme(plot.title = element_text(face = "bold"))
Catatan: Berdasarkan Q-Q plot, terlihat bahwa titik-titik data pada masing-masing wilayah tidak sepenuhnya mengikuti garis diagonal, terutama pada bagian ekor distribusi. Hal ini menunjukkan adanya penyimpangan dari distribusi normal.Namun, mengingat ukuran sampel yang besar, penyimpangan tersebut masih dapat ditoleransi. Berdasarkan Central Limit Theorem, distribusi rata-rata sampel cenderung mendekati normal sehingga analisis ANOVA tetap dapat digunakan.
levene_hasil = leveneTest(Profit ~ Market, data = coffee)
print(levene_hasil)
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 3 38.082 < 2.2e-16 ***
## 4244
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
ggplot(coffee, aes(x = reorder(Market, Profit, FUN = median),
y = Profit, fill = Market)) +
geom_boxplot(outlier.alpha = 0.3, show.legend = FALSE) +
stat_summary(fun = mean, geom = "point", shape = 18,
size = 4, color = "white") +
scale_fill_brewer(palette = "Set2") +
scale_y_continuous(labels = dollar_format(prefix = "$")) +
labs(
title = "Distribusi Profit per Wilayah Pasar",
subtitle = "Titik putih = rata-rata; garis tengah kotak = median",
x = "Wilayah Pasar",
y = "Profit (USD)"
) +
theme_minimal() +
theme(plot.title = element_text(face = "bold"))
Berdasarkan uji Levene, diperoleh p-value < 0,05 sehingga asumsi
homogenitas varians tidak terpenuhi. Hal ini menunjukkan bahwa varians
antar kelompok berbeda secara signifikan.
model_anova = aov(Profit ~ Market, data = coffee)
summary(model_anova)
## Df Sum Sq Mean Sq F value Pr(>F)
## Market 3 288811 96270 9.361 3.64e-06 ***
## Residuals 4244 43644825 10284
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Hasil ANOVA menunjukkan adanya perbedaan rata-rata profit yang signifikan antar wilayah (p-value < 0,05). Namun, berdasarkan uji Levene, asumsi homogenitas varians tidak terpenuhi.
Oleh karena itu, analisis dikonfirmasi menggunakan Welch ANOVA yang lebih robust terhadap perbedaan varians. Hasil Welch ANOVA juga menunjukkan bahwa terdapat perbedaan yang signifikan antar kelompok.
welch = oneway.test(Profit ~ Market, data = coffee)
welch
##
## One-way analysis of means (not assuming equal variances)
##
## data: Profit and Market
## F = 19.734, num df = 3.0, denom df = 2120.2, p-value = 1.288e-12
p_welch = welch$p.value
if(p_welch < 0.05){
cat("Keputusan: Tolak H0\n")
cat("Kesimpulan: Terdapat perbedaan rata-rata profit antar wilayah\n")
} else {
cat("Keputusan: Gagal Tolak H0\n")
cat("Kesimpulan: Tidak terdapat perbedaan rata-rata profit\n")
}
## Keputusan: Tolak H0
## Kesimpulan: Terdapat perbedaan rata-rata profit antar wilayah
Uji lanjutan dilakukan menggunakan metode Games-Howell karena asumsi homogenitas varians tidak terpenuhi.
games <- coffee %>%
games_howell_test(Profit ~ Market)
games
## # A tibble: 6 × 8
## .y. group1 group2 estimate conf.low conf.high p.adj p.adj.signif
## * <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <chr>
## 1 Profit Central East -3.14 -16.2 9.86 9.25e- 1 ns
## 2 Profit Central South -21.5 -29.0 -14.0 6.91e-12 ****
## 3 Profit Central West -14.8 -24.3 -5.26 3.93e- 4 ***
## 4 Profit East South -18.4 -31.4 -5.26 2 e- 3 **
## 5 Profit East West -11.6 -26.0 2.73 1.59e- 1 ns
## 6 Profit South West 6.73 -2.91 16.4 2.76e- 1 ns
ggplot(coffee, aes(x=Market, y=Profit, fill=Market)) +
geom_boxplot(alpha=0.7, outlier.alpha=0.2) +
stat_summary(fun=mean, geom="point", shape=18, size=3, color="black") +
scale_fill_manual(values = c("#A8C686", "#F4A7B9", "#CDE7B0", "#FFB7C5")) +
labs(title="Perbandingan Profit antar Wilayah",
subtitle="South signifikan lebih rendah dibanding Central dan East",
x="Wilayah", y="Profit") +
theme_minimal()
Berdasarkan uji Games-Howell, terdapat beberapa pasangan wilayah yang
menunjukkan perbedaan rata-rata profit yang signifikan.
Wilayah South memiliki profit paling rendah dan berbeda signifikan dibandingkan Central dan East.Sementara itu, Central, East, dan West tidak berbeda signifikan satu sama lain, sehingga ketiganya memiliki tingkat profit yang relatif mirip.
Terdapat perbedaan rata-rata profit antar wilayah (p < 0,05). Hasil Games-Howell menunjukkan bahwa wilayah South memiliki profit yang lebih rendah secara signifikan dibandingkan Central dan East, sedangkan wilayah lainnya relatif tidak berbeda signifikan. Wilayah dengan profit lebih tinggi dapat dijadikan acuan dalam strategi bisnis.
Analisis ini memodelkan pengaruh Sales, COGS, dan Marketing terhadap Profit.
Model: \[\text{Profit} = \beta_0 + \beta_1 \cdot \text{Sales} + \beta_2 \cdot \text{COGS} + \beta_3 \cdot \text{Marketing} + \varepsilon\] Hipotesis (uji serentak / Uji F):
Hipotesis (uji parsial / Uji T per prediktor):
# Scatter plot prediktor vs Profit
pairs_data <- coffee %>% select(Profit, Sales, COGS, Marketing)
# Manual scatter plots
p1 <- ggplot(coffee, aes(x = Sales, y = Profit)) +
geom_point(alpha = 0.3, color = "#2C7BB6") +
geom_smooth(method = "lm", color = "#D7191C", se = TRUE) +
scale_x_continuous(labels = dollar_format(prefix="$")) +
scale_y_continuous(labels = dollar_format(prefix="$")) +
labs(title = "Sales vs Profit") +
theme_minimal() + theme(plot.title = element_text(face="bold", size=11))
p2 <- ggplot(coffee, aes(x = COGS, y = Profit)) +
geom_point(alpha = 0.3, color = "#1A9641") +
geom_smooth(method = "lm", color = "#D7191C", se = TRUE) +
scale_x_continuous(labels = dollar_format(prefix="$")) +
scale_y_continuous(labels = dollar_format(prefix="$")) +
labs(title = "COGS vs Profit") +
theme_minimal() + theme(plot.title = element_text(face="bold", size=11))
p3 <- ggplot(coffee, aes(x = Marketing, y = Profit)) +
geom_point(alpha = 0.3, color = "#FF7F00") +
geom_smooth(method = "lm", color = "#D7191C", se = TRUE) +
scale_x_continuous(labels = dollar_format(prefix="$")) +
scale_y_continuous(labels = dollar_format(prefix="$")) +
labs(title = "Marketing vs Profit") +
theme_minimal() + theme(plot.title = element_text(face="bold", size=11))
library(gridExtra)
grid.arrange(p1, p2, p3, ncol = 3)
Berdasarkan scatter plot, variabel Sales menunjukkan hubungan linear
positif yang kuat dengan Profit, sehingga diduga menjadi prediktor utama
dalam model regresi. Variabel COGS juga menunjukkan hubungan positif,
namun dengan penyebaran data yang lebih besar.
Sementara itu, variabel Marketing menunjukkan hubungan yang lebih lemah dan tidak konsisten terhadap Profit, yang mengindikasikan bahwa peningkatan biaya pemasaran tidak selalu diikuti dengan peningkatan profit.
model_reg = lm(Profit ~ Sales + COGS + Marketing, data = coffee)
summary(model_reg)
##
## Call:
## lm(formula = Profit ~ Sales + COGS + Marketing, data = coffee)
##
## Residuals:
## Min 1Q Median 3Q Max
## -123.137 -11.828 -0.518 9.241 101.270
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -22.801081 0.521941 -43.69 <2e-16 ***
## Sales 1.193813 0.004503 265.12 <2e-16 ***
## COGS -1.195341 0.012388 -96.49 <2e-16 ***
## Marketing -1.461141 0.020260 -72.12 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 20.48 on 4244 degrees of freedom
## Multiple R-squared: 0.9595, Adjusted R-squared: 0.9595
## F-statistic: 3.351e+04 on 3 and 4244 DF, p-value: < 2.2e-16
Asumsi linearitas dicek melalui scatter plot antara nilai fitted dan residual. Jika tidak ada pola sistematis, asumsi linearitas terpenuhi.
plot_data <- data.frame(
Fitted = fitted(model_reg),
Residual = residuals(model_reg)
)
ggplot(plot_data, aes(x = Fitted, y = Residual)) +
geom_point(alpha = 0.3, color = "#2C7BB6") +
geom_hline(yintercept = 0, color = "#D7191C", linetype = "dashed", linewidth = 1) +
geom_smooth(method = "loess", color = "#FF7F00", se = FALSE) +
scale_x_continuous(labels = dollar_format(prefix="$")) +
labs(
title = "Plot Residual vs Fitted (Cek Linearitas)",
subtitle = "Garis oranye idealnya mendekati garis merah (y = 0)",
x = "Nilai Fitted",
y = "Residual"
) +
theme_minimal() +
theme(plot.title = element_text(face = "bold"))
Berdasarkan plot residual terhadap nilai fitted, terlihat adanya sedikit pola lengkungan yang menunjukkan bahwa asumsi linearitas tidak sepenuhnya terpenuhi. Namun, pola tersebut tidak terlalu kuat sehingga model regresi masih dapat digunakan untuk analisis lebih lanjut.
set.seed(123)
resid_sampel <- sample(
residuals(model_reg),
size = min(5000, length(residuals(model_reg)))
)
shapiro_reg <- shapiro.test(resid_sampel)
cat("Uji Shapiro-Wilk Residual:\n")
## Uji Shapiro-Wilk Residual:
print(shapiro_reg)
##
## Shapiro-Wilk normality test
##
## data: resid_sampel
## W = 0.92661, p-value < 2.2e-16
ggplot(plot_data, aes(sample=Residual)) +
stat_qq(color="#2C7BB6", alpha=0.4) + stat_qq_line(color="#D7191C", linewidth=1) +
labs(title="Q-Q Plot Residual",
subtitle="Titik mengikuti garis → residual berdistribusi normal",
x="Theoretical Quantiles", y="Sample Quantiles") +
theme_minimal() + theme(plot.title=element_text(face="bold"))
Berdasarkan uji Shapiro-Wilk, diperoleh p-value < 0,05 sehingga residual tidak berdistribusi normal. Namun, dengan ukuran sampel yang besar, uji ini menjadi sangat sensitif terhadap penyimpangan kecil dari normalitas.
Berdasarkan Q-Q plot, residual masih mengikuti pola garis diagonal sehingga dapat disimpulkan bahwa asumsi normalitas secara praktis masih dapat diterima. Oleh karena itu, model regresi tetap dapat digunakan untuk inferensi.
bp_test = bptest(model_reg)
cat("Uji Breusch-Pagan:\n")
## Uji Breusch-Pagan:
print(bp_test)
##
## studentized Breusch-Pagan test
##
## data: model_reg
## BP = 947.05, df = 3, p-value < 2.2e-16
plot_data$Sqrt_Abs_Resid <- sqrt(abs(residuals(model_reg)))
ggplot(plot_data, aes(x = Fitted, y = Sqrt_Abs_Resid)) +
geom_point(alpha = 0.3, color = "#2C7BB6") +
geom_smooth(method = "loess", color = "#D7191C", se = FALSE) +
scale_x_continuous(labels = dollar_format(prefix="$")) +
labs(
title = "Scale-Location Plot (Cek Homoskedastisitas)",
subtitle = "Garis merah idealnya mendatar → varians residual konstan",
x = "Nilai Fitted",
y = "√|Residual|"
) +
theme_minimal() +
theme(plot.title = element_text(face = "bold"))
Berdasarkan uji Breusch-Pagan,tidak terpenuhi — varians residual tidak konstan (heteroskedastis). Hal ini dikonfirmasi oleh Scale-Location Plot yang menunjukkan pola berbentuk U, di mana residual membesar pada nilai fitted yang sangat negatif maupun sangat positif.
Untuk mengatasi hal ini, digunakan Heteroscedasticity-Consistent (HC3) standard errors agar inferensi tetap valid.
robust_hasil = coeftest(model_reg, vcov = vcovHC(model_reg, type = "HC3"))
print(robust_hasil)
##
## t test of coefficients:
##
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -22.801081 0.611981 -37.258 < 2.2e-16 ***
## Sales 1.193813 0.015680 76.138 < 2.2e-16 ***
## COGS -1.195341 0.034940 -34.211 < 2.2e-16 ***
## Marketing -1.461141 0.023366 -62.534 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
vif_hasil <- vif(model_reg)
vif_df <- data.frame(
Prediktor = names(vif_hasil),
VIF = round(vif_hasil, 3),
Kesimpulan = ifelse(vif_hasil < 10, "Tidak ada multikolinearitas", "Multikolinearitas!")
)
kable(vif_df, row.names = FALSE) %>%
kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE) %>%
column_spec(3, bold = TRUE,
color = ifelse(vif_df$Kesimpulan == "Tidak ada multikolinearitas",
"green", "red"))
| Prediktor | VIF | Kesimpulan |
|---|---|---|
| Sales | 4.691 | Tidak ada multikolinearitas |
| COGS | 7.030 | Tidak ada multikolinearitas |
| Marketing | 3.036 | Tidak ada multikolinearitas |
koef <- as.data.frame(robust_hasil[, ])
koef$Variabel <- rownames(koef)
rownames(koef) <- NULL
koef <- koef %>%
select(Variabel, Estimate, `Std. Error`, `t value`, `Pr(>|t|)`) %>%
mutate(
Estimate = round(Estimate, 4),
`Std. Error` = round(`Std. Error`, 4),
`t value` = round(`t value`, 4),
`Pr(>|t|)` = round(`Pr(>|t|)`, 4),
Signifikan = ifelse(`Pr(>|t|)` < 0.05, "Ya ✓", "Tidak ✗")
)
kable(koef, row.names = FALSE) %>%
kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE) %>%
column_spec(6, bold = TRUE,
color = ifelse(koef$Signifikan == "Ya ✓", "darkgreen", "red"))
| Variabel | Estimate | Std. Error | t value | Pr(>|t|) | Signifikan |
|---|---|---|---|---|---|
| (Intercept) | -22.8011 | 0.6120 | -37.2578 | 0 | Ya ✓ |
| Sales | 1.1938 | 0.0157 | 76.1379 | 0 | Ya ✓ |
| COGS | -1.1953 | 0.0349 | -34.2113 | 0 | Ya ✓ |
| Marketing | -1.4611 | 0.0234 | -62.5341 | 0 | Ya ✓ |
rsq <- round(summary(model_reg)$r.squared, 4)
adj_rsq <- round(summary(model_reg)$adj.r.squared, 4)
fstat <- round(summary(model_reg)$fstatistic[1], 2)
fp <- pf(summary(model_reg)$fstatistic[1],
summary(model_reg)$fstatistic[2],
summary(model_reg)$fstatistic[3],
lower.tail = FALSE)
cat("R-squared :", rsq, "\n")
## R-squared : 0.9595
cat("Adj. R-squared :", adj_rsq, "\n")
## Adj. R-squared : 0.9595
cat("F-statistic :", fstat, "| p-value:", format.pval(fp, digits = 4), "\n")
## F-statistic : 33512.48 | p-value: < 2.2e-16
Interpretasi:
Uji F (Serentak): Nilai F-statistic yang besar dengan p-value < 0,001 menunjukkan bahwa model secara keseluruhan signifikan — \(H_0\) ditolak, artinya minimal satu prediktor berpengaruh nyata terhadap Profit. Model mampu menjelaskan 95.95% variasi Profit (R² = 0.9595).
Sales (β = +1.1938, p < 0,001): Setiap kenaikan $1 pada penjualan, Profit meningkat sebesar $1.19, dengan asumsi COGS dan Marketing konstan. Sales merupakan prediktor dengan pengaruh positif terkuat terhadap profitabilitas.
COGS (β = −1.1953, p < 0,001): Setiap kenaikan $1 pada biaya pokok penjualan, Profit turun sebesar $1.20. Hal ini sesuai ekspektasi — semakin tinggi biaya produksi, semakin tergerus margin keuntungan.
Marketing (β = −1.4611, p < 0,001): Setiap kenaikan $1 pada biaya pemasaran, Profit justru turun sebesar $1.46. Meskipun secara statistik signifikan, arah negatif ini mengindikasikan bahwa pengeluaran pemasaran dalam periode ini belum menghasilkan return yang sebanding. Kemungkinan disebabkan oleh lag effect (dampak pemasaran baru dirasakan di periode berikutnya) atau alokasi anggaran pemasaran yang lebih besar justru diberikan pada produk/wilayah yang kurang menguntungkan.
Intercept (β₀ = −22.80, p < 0,001): Ketika Sales, COGS, dan Marketing bernilai 0, estimasi Profit adalah −$22.80. Nilai ini tidak memiliki makna praktis dalam konteks bisnis nyata.
Catatan: Interpretasi menggunakan HC3 Robust Standard Error karena asumsi homoskedastisitas tidak terpenuhi (Uji Breusch-Pagan, p < 0,05). Koefisien β tetap tidak bias, namun standard error tidak dapat dipercaya sehingga robust SE digunakan untuk validitas inferensi.
Berdasarkan Welch ANOVA (digunakan karena asumsi homogenitas varians tidak terpenuhi berdasarkan Uji Levene, p < 0,05), terdapat perbedaan rata-rata Profit yang signifikan antar wilayah pasar (p < 0,05), sehingga \(H_0\) ditolak.
Uji lanjutan Games-Howell mengidentifikasi bahwa:
Implikasi manajerial: Wilayah South perlu mendapat perhatian khusus dari manajemen, baik dari sisi evaluasi strategi harga, efisiensi operasional, maupun komposisi produk yang dijual, agar profitabilitasnya dapat ditingkatkan mendekati wilayah lain.
Model Profit ~ Sales + COGS + Marketing terbukti
signifikan secara keseluruhan (Uji F, p < 0,001)
dengan R² = 0.9595, artinya ketiga prediktor mampu menjelaskan sekitar
95.95% variasi Profit dalam data.
Secara parsial (Uji T dengan robust SE), seluruh prediktor berpengaruh signifikan (p < 0,001) dengan temuan utama:
| Prediktor | Arah | Besar Pengaruh | Signifikan |
|---|---|---|---|
| Sales | ➕ Positif | $1.19 per $1 kenaikan | ✓ |
| COGS | ➖ Negatif | $1.20 per $1 kenaikan | ✓ |
| Marketing | ➖ Negatif | $1.46 per $1 kenaikan | ✓ |
Implikasi manajerial: Strategi peningkatan profit paling efektif adalah mendorong pertumbuhan Sales sekaligus menekan COGS melalui efisiensi rantai pasok. Efektivitas pengeluaran Marketing perlu dievaluasi ulang karena belum terbukti berdampak positif langsung terhadap profit dalam periode data ini.
Beberapa asumsi statistik tidak sepenuhnya terpenuhi (heteroskedastisitas pada regresi, non-normalitas pada ANOVA), namun telah diatasi melalui penggunaan robust standard error dan Welch ANOVA. Dengan ukuran sampel n = 4.248, Central Limit Theorem menjamin validitas inferensi secara umum.