Install dan load library

library(ggplot2)
library(readxl)
library(ggthemes)
library(gridExtra)

Import Data

setwd("C:/Users/ameli/OneDrive/Documents")
data <- read_excel("data_selectedLargeStateConstituenciesInMixed-ethnicStateDominatedBy_malaysia.xlsx")

head(data)
## # A tibble: 6 × 6
##   State `Large Ranking` Constituency   Electorate `Exceed State Average(%)`
##   <chr>           <dbl> <chr>               <dbl>                     <dbl>
## 1 Kedah               1 Lunas               50336                     0.581
## 2 Kedah               2 Bukit Selambau      48367                     0.519
## 3 Kedah               3 Jitra               41267                     0.296
## 4 Kedah               4 Tanjung Dawai       39415                     0.238
## 5 Perak               1 Manjoi              57817                     1.26 
## 6 Perak               2 Hulu Kinta          49946                     0.95 
## # ℹ 1 more variable: `Malay Percentage` <dbl>

1. Pie Chart

Grafik pie menunjukkan proporsi pemilih di setiap negara bagian terhadap total pemilih dalam dataset. Setiap slice mewakili satu negara bagian, dan ukurannya mencerminkan persentase pemilih di negara bagian tersebut.

Secara visual, kita dapat dengan cepat melihat negara bagian mana yang memiliki proporsi pemilih terbesar dan terkecil dalam sampel data ini.

data$percentage <- (data$Electorate / sum(data$Electorate)) * 100

pie_chart <- ggplot(data, aes(x = "", y = Electorate, fill = State)) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y", start = 0) +
theme_void() +
labs(title = "Proportion of electorate in each state", fill = "State") +
geom_text(aes(label = paste0(round(percentage, 1), "%")),
position = position_stack(vjust = 0.5), size = 4, color = "white")

pie_chart

Jika data ini dianggap sebagai sampel representatif dari seluruh negara bagian di Malaysia, kita dapat menggunakannya untuk memperkirakan proporsi pemilih di setiap negara bagian pada populasi yang lebih besar. Interval kepercayaan (walaupun tidak dihitung di sini) dapat digunakan untuk memberikan rentang nilai yang mungkin untuk proporsi populasi yang sebenarnya.

2. Bar Chart

Grafik batang ini menampilkan jumlah pemilih di setiap daerah pemilihan.

Sumbu x menunjukkan nama daerah pemilihan, yang diurutkan berdasarkan jumlah pemilih. Sumbu y menunjukkan jumlah pemilih.

Warna batang menunjukkan negara bagian tempat daerah pemilihan tersebut berada.

bar_chart <- ggplot(data, aes(x = reorder(Constituency, Electorate), y = Electorate, fill = as.factor (`Large Ranking`))) +
  geom_bar(stat = "identity") +
  theme_minimal() +
  labs(title = "Number of Electors per Electoral District", 
       x = "Constituency", 
       y = "Electorate", 
       fill = "Large Ranking") +
  theme(axis.text.x = element_text(angle = 90, hjust = 1))

bar_chart

Kita dapat membandingkan rata-rata jumlah pemilih antar daerah pemilihan atau antar negara bagian. Uji hipotesis (misalnya, uji t atau ANOVA) dapat digunakan untuk menentukan apakah perbedaan yang terlihat signifikan secara statistik, yang memungkinkan kita untuk membuat kesimpulan tentang perbedaan populasi.

3. Dot Plot

Dot plot ini menunjukkan distribusi jumlah pemilih di setiap negara bagian.

Setiap titik mewakili satu daerah pemilihan, dengan posisi horizontalnya menunjukkan jumlah pemilih dan posisi vertikalnya menunjukkan negara bagian.

Grafik ini membantu melihat bagaimana jumlah pemilih tersebar di berbagai negara bagian dalam sampel ini.

dot_plot <- ggplot(data, aes(x = `Electorate`, y = `State`)) +
  geom_point(color = "red", size = 2) +
  theme_minimal() +
  labs(title = "Dot Plot: Electorate Distribution", x = "Number of Voters", y = "State")

dot_plot

Dot plot memberikan gambaran visual tentang distribusi pemilih di setiap negara bagian. Dengan teknik statistik yang lebih lanjut, kita bisa menguji apakah distribusi ini berbeda secara signifikan antar negara bagian pada populasi yang lebih besar.

4. Stem and Leaf Plot

Stem and leaf plot menampilkan distribusi data secara ringkas, menunjukkan nilai-nilai individual dan frekuensinya. Bagian “stem” mewakili digit paling signifikan, dan “leaf” mewakili digit berikutnya.

stem(data$Electorate)
## 
##   The decimal point is 4 digit(s) to the right of the |
## 
##   2 | 22
##   3 | 26899
##   4 | 128
##   5 | 008
##   6 | 37

Stem and leaf plot memberikan visualisasi sederhana dari distribusi data. Tidak secara langsung digunakan untuk inferensi, tetapi dapat membantu mengidentifikasi potensi outlier atau skewness yang dapat mempengaruhi pilihan uji statistik

5. Histogram

Histogram ini menampilkan distribusi frekuensi jumlah pemilih.

Sumbu x menunjukkan jumlah pemilih, dan sumbu y menunjukkan frekuensi (jumlah daerah pemilihan) yang memiliki jumlah pemilih dalam rentang tersebut.

histogram <- ggplot(data, aes(x = Electorate)) +
  geom_histogram(bins = 30, fill = "pink", color = "black", alpha = 0.7) +
  theme_minimal() +
  labs(title = "Distribution of Electorate", x = "Electorate", y = "Frequency")

histogram

Histogram membantu menilai apakah data terdistribusi normal. Jika data mendekati normal, kita dapat menggunakan uji statistik parametrik seperti uji t. Jika tidak, kita mungkin perlu menggunakan uji non-parametrik. Ini penting untuk memilih uji statistik yang tepat untuk inferensi.

6. Boxplot

Boxplot ini membandingkan distribusi jumlah pemilih di setiap negara bagian.

Setiap boxplot menunjukkan median (garis tengah kotak), kuartil pertama (Q1, batas bawah kotak), kuartil ketiga (Q3, batas atas kotak), dan outlier (titik-titik di luar “whisker”).

boxplot_data <- ggplot(data, aes(x = `State`, y = `Electorate`, fill = `State`)) +
  geom_boxplot(alpha = 0.6) +
  theme_minimal() +
  labs(title = "Boxplot: Number of Voters by State", x = "State", y = "Electorate")

boxplot_data

Boxplot memungkinkan kita membandingkan distribusi jumlah pemilih antar negara bagian. Uji ANOVA dapat digunakan untuk menentukan apakah terdapat perbedaan signifikan dalam rata-rata jumlah pemilih antar negara bagian. Atau, kita bisa melakukan uji non-parametrik seperti Kruskal-Wallis jika asumsi normalitas tidak terpenuhi.

7. Density Plot

Density plot ini menunjukkan distribusi persentase pemilih Melayu di berbagai daerah pemilihan. * Grafik ini memberikan gambaran tentang bagaimana persentase pemilih Melayu tersebar, apakah terkonsentrasi di sekitar nilai tertentu atau lebih merata.

density_plot <- ggplot(data, aes (x = `Malay Percentage`)) +
  geom_density(fill = "blue", alpha = 0.5) +
  theme_minimal() +
  labs(title = "Density Plot: Percentage of Malaysian Voters", x = "Malay Percentage", y = "Density")

density_plot

Kita dapat menggunakan density plot untuk memvisualisasikan distribusi persentase pemilih Melayu. Uji Kolmogorov-Smirnov dapat digunakan untuk membandingkan distribusi ini dengan distribusi teoritis atau dengan distribusi di daerah pemilihan lain, untuk melihat apakah ada perbedaan signifikan dalam pola distribusi.

Menampilkan semua plot

grid.arrange(pie_chart, bar_chart, dot_plot, histogram, boxplot_data, density_plot, ncol = 2)

Mean

Mean menunjukkan nilai rata-rata dari setiap variabel. Rata-rata jumlah pemilih per daerah pemilihan menunjukkan gambaran umum tingkat kepadatan pemilih di berbagai daerah.

mean(data$`Large Ranking`)
## [1] 2.466667
mean(data$Electorate)
## [1] 43346.13
mean(data$`Exceed State Average(%)`)
## [1] 0.7251333
mean(data$`Malay Percentage`)
## [1] 0.6962667

Rata-rata persentase pemilih Melayu menggambarkan distribusi populasi Melayu di daerah pemilihan yang diamati. Semakin tinggi nilai rata-rata, semakin besar proporsi pemilih dalam kategori tersebut.

Median

Median menunjukkan nilai tengah setelah data diurutkan. Jika median jumlah pemilih berada pada nilai tertentu, itu berarti setengah dari daerah pemilihan memiliki jumlah pemilih di bawah angka ini, sementara setengah lainnya memiliki jumlah pemilih di atasnya.

median(data$`Large Ranking`)
## [1] 2
median(data$Electorate)
## [1] 41267
median(data$`Exceed State Average(%)`)
## [1] 0.656
median(data$`Malay Percentage`)
## [1] 0.737

Begitu juga dengan median persentase pemilih Melayu, yang menunjukkan titik tengah dalam distribusi proporsi pemilih Melayu di berbagai daerah.

Modus

Modus adalah nilai yang paling sering muncul dalam dataset. Jika modus dari persentase pemilih Melayu menunjukkan angka tertentu, itu berarti sebagian besar daerah pemilihan memiliki persentase pemilih Melayu sekitar angka tersebut.

modus <- function(x){
  uniqx <- unique(x)
  uniqx[which.max(tabulate(match(x, uniqx)))]
}

modus(data$`Large Ranking`)
## [1] 1
modus(data$Electorate)
## [1] 50336
modus(data$`Exceed State Average(%)`)
## [1] 0.581
modus(data$`Malay Percentage`)
## [1] 0.48

Kita dapat menggunakan modus untuk melihat pola yang paling dominan dalam jumlah pemilih di daerah-daerah tertentu.

Q1, Q2, Q3

Kuartil membagi data menjadi empat bagian untuk memberikan wawasan lebih dalam mengenai distribusi data. Kuartil pertama (Q1) menunjukkan batas 25% data terendah, kuartil kedua (Q2) sama dengan median, dan kuartil ketiga (Q3) menunjukkan batas 75% data. Berikut Q1, Q2, dan Q3 dari dataset pemilih Melayu.

quantile(data$`Large Ranking`)
##   0%  25%  50%  75% 100% 
##  1.0  1.5  2.0  3.0  5.0
quantile(data$Electorate)
##    0%   25%   50%   75%  100% 
## 22146 37350 41267 50141 67371
quantile(data$`Exceed State Average(%)`)
##     0%    25%    50%    75%   100% 
## 0.2380 0.4205 0.6560 0.9680 1.2580
quantile(data$`Malay Percentage`)
##    0%   25%   50%   75%  100% 
## 0.480 0.577 0.737 0.778 0.925

Jika Q1 dari jumlah pemilih rendah, maka banyak daerah pemilihan memiliki jumlah pemilih yang relatif kecil. Q1 dari persentase pemilih Melayu menunjukkan ambang batas di mana 25% daerah memiliki proporsi pemilih Melayu yang lebih rendah dari angka ini. Q2 dari persentase ini memiliki 50% daerah proporsi pemilih Melayu yang lebih rendah dan 50% lebih tinggi. Q2 dapat kita sebut juga sebagi median. Q3 dari persentase ini, 75% daerah memiliki proporsi pemilih Melayu yang lebih rendah dari angka ini, dan 25% sisanya memiliki proporsi pemilih Melayu yang lebih tinggi.

Range

Range adalah selisih antara nilai maksimum dan minimum dalam dataset. Range yang besar menunjukkan adanya perbedaan yang signifikan antar daerah dalam jumlah pemilih atau persentase pemilih Melayu. Jika range jumlah pemilih tinggi, berarti ada daerah dengan jumlah pemilih yang sangat kecil dan ada yang sangat besar.

range(data$`Large Ranking`)
## [1] 1 5
range(data$Electorate)
## [1] 22146 67371
range(data$`Exceed State Average(%)`)
## [1] 0.238 1.258
range(data$`Malay Percentage`)
## [1] 0.480 0.925

Berdasarkan data, range di atas merupakan persentase pemilih Melayu menggambarkan variasi proporsi pemilih Melayu di berbagai daerah.

varians

Varians menunjukkan seberapa tersebar data dari nilai rata-rata. Semakin besar varians, semakin beragam nilai dalam dataset. Jika varians jumlah pemilih tinggi, itu menunjukkan bahwa jumlah pemilih antar daerah sangat bervariasi.

var(data$`Large Ranking`)
## [1] 1.552381
var(data$Electorate)
## [1] 173182670
var(data$`Exceed State Average(%)`)
## [1] 0.1162621
var(data$`Malay Percentage`)
## [1] 0.0185455

Varians dalam persentase pemilih Melayu di atas menunjukkan tingkat penyebaran proporsi pemilih Melayu di seluruh daerah pemilihan.

Standar Deviasi

Standar deviasi mengukur seberapa jauh data tersebar dari nilai rata-rata. Semakin besar standar deviasi, semakin tinggi tingkat variasi dalam data. Jika standar deviasi jumlah pemilih tinggi, berarti terdapat perbedaan besar dalam jumlah pemilih antar daerah. Berikut standar deviasi dari persentasi pemilih Melayu.

sd(data$`Large Ranking`)
## [1] 1.245946
sd(data$Electorate)
## [1] 13159.89
sd(data$`Exceed State Average(%)`)
## [1] 0.3409723
sd(data$`Malay Percentage`)
## [1] 0.1361818

Standar deviasi persentase pemilih Melayu tersebut menunjukkan bagaimana proporsi pemilih Melayu tersebar di berbagai daerah pemilihan, apakah nilai-nilainya cenderung mendekati rata-rata atau sangat bervariasi.