library(readxl)
## Warning: package 'readxl' was built under R version 4.4.3
file_path <- "C:/Users/salsa/Downloads/Chocolate Sales.xlsx"
data <- read_excel(file_path)
data
## # A tibble: 1,094 × 6
## `Sales Person` Country Product Date Amount `Boxes Shipped`
## <chr> <chr> <chr> <dttm> <dbl> <dbl>
## 1 Jehu Rudeforth UK Mint C… 2022-01-04 00:00:00 5320 180
## 2 Van Tuxwell India 85% Da… 2022-08-01 00:00:00 7896 94
## 3 Gigi Bohling India Peanut… 2022-07-07 00:00:00 4501 91
## 4 Jan Morforth Australia Peanut… 2022-04-27 00:00:00 12726 342
## 5 Jehu Rudeforth UK Peanut… 2022-02-24 00:00:00 13685 184
## 6 Van Tuxwell India Smooth… 2022-06-06 00:00:00 5376 38
## 7 Oby Sorrel UK 99% Da… 2022-01-25 00:00:00 13685 176
## 8 Gunar Cockshoot Australia After … 2022-03-24 00:00:00 3080 73
## 9 Jehu Rudeforth New Zeala… 50% Da… 2022-04-20 00:00:00 3990 59
## 10 Brien Boise Australia 99% Da… 2022-07-04 00:00:00 2835 102
## # ℹ 1,084 more rows
#Struktur Data
str(data)
## tibble [1,094 × 6] (S3: tbl_df/tbl/data.frame)
## $ Sales Person : chr [1:1094] "Jehu Rudeforth" "Van Tuxwell" "Gigi Bohling" "Jan Morforth" ...
## $ Country : chr [1:1094] "UK" "India" "India" "Australia" ...
## $ Product : chr [1:1094] "Mint Chip Choco" "85% Dark Bars" "Peanut Butter Cubes" "Peanut Butter Cubes" ...
## $ Date : POSIXct[1:1094], format: "2022-01-04" "2022-08-01" ...
## $ Amount : num [1:1094] 5320 7896 4501 12726 13685 ...
## $ Boxes Shipped: num [1:1094] 180 94 91 342 184 38 176 73 59 102 ...
summary(data)
## Sales Person Country Product
## Length:1094 Length:1094 Length:1094
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
## Date Amount Boxes Shipped
## Min. :2022-01-03 00:00:00.00 Min. : 7 Min. : 1.0
## 1st Qu.:2022-03-02 00:00:00.00 1st Qu.: 2390 1st Qu.: 70.0
## Median :2022-05-11 00:00:00.00 Median : 4868 Median :135.0
## Mean :2022-05-03 09:04:56.16 Mean : 5652 Mean :161.8
## 3rd Qu.:2022-07-04 00:00:00.00 3rd Qu.: 8027 3rd Qu.:228.8
## Max. :2022-08-31 00:00:00.00 Max. :22050 Max. :709.0
# Menampilkan jumlah transaksi per negara
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
data %>%
group_by(Country) %>%
summarise(Jumlah_Transaksi = n()) %>%
arrange(desc(Jumlah_Transaksi))
## # A tibble: 6 × 2
## Country Jumlah_Transaksi
## <chr> <int>
## 1 Australia 205
## 2 India 184
## 3 USA 179
## 4 UK 178
## 5 Canada 175
## 6 New Zealand 173
# Pilih subset kolom Country dan Boxes Shipped
data_subset <- data[, c("Country", "Boxes Shipped")]
# Tampilkan beberapa baris pertama
head(data_subset)
## # A tibble: 6 × 2
## Country `Boxes Shipped`
## <chr> <dbl>
## 1 UK 180
## 2 India 94
## 3 India 91
## 4 Australia 342
## 5 UK 184
## 6 India 38
# Histogram untuk kolom "Amount"
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
ggplot(data, aes(x = Amount)) +
geom_histogram(binwidth = 1000, fill = "blue", color = "black", alpha = 0.7) +
labs(title = "Histogram of Amount", x = "Amount", y = "Frequency") +
theme_minimal()
Interpretasi: Histogram menunjukkan Distribusi Positif Skewed dan
memiliki puncak frekuensi sekitar 0-5000. Ada beberapa nilai di atas
15.000-20.000 yang memiliki frekuensi rendah dan berindikasi adanya
outlier.
# Histogram untuk kolom "Boxes Shipped"
ggplot(data, aes(x = `Boxes Shipped`)) +
geom_histogram(binwidth = 5, fill = "purple", color = "black", alpha = 0.7) +
labs(title = "Histogram of Boxes Shipped", x = "Boxes Shipped", y = "Frequency") +
theme_minimal()
Interpretasi: Histogram menunjukkan Distribusi Positif Skewed. Hal ini
menunjukkah bahwa sebagian besar pengiriman terjadi dalam jumlah kecil
hingga menengah, sementara jumlah pengiriman besar lebih jarang
terjadi.Sebagian besar nilai berada di bawah 200 kotak yang dikirim,
setelahnya frekuensi mulai menurun secara bertahap. Beberapa kasus
pengiriman dalam jumlah besar di atas 400-600 kotak dengan frekuensi
yang rendah.
# Bar chart untuk produk terlaris
ggplot(data, aes(x = Product)) +
geom_bar(fill = "red", color = "black", alpha = 0.7) +
labs(title = "Bar Chart of Product Sales", x = "Product", y = "Count") +
theme_minimal() +
coord_flip()
Interpretasi: Produk dengan penjualan tertinggi adalah 50% Dark Bites,
yang memiliki jumlah tertinggi di antara semua produk. Drinking Coco
juga memiliki jumlah penjualan yang tinggi, mendekati produk 50% Dark
Bites. Choco Coated Almonds dan Caramel Stuffed Bars memiliki jumlah
penjualan yang lebih rendah dibandingkan produk lainnya. ##
Scatterplot
# Scatter plot antara "Amount" dan "Boxes Shipped"
ggplot(data, aes(x = `Boxes Shipped`, y = Amount)) +
geom_point(color = "blue", alpha = 0.7) +
labs(title = "Scatter Plot of Amount vs. Boxes Shipped", x = "Boxes Shipped", y = "Amount") +
theme_minimal()
Scatter plot menunjukkan bahwa jumlah penjualan tidak selalu meningkat
seiring dengan jumlah kotak yang dikirim, mengindikasikan variasi harga
atau permintaan produk. Secara keseluruhan, analisis grafik mengungkap
pola penjualan yang kompleks.
# Scatterplot antara jumlah penjualan dan jumlah kotak yang dikirim
ggplot(data, aes(x = `Boxes Shipped`, y = Amount)) +
geom_point(color = "red", alpha = 0.5) +
geom_smooth(method = "lm", color = "blue", se = FALSE) +
labs(title = "Scatter Plot Amount vs. Boxes Shipped dengan Regresi",
x = "Boxes Shipped", y = "Amount") +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'
Interpretasi: Data terlihat cukup tersebar, dengan banyak titik yang
berada di berbagai rentang nilai Amount, tidak menunjukkan pola yang
jelas. Berdasarkan scatter plot ini, hubungan antara jumlah kotak yang
dikirim dan pendapatan terlihat lemah atau tidak signifikan secara
linear. ## Corrplot
# Hitung korelasi
korelasi <- cor(data[, c("Amount", "Boxes Shipped")], use = "complete.obs")
# Tampilkan korelasi Amount dan Boxes Shipped dengan corrplot
library(corrplot)
## Warning: package 'corrplot' was built under R version 4.4.3
## corrplot 0.95 loaded
corrplot(korelasi, method = "number", type = "upper", tl.col = "black", tl.srt = 45)
## Diagram Batang
# Untuk mengetahui TOP 3 Negara Yang
library(ggplot2)
ggplot(data_subset, aes(x = Country)) +
geom_bar(fill = "blue", color = "black", alpha = 0.7) +
labs(title = "Bar Chart of Country", x = "Country", y = "Count") +
theme_minimal()
Diagram batang menunjukkan bahwa Australia memiliki jumlah penjualan
tertinggi dibandingkan negara lain, sementara negara seperti Kanada,
India, New Zealand, UK, dan USA memiliki jumlah penjualan yang relatif
seimbang.
# Penjualan per Produk
library(ggplot2)
ggplot(data, aes(x = Product, y = Amount)) +
geom_bar(stat = "identity", fill = "blue", color = "black", alpha = 0.7) +
labs(title = "Total Sales per Product", x = "Product", y = "Total Sales") +
theme_minimal() +
coord_flip()
# Pengelompokan dengan x = numerik dan y = kategorik
library(ggplot2)
ggplot(data, aes(x = Product, y = Amount)) +
geom_boxplot(fill = "cyan", color = "black", alpha = 0.7) +
labs(title = "Boxplot of Amount by Product", x = "Product", y = "Amount") +
theme_minimal() +
coord_flip()
## Heatmap
# Heatmap korelasi antara jumlah penjualan dan jumlah kotak yang dikirim
library(reshape2)
cor_data <- cor(data[, c("Amount", "Boxes Shipped")], use = "complete.obs")
melted_cor_data <- melt(cor_data)
ggplot(melted_cor_data, aes(x = Var1, y = Var2, fill = value)) +
geom_tile() +
scale_fill_gradient2(low = "red", high = "blue", mid = "white", midpoint = 0) +
labs(title = "Heatmap Korelasi", x = "", y = "") +
theme_minimal()
Interpretasi: Korelasi mendekati 1 berarti kedua variabel memiliki
hubungan linier positif yang kuat. Heatmap ini mengindikasikan bahwa
jumlah kotak yang dikirim (Boxes Shipped) sangat berkorelasi positif
dengan jumlah penjualan (Amount), yang berarti semakin banyak
pengiriman, semakin besar pendapatan yang diperoleh. ## Density Penduga
Kernel
# Plot estimasi densitas kernel dengan berbagai jenis kernel
par(mfrow = c(2, 3)) # Mengatur tampilan menjadi 2 baris x 3 kolom
plot(density(data$Amount, kernel = "gaussian", bw = .2), lwd = 2, type = "l", main = "Gaussian")
plot(density(data$Amount, kernel = "epanechnikov", bw = .2), lwd = 2, type = "l", main = "Epanechnikov")
plot(density(data$Amount, kernel = "triangular", bw = .2), lwd = 2, type = "l", main = "Triangular")
plot(density(data$Amount, kernel = "biweight", bw = .2), lwd = 2, type = "l", main = "Biweight")
plot(density(data$Amount, kernel = "cosine", bw = .2), lwd = 2, type = "l", main = "Cosine")
plot(density(data$Amount, kernel = "optcosine", bw = .2), lwd = 2, type = "l", main = "Optcosine")
Plot kepadatan menunjukkan distribusi data menggunakan berbagai kernel,
yaitu Gaussian, Epanechnikov, Triangular, Biweight, dan Cosine, dengan
bandwidth yang sama sebesar 0.2. Semua metode menunjukkan pola
distribusi yang mirip, dengan puncak pada nilai rendah dan penurunan
kepadatan seiring meningkatnya nilai.