# =========================================================
# 1. MEMBACA DATA
# =========================================================

data <- read.table(file.choose(), header = TRUE)

View(data)
names(data)
## [1] "Provinsi" "x"        "y"
str(data)
## 'data.frame':    38 obs. of  3 variables:
##  $ Provinsi: chr  "Aceh" "Sumatera_Utara" "Sumatera_Barat" "Riau" ...
##  $ x       : num  1.34 1.34 1.39 1.31 1.25 1.1 1.28 1.16 1.32 1.45 ...
##  $ y       : num  12.34 7.1 5.27 6.19 6.67 ...
# =========================================================
# 2. MEMILIH VARIABEL
# =========================================================

X <- data$x
Y <- data$y


# =========================================================
# 3. CEK MISSING VALUE
# =========================================================

sum(is.na(X))
## [1] 0
sum(is.na(Y))
## [1] 0
# =========================================================
# 4. MEMBERSIHKAN DATA
# =========================================================

data <- data[complete.cases(data$x, data$y), ]

X <- data$x
Y <- data$y

# Jumlah data setelah dibersihkan
length(X)
## [1] 38
length(Y)
## [1] 38
# =========================================================
# 5. STATISTIK DESKRIPTIF X
# =========================================================

mean(X)
## [1] 1.275789
median(X)
## [1] 1.315
min(X)
## [1] 0.18
max(X)
## [1] 3.06
range(X)
## [1] 0.18 3.06
quantile(X)
##    0%   25%   50%   75%  100% 
## 0.180 1.115 1.315 1.430 3.060
IQR(X)
## [1] 0.315
var(X)
## [1] 0.1829764
sd(X)
## [1] 0.4277574
summary(X)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.180   1.115   1.315   1.276   1.430   3.060
# =========================================================
# 6. STATISTIK DESKRIPTIF Y
# =========================================================

mean(Y)
## [1] 10.09474
median(Y)
## [1] 9.135
min(Y)
## [1] 3.44
max(Y)
## [1] 30.41
range(Y)
## [1]  3.44 30.41
quantile(Y)
##      0%     25%     50%     75%    100% 
##  3.4400  5.4800  9.1350 12.0775 30.4100
IQR(Y)
## [1] 6.5975
var(Y)
## [1] 38.97301
sd(Y)
## [1] 6.242837
summary(Y)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   3.440   5.480   9.135  10.095  12.078  30.410
# =========================================================
# 7. BOXPLOT X
# =========================================================

boxplot(
  X,
  main = "Boxplot Laju Pertumbuhan Penduduk",
  ylab = "Laju Pertumbuhan Penduduk (%)"
)

boxplot.stats(X)
## $stats
## [1] 0.630 1.100 1.315 1.430 1.650
## 
## $n
## [1] 38
## 
## $conf
## [1] 1.230418 1.399582
## 
## $out
## [1] 0.18 3.06
# =========================================================
# 8. BOXPLOT Y
# =========================================================

boxplot(
  Y,
  main = "Boxplot Persentase Penduduk Miskin",
  ylab = "Persentase Penduduk Miskin (%)"
)

boxplot.stats(Y)
## $stats
## [1]  3.440  5.380  9.135 12.160 18.680
## 
## $n
## [1] 38
## 
## $conf
## [1]  7.397219 10.872781
## 
## $out
## [1] 30.41 26.34
# =========================================================
# 9. PERHITUNGAN OUTLIER X
# =========================================================

Q1_X <- quantile(X, 0.25)
Q3_X <- quantile(X, 0.75)

IQR_X <- Q3_X - Q1_X

batas_bawah_X <- Q1_X - 1.5 * IQR_X
batas_atas_X <- Q3_X + 1.5 * IQR_X

Q1_X
##   25% 
## 1.115
Q3_X
##  75% 
## 1.43
IQR_X
##   75% 
## 0.315
batas_bawah_X
##    25% 
## 0.6425
batas_atas_X
##    75% 
## 1.9025
outlier_X <- X[X < batas_bawah_X | X > batas_atas_X]
outlier_X
## [1] 0.18 0.63 3.06
# =========================================================
# 10. PERHITUNGAN OUTLIER Y
# =========================================================

Q1_Y <- quantile(Y, 0.25)
Q3_Y <- quantile(Y, 0.75)

IQR_Y <- Q3_Y - Q1_Y

batas_bawah_Y <- Q1_Y - 1.5 * IQR_Y
batas_atas_Y <- Q3_Y + 1.5 * IQR_Y

Q1_Y
##  25% 
## 5.48
Q3_Y
##     75% 
## 12.0775
IQR_Y
##    75% 
## 6.5975
batas_bawah_Y
##      25% 
## -4.41625
batas_atas_Y
##      75% 
## 21.97375
outlier_Y <- Y[Y < batas_bawah_Y | Y > batas_atas_Y]
outlier_Y
## [1] 30.41 26.34
plot(
  X, Y,
  main = "Scatter Plot Laju Pertumbuhan Penduduk terhadap Kemiskinan",
  xlab = "Laju Pertumbuhan Penduduk (%)",
  ylab = "Persentase Penduduk Miskin (%)",
  pch = 19
)

model <- lm(Y ~ X)

abline(model)

tabel_bantu <- data.frame(
  Provinsi = data$Provinsi,
  X = X,
  Y = Y,
  X2 = X^2,
  Y2 = Y^2,
  XY = X * Y
)

# Membuat baris jumlah
jumlah <- data.frame(
  Provinsi = "Jumlah",
  X = sum(X),
  Y = sum(Y),
  X2 = sum(X^2),
  Y2 = sum(Y^2),
  XY = sum(X * Y)
)

# Menggabungkan tabel dengan baris jumlah
tabel_bantu <- rbind(tabel_bantu, jumlah)

tabel_bantu
##                     Provinsi     X      Y      X2        Y2       XY
## 1                       Aceh  1.34  12.34  1.7956  152.2756  16.5356
## 2             Sumatera_Utara  1.34   7.10  1.7956   50.4100   9.5140
## 3             Sumatera_Barat  1.39   5.27  1.9321   27.7729   7.3253
## 4                       Riau  1.31   6.19  1.7161   38.3161   8.1089
## 5                      Jambi  1.25   6.67  1.5625   44.4889   8.3375
## 6           Sumatera_Selatan  1.10   9.50  1.2100   90.2500  10.4500
## 7                   Bengkulu  1.28  11.83  1.6384  139.9489  15.1424
## 8                    Lampung  1.16   9.31  1.3456   86.6761  10.7996
## 9  Kepulauan_Bangka_Belitung  1.32   4.75  1.7424   22.5625   6.2700
## 10            Kepulauan_Riau  1.45   4.09  2.1025   16.7281   5.9305
## 11               DKI_Jakarta  0.18   3.96  0.0324   15.6816   0.7128
## 12                Jawa_Barat  1.02   6.54  1.0404   42.7716   6.6708
## 13               Jawa_Tengah  0.95   9.21  0.9025   84.8241   8.7495
## 14             DI_Yogyakarta  0.63   9.70  0.3969   94.0900   6.1110
## 15                Jawa_Timur  0.71   9.06  0.5041   82.0836   6.4326
## 16                    Banten  1.05   5.38  1.1025   28.9444   5.6490
## 17                      Bali  0.68   3.44  0.4624   11.8336   2.3392
## 18       Nusa_Tenggara_Barat  1.56  11.17  2.4336  124.7689  17.4252
## 19       Nusa_Tenggara_Timur  1.58  17.52  2.4964  306.9504  27.6816
## 20          Kalimantan_Barat  1.31   5.78  1.7161   33.4084   7.5718
## 21         Kalimantan_Tengah  1.32   5.09  1.7424   25.9081   6.7188
## 22        Kalimantan_Selatan  1.24   3.63  1.5376   13.1769   4.5012
## 23          Kalimantan_Timur  3.06   5.14  9.3636   26.4196  15.7284
## 24          Kalimantan_Utara  1.37   5.18  1.8769   26.8324   7.0966
## 25            Sulawesi_Utara  0.77   6.32  0.5929   39.9424   4.8664
## 26           Sulawesi_Tengah  1.16  10.46  1.3456  109.4116  12.1336
## 27          Sulawesi_Selatan  1.10   7.24  1.2100   52.4176   7.9640
## 28         Sulawesi_Tenggara  1.63  10.02  2.6569  100.4004  16.3326
## 29                 Gorontalo  1.22  12.16  1.4884  147.8656  14.8352
## 30            Sulawesi_Barat  1.51  10.00  2.2801  100.0000  15.1000
## 31                    Maluku  1.33  14.91  1.7689  222.3081  19.8303
## 32              Maluku_Utara  1.43   5.79  2.0449   33.5241   8.2797
## 33               Papua_Barat  1.65  18.68  2.7225  348.9424  30.8220
## 34          Papua_Barat_Daya  1.55  16.49  2.4025  271.9201  25.5595
## 35                     Papua  1.31  18.39  1.7161  338.1921  24.0909
## 36             Papua_Selatan  1.43  18.54  2.0449  343.7316  26.5122
## 37              Papua_Tengah  1.45  30.41  2.1025  924.7681  44.0945
## 38          Papua_Pegunungan  1.34  26.34  1.7956  693.7956  35.2956
## 39                    Jumlah 48.48 383.60 68.6204 5314.3424 507.5188
# =========================================================
# KOEFISIEN KORELASI PEARSON
# =========================================================

# Jumlah sampel
n <- length(X)

# Nilai yang diperlukan
sumX <- sum(X)
sumY <- sum(Y)
sumX2 <- sum(X^2)
sumY2 <- sum(Y^2)
sumXY <- sum(X * Y)

# Menampilkan nilai
n
## [1] 38
sumX
## [1] 48.48
sumY
## [1] 383.6
sumX2
## [1] 68.6204
sumY2
## [1] 5314.342
sumXY
## [1] 507.5188
# =========================================================
# MENGHITUNG PEMBILANG
# =========================================================

pembilang <- (n * sumXY) - (sumX * sumY)

pembilang
## [1] 688.7864
# =========================================================
# MENGHITUNG PENYEBUT
# =========================================================

bagian_X <- (n * sumX2) - (sumX^2)

bagian_Y <- (n * sumY2) - (sumY^2)

penyebut <- sqrt(bagian_X * bagian_Y)

bagian_X
## [1] 257.2648
bagian_Y
## [1] 54796.05
penyebut
## [1] 3754.61
# =========================================================
# KOEFISIEN KORELASI PEARSON
# =========================================================

r <- pembilang / penyebut

r
## [1] 0.1834509