# ==========================================================
# TUGAS BAB 4
# UKURAN GEJALA PUSAT, LETAK, PENCARAN,
# KEMIRINGAN DAN KERUNCINGAN
# KELOMPOK 8
# Nama Anggota Kelompok :   
#-Fauzi Hanafi (2502056004)
#-Alvin Darul K. (2502056014)
#-M. Azril A. (2502056038)
#-M. Bilal Kenjiro (2502056044)
#-M. Adrianor (2502056047)

# ==========================================================


# ==========================================================
# 1. UKURAN GEJALA PUSAT
# ==========================================================

data1=c(1,2,3,4,5,6,7,8,9,10,11,11,12,13,14,15,16,17,18)

# Jumlah Keseluruhan Nilai
sum(data1)
## [1] 182
# Rata-Rata Aritmatik
mean(data1)
## [1] 9.578947
# Modus
table(data1)
## data1
##  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 
##  1  1  1  1  1  1  1  1  1  1  2  1  1  1  1  1  1  1
# Median
median(data1)
## [1] 10
# ==========================================================
# 2. UKURAN LETAK
# ==========================================================

# Kuartil
quantile(data1)
##   0%  25%  50%  75% 100% 
##  1.0  5.5 10.0 13.5 18.0
# Desil
quantile(data1,
         probs=c(0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9))
##  10%  20%  30%  40%  50%  60%  70%  80%  90% 
##  2.8  4.6  6.4  8.2 10.0 11.0 12.6 14.4 16.2
# ==========================================================
# 3. UKURAN PENCARAN ATAU DISPERSI ATAU SEBARAN
# ==========================================================

data2=c(
  10,20,30,40,50,
  10,30,30,40,50,
  10,30,30,40,50,
  20,30,30,50
)

data2
##  [1] 10 20 30 40 50 10 30 30 40 50 10 30 30 40 50 20 30 30 50
# Nilai Minimum
min(data2)
## [1] 10
# Nilai Maksimum
max(data2)
## [1] 50
# Range
max(data2)-min(data2)
## [1] 40
# Variance
var(data2)
## [1] 180.7018
# Standar Deviasi
sd(data2)
## [1] 13.44254
# ==========================================================
# 4. UKURAN KEMIRINGAN (SKEWNESS)
# ==========================================================

data1=c(1,2,3,4,5,6,7,8,9,10,11,11,12,13,14,15,16,17,18)

data1
##  [1]  1  2  3  4  5  6  7  8  9 10 11 11 12 13 14 15 16 17 18
# ==========================================================
# 5. UKURAN KERUNCINGAN (KURTOSIS)
# ==========================================================

# Perhitungan skewness dan kurtosis akan diperoleh
# pada bagian aplikasi R menggunakan package psych.


# ==========================================================
# APLIKASI DALAM R
# DATA 4.1
# ==========================================================

data4.1=data.frame(
  data1=c(
    1,2,3,4,5,6,7,8,9,10,
    11,11,12,13,14,15,16,17,18
  ),
  
  data2=c(
    10,10,10,20,20,30,30,30,30,30,
    30,40,40,40,40,50,50,50,50
  ),
  
  data3=c(
    1,2,2,3,3,3,3,3,4,4,
    4,5,5,6,6,NA,NA,NA,NA
  )
)

write.csv(data4.1,
          "data4.1.csv",
          row.names=FALSE)

simpan=read.table("data4.1.csv",
                  header=TRUE,
                  sep=",")

simpan
##    data1 data2 data3
## 1      1    10     1
## 2      2    10     2
## 3      3    10     2
## 4      4    20     3
## 5      5    20     3
## 6      6    30     3
## 7      7    30     3
## 8      8    30     3
## 9      9    30     4
## 10    10    30     4
## 11    11    30     4
## 12    11    40     5
## 13    12    40     5
## 14    13    40     6
## 15    14    40     6
## 16    15    50    NA
## 17    16    50    NA
## 18    17    50    NA
## 19    18    50    NA
data_1=simpan$data1
data_11=na.omit(data_1)

data_2=simpan$data2
data_21=na.omit(data_2)

data_3=simpan$data3
data_31=na.omit(data_3)

data_1
##  [1]  1  2  3  4  5  6  7  8  9 10 11 11 12 13 14 15 16 17 18
data_11
##  [1]  1  2  3  4  5  6  7  8  9 10 11 11 12 13 14 15 16 17 18
data_2
##  [1] 10 10 10 20 20 30 30 30 30 30 30 40 40 40 40 50 50 50 50
data_21
##  [1] 10 10 10 20 20 30 30 30 30 30 30 40 40 40 40 50 50 50 50
data_3
##  [1]  1  2  2  3  3  3  3  3  4  4  4  5  5  6  6 NA NA NA NA
data_31
##  [1] 1 2 2 3 3 3 3 3 4 4 4 5 5 6 6
## attr(,"na.action")
## [1] 16 17 18 19
## attr(,"class")
## [1] "omit"
# ==========================================================
# MENGGUNAKAN PACKAGE PSYCH
# ==========================================================

library(psych)

describe(data_11)
##    vars  n mean  sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 19 9.58 5.2     10    9.59 5.93   1  18    17 -0.04    -1.32 1.19
describe(data_21)
##    vars  n  mean    sd median trimmed   mad min max range  skew kurtosis   se
## X1    1 19 32.11 13.57     30   32.35 14.83  10  50    40 -0.23    -1.16 3.11
describe(data_31)
##    vars  n mean   sd median trimmed  mad min max range skew kurtosis   se
## X1    1 15  3.6 1.45      3    3.62 1.48   1   6     5 0.14    -1.01 0.38
# ==========================================================
# MENGGUNAKAN PACKAGE PASTECS
# ==========================================================

library(pastecs)

stat.desc(data_11)
##      nbr.val     nbr.null       nbr.na          min          max        range 
##   19.0000000    0.0000000    0.0000000    1.0000000   18.0000000   17.0000000 
##          sum       median         mean      SE.mean CI.mean.0.95          var 
##  182.0000000   10.0000000    9.5789474    1.1928535    2.5060921   27.0350877 
##      std.dev     coef.var 
##    5.1995276    0.5428078
stat.desc(data_21)
##      nbr.val     nbr.null       nbr.na          min          max        range 
##   19.0000000    0.0000000    0.0000000   10.0000000   50.0000000   40.0000000 
##          sum       median         mean      SE.mean CI.mean.0.95          var 
##  610.0000000   30.0000000   32.1052632    3.1137262    6.5416960  184.2105263 
##      std.dev     coef.var 
##   13.5724179    0.4227474
stat.desc(data_31)
##                       x
## nbr.val      15.0000000
## nbr.null      0.0000000
## nbr.na        0.0000000
## min           1.0000000
## max           6.0000000
## range         5.0000000
## sum          54.0000000
## median        3.0000000
## mean          3.6000000
## SE.mean       0.3754363
## CI.mean.0.95  0.8052307
## var           2.1142857
## std.dev       1.4540584
## coef.var      0.4039051
# ==========================================================
# APLIKASI DALAM R (DATA BERKELOMPOK)
# DATA 4.2
# ==========================================================

data4.2=data.frame(
  jurusan.angka=c(
    1,1,1,1,1,1,
    2,2,2,2,2,2
  ),
  
  jurusan.label=c(
    "matematika","matematika","matematika",
    "matematika","matematika","matematika",
    "statistika","statistika","statistika",
    "statistika","statistika","statistika"
  ),
  
  jenis.angka=c(
    1,1,1,2,2,2,
    1,1,1,2,2,2
  ),
  
  jenis.label=c(
    "laki-laki","laki-laki","laki-laki",
    "perempuan","perempuan","perempuan",
    "laki-laki","laki-laki","laki-laki",
    "perempuan","perempuan","perempuan"
  ),
  
  IQ=c(
    101,104,102,111,101,105,
    104,103,104,102,101,101
  ),
  
  EQ=c(
    102,104,104,105,106,102,
    101,112,104,101,102,104
  )
)

write.csv(data4.2,
          "data4.2.csv",
          row.names=FALSE)

simpan=read.table("data4.2.csv",
                  header=TRUE,
                  sep=",")

simpan
##    jurusan.angka jurusan.label jenis.angka jenis.label  IQ  EQ
## 1              1    matematika           1   laki-laki 101 102
## 2              1    matematika           1   laki-laki 104 104
## 3              1    matematika           1   laki-laki 102 104
## 4              1    matematika           2   perempuan 111 105
## 5              1    matematika           2   perempuan 101 106
## 6              1    matematika           2   perempuan 105 102
## 7              2    statistika           1   laki-laki 104 101
## 8              2    statistika           1   laki-laki 103 112
## 9              2    statistika           1   laki-laki 104 104
## 10             2    statistika           2   perempuan 102 101
## 11             2    statistika           2   perempuan 101 102
## 12             2    statistika           2   perempuan 101 104
# ==========================================================
# MENGGUNAKAN PACKAGE PSYCH
# ==========================================================

library(psych)

describeBy(simpan$IQ,
           simpan$jurusan.angka)
## 
##  Descriptive statistics by group 
## group: 1
##    vars n mean   sd median trimmed  mad min max range skew kurtosis   se
## X1    1 6  104 3.79    103     104 2.97 101 111    10 0.86    -0.93 1.55
## ------------------------------------------------------------ 
## group: 2
##    vars n  mean   sd median trimmed  mad min max range skew kurtosis   se
## X1    1 6 102.5 1.38  102.5   102.5 2.22 101 104     3    0    -2.06 0.56
describeBy(simpan$IQ,
           simpan$jurusan.label)
## 
##  Descriptive statistics by group 
## group: matematika
##    vars n mean   sd median trimmed  mad min max range skew kurtosis   se
## X1    1 6  104 3.79    103     104 2.97 101 111    10 0.86    -0.93 1.55
## ------------------------------------------------------------ 
## group: statistika
##    vars n  mean   sd median trimmed  mad min max range skew kurtosis   se
## X1    1 6 102.5 1.38  102.5   102.5 2.22 101 104     3    0    -2.06 0.56
describeBy(simpan$EQ,
           simpan$jurusan.angka)
## 
##  Descriptive statistics by group 
## group: 1
##    vars n   mean  sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 6 103.83 1.6    104  103.83 2.22 102 106     4 -0.02    -1.82 0.65
## ------------------------------------------------------------ 
## group: 2
##    vars n mean   sd median trimmed  mad min max range skew kurtosis   se
## X1    1 6  104 4.15    103     104 2.22 101 112    11 1.05    -0.59 1.69
describeBy(simpan$EQ,
           simpan$jurusan.label)
## 
##  Descriptive statistics by group 
## group: matematika
##    vars n   mean  sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 6 103.83 1.6    104  103.83 2.22 102 106     4 -0.02    -1.82 0.65
## ------------------------------------------------------------ 
## group: statistika
##    vars n mean   sd median trimmed  mad min max range skew kurtosis   se
## X1    1 6  104 4.15    103     104 2.22 101 112    11 1.05    -0.59 1.69
# ==========================================================
# MENGGUNAKAN PACKAGE DOBY
# ==========================================================

library(doBy)

summaryBy(
  IQ + EQ ~ jurusan.label + jenis.label,
  data=simpan,
  FUN=function(x) {
    c(
      ratarata=mean(x),
      standar_deviasi=sd(x),
      jumlah=sum(x)
    )
  }
)
##   jurusan.label jenis.label IQ.ratarata IQ.standar_deviasi IQ.jumlah
## 1    matematika   laki-laki    102.3333          1.5275252       307
## 2    matematika   perempuan    105.6667          5.0332230       317
## 3    statistika   laki-laki    103.6667          0.5773503       311
## 4    statistika   perempuan    101.3333          0.5773503       304
##   EQ.ratarata EQ.standar_deviasi EQ.jumlah
## 1    103.3333           1.154701       310
## 2    104.3333           2.081666       313
## 3    105.6667           5.686241       317
## 4    102.3333           1.527525       307