Minggu 14-15 - RStudio Untuk Statistika
Minggu 14-15 - RStudio Untuk Statistika
Statistika Industri
Minggu XIII-XIV: Penggunaan RStudio untuk Statistika
1. Data Frame.
2. Distribusi Statistika.
3. Estimasi.
4. Pengujian dua populasi.
5. Uji hipotesis.
6. Regresi linier sederhana.
7. Regresi linier majemuk.
8. Analisis variansi.
9. Statistika non-parametrik.
2
1. Data Frame
3
Data Frame
> n = c(2, 3, 5)
> s = c("aa", "bb", "cc")
> b = c(TRUE, FALSE, TRUE)
> df = data.frame(n, s, b)
4
Data Frame
5
Mengimpor Data Teks
▪ 100 a1 b1
200 a2 b2
300 a3 b3
400 a4 b4
▪ Simpan sebagai file teks (.txt) dengan nama: “01-Data-
frame-notepad.txt”.
▪ Buat data frame, dftxt = read.table(01-Data-
frame-notepad.txt).
▪ Jika tidak berhasil, lihat di mana posisi working directory
saat ini: getwd().
▪ Mengubah working directory: setwd(“nama path WD
yang baru”).
▪ Bisa juga menggunakan built-in function pada RStudio
“Import Dataset”.
6
Mengimpor Data CSV
Col1,Col2,Col3
100,a1,b1
200,a2,b2
300,a3,b3
7
2. Distribusi Statistika
8
Distribusi Binomial
9
Distribusi Poisson
10
Distribusi Eksponensial
11
Distribusi Normal
12
Distribusi Chi-Squared
13
Distribusi t-Student
14
Distribusi F
15
3. Estimasi satu populasi
16
Data Frame
▪ library(MASS)
▪ help(survey)
▪ Student Survey Data
• Jumlah data: 237.
• Variabel:
• Sex.
• Wr.Hnd.
• NW.Hnd.
• W.Hnd.
• Fold.
• Pulse.
• Clap.
• Exer.
• Smoke.
• Height.
• M.I.
• Age.
17
Estimasi Titik Rataan
18
Estimasi Interval Rataan dengan Variansi
Populasi Diketahui
▪ Diketahui standar deviasi populasi tinggi badan
mahasiswa adalah 9,48 cm. Tentukan estimasi interval
rataan dengan tingkat signifikasi 5%.
▪ Buatlah nama variabel baru, supaya berbeda dengan
nama variabel yang digunakan untuk estimasi titik
rataan:
• variabel na.omit(survey$Height)
• height.response = na.omit(survey$Height)
▪ Jumlah sampel:
• n = length(variabel)
▪ Bandingkan sampel awal dengan sampel setelah baris
NA dihapus (237 vs. 209).
▪ Standar deviasi populasi:
• sigma = sigma value
▪ Standar error rataan:
• standard error of mean = sigma/sqrt(n)
19
Estimasi Interval Rataan dengan Variansi
Populasi Diketahui
▪ Margin of error (E):
• E = qnorm(1-α/2)∗standard error of mean
▪ Confidence interval
• sample mean = mean(variabel)
• sample mean + c(-E, E)
20
Estimasi Interval Rataan dengan Variansi
Populasi Diketahui
▪ Install package untuk uji estimasi:
• library(TeachingDemos)
▪ Uji rataan variansi populasi diketahui:
• z.test(variabel, sd=sigma)
21
Estimasi Interval Rataan dengan Variansi
Populasi Tidak Diketahui
▪ Tentukan estimasi interval rataan tinggi badan
dengan tingkat signifikasi 5%.
▪ Buatlah nama variabel baru, supaya berbeda
dengan nama variabel yang digunakan untuk
estimasi titik rataan:
• variabel na.omit(survey$Height)
• height.response = na.omit(survey$Height)
▪ Jumlah sampel:
• n = length(variabel)
▪ Standar deviasi sampel:
• S = sd(variabel)
▪ Standard error estimate:
• standard error estimate = sd/sqrt(n)
22
Estimasi Interval Rataan dengan Variansi
Populasi Tidak Diketahui
▪ Margin of error (E):
• E = qt(1-α/2)∗standard error estimate
▪ Memakai qt karena menggunakan distribusi t-
student (variansi populasi tidak diketahui).
▪ Confidence interval
• sample mean = mean(variabel)
• sample mean + c(-E, E)
23
Estimasi Interval Rataan dengan Variansi
Populasi Tidak Diketahui
▪ Menggunakan package stats.
▪ Uji rataan variansi populasi tidak diketahui:
• t.test(variabel)
24
Ukuran Sampel untuk Estimasi Rataan
25
4. Pengujian dua populasi
26
Uji Rataan Berpasangan Dua Populasi
▪ Buatlah perbandingan antara panen gandum di tahun
1931 dan 1932 yang mengikuti distribusi normal. Data
diambil dari ladang yang sama untuk kedua tahun
tersebut.
▪ Gunakan dataset immer:
• library(MASS)
• head(immer)
▪ Panen gandum tahun 1931 dan 1932 masing-masing
adalah Y1 dan Y2 di dataset immer.
▪ Gunakan head, length, dan mean untuk melihat profil
dataset.
▪ Paired t-test:
• t.test(variabel 1, variabel 2, paired=TRUE)
▪ paired=TRUE berarti menggunakan uji berpasangan.
27
Uji Rataan Independen Dua Populasi
28
Uji Rataan Independen Dua Populasi
▪ Pemisahan data:
• L = mtcars$am == 0
• mpg.matic = mtcars[L,]$mpg
• mpg.manual = mtcars[!L,]$mpg
▪ Tanda ! Sebelum nama indeks artinya adalah
negasi (bukan berarti harus sama dengan satu).
▪ Cek jumlah sampel untuk mobil matic dan mobil
manual menggunakan length, hasilnya adalah 19
dan 13. Apakah boleh jumlah dua sampel tidak
sama? Mengapa?
▪ Cek rataan kedua jenis mobil menggunakan mean.
▪ Estimasi perbedaan rataan:
• t.test(mpg.matic, mpg.manual)
29
5. Uji hipotesis
30
Uji Rataan Single Tail
Variansi Populasi Diketahui
▪ Sebuah pabrik mengklaim bahwa rataan umur
bohlam lampu yang diproduksinya adalah lebih
dari 10.000 jam. Dalam sebuah sampel yang terdiri
dari 30 bohlam, ditemukan bahwa rata-rata umur
hidup hanya selama 9.900 jam. Diketahui standar
deviasi populasi adalah 120 jam. Dengan tingkat
signifikansi 5%, dapatkah kita menolak klaim dari
pabrik?
▪ Hipotesis nol adalah µ ≥ 10.000.
▪ Uji hipotesis adalah lower tail. Mengapa?
31
Uji Rataan Single Tail
Variansi Populasi Diketahui
▪ Test statistic:
• xbar = 9900
• mu0 = 10000
• sigma = 120
• n = 30
• z = (xbar−mu0)/(sigma/sqrt(n))
▪ Critical value:
• alpha = .05
• z.alpha = qnorm(1−alpha)
• −z.alpha
▪ Kesimpulan: karena test statistic kurang dari critical
value, dengan tingkat signifikansi 5%, tolak klaim
pabrik bahwa rataan umur hidup bohlam lebih dari
10.000 jam.
32
Uji Rataan Two-Tailed
Variansi Populasi Diketahui
▪ Hasil sebuah sensus menyatakan bahwa rata-rata
berat King Penguin yang hidup di Antartika tahun
lalu adalah 15,4 kg. Dalam sebuah sampel yang
terdiri dari 35 penguin tahun ini dari koloni penguin
yang sama, rata-rata berat penguin adalah 14,6
kg. Standar deviasi populasi adalah 2,5 kg. Dengan
tingkat signifikansi 5%, dapatkah kita menolak
hipotesis awal bahwa berat penguin tidak berbeda
dari tahun lalu?
▪ Hipotesis nol adalah µ = 15,4.
▪ Hipotesis ini adalah two-tailed. Mengapa?
33
Uji Rataan Two-Tailed
Variansi Populasi Diketahui
▪ Test-statistic:
• xbar = 14.6
• mu0 = 15.4
• sigma = 2.5
• n = 35
• z = (xbar−mu0)/(sigma/sqrt(n))
▪ Critical value:
• alpha = .05
• z.half.alpha = qnorm(1−alpha/2)
• c(−z.half.alpha, z.half.alpha)
▪ Kesimpulan: karena test statistic berada di antara
critical values, terima hipotesis awal.
34
Uji Rataan Single Tail
Variansi Populasi Tidak Diketahui
▪ Sebuah label makanan menyatakan bahwa dalam
sebuah kantong kue terdapat paling banyak 2
gram lemak jenuh di sebuah kue. Dalam sebuah
sampel yang terdiri dari 35 kue, rata-rata lemak
jenuhnya adalah 2,1 gram per kue. Jika standar
deviasi sampel adalah 0,3 gram, dengan tingkat
signifikansi 5%, dapatkah kita menolak klaim di label
makanan tersebut?
▪ Hipotesis nol adalah µ ≤ 2.
▪ Uji hipotesis adalah upper tail dan menggunakan
distribusi t. Mengapa?
35
Uji Rataan Single Tail
Variansi Populasi Tidak Diketahui
▪ Test statistic:
• xbar = 2.1
• mu0 = 2
• s = 0.3
• n = 35
• t = (xbar−mu0)/(s/sqrt(n))
▪ Critical value:
• alpha = .05
• t.alpha = qt(1−alpha, df=n−1)
▪ Kesimpulan: karena test statistic lebih besar dari
critical value, dengan tingkat signifikansi 5%, klaim
di label makanan tersebut dapat ditolak.
36
Uji Rataan Two-Tailed
Variansi Populasi Tidak Diketahui
▪ Hasil sebuah sensus menyatakan bahwa rata-rata
berat King Penguin yang hidup di Antartika tahun
lalu adalah 15,4 kg. Dalam sebuah sampel yang
terdiri dari 35 penguin tahun ini dari koloni penguin
yang sama, rata-rata berat penguin adalah 14,6
kg. Standar deviasi sampel adalah 2,5 kg. Dengan
tingkat signifikansi 5%, dapatkah kita menolak
hipotesis awal bahwa berat penguin tidak berbeda
dari tahun lalu?
▪ Hipotesis nol adalah µ = 15,4.
▪ Hipotesis ini adalah two-tailed, dan mengunakan
distribusi t. Mengapa?
37
Uji Rataan Two-Tailed
Variansi Populasi Tidak Diketahui
▪ Test-statistic:
• xbar = 14.6
• mu0 = 15.4
• s = 2.5
• n = 35
• z = (xbar−mu0)/(s/sqrt(n))
▪ Critical value:
• alpha = .05
• t.half.alpha = qt(1−alpha/2, df=n−1)
• c(−t.half.alpha, t.half.alpha)
▪ Kesimpulan: karena test statistik berada di antara
critical values, terima hipotesis awal.
38
Kesalahan Tipe II Single Tail
39
Kesalahan Tipe II Single Tail
40
Kesalahan Tipe II Two-Tailed
▪ Hasil sebuah sensus menyatakan bahwa rata-rata
berat King Penguin yang hidup di Antartika tahun
lalu adalah 15,4 kg. Ternyata berat sesungguhnya
dari populasi tersebut adalah 15,1 kg, dengan
standar deviasi populasi 2,5 kg. Dengan tingkat
signifikansi 5% dan jumlah penguin 35 ekor, berapa
probabilitas kesalahan tipe II dalam pengujian
hipotesis ini?
▪ Hipotesis nol adalah µ = 15,4.
▪ Standard deviation of mean:
• n = 35
• sigma = 2.5
• sem = sigma/sqrt(n)
41
Kesalahan Tipe II Two-Tailed
▪ Lower bound of sample means:
• alpha = .05
• mu0 = 15.4
• I = c(alpha/2, 1-alpha/2)
• q = qnorm(I, mean=mu0, sd=sem)
▪ Probabilitas kesalahan tipe II (P(-q < rataan sampel < q):
• mu = 15.1
• p = pnorm(q, mean=mu, sd=sem)
• diff(p) #perbedaan nilai antara p[1] dan p[2]
▪ Kesimpulan:
• Selama rataan sampel lebih dari di antara 14,57 dan 16,23,
hipotesis awal tidak akan ditolak.
• Probabilitas kesalahan tipe II adalah 89,1% dan the power of
test adalah 10,9%.
42
Uji Independensi
▪ Penggunaan data:
• library(MASS)
• tbl = table(survey$Smoke, survey$Exer)
▪ Fungsi table untuk menyimpan dalam bentuk
tabel (sebelumnya kita menyimpan dalam
variabel).
• Smoke: heavy, never, occasionally.
• Exercise: frequently, none, sometimes.
▪ Lakukan pengujian hipotesis untuk melihat apakah
kebiasaan merokok independent terhadap tingkat
olahraga dengan level of significance 5%.
43
Uji Independensi
▪ Uji indepensi:
• chisq.test(tbl)
▪ Nilai p-value 0,48 lebih besar dari 0,05, maka
hipotesis awal tidak ditolak. Kebiasaan merokok
independent terhadap frekuensi olahraga.
▪ Namun, terdapat peringatan karena nilai yang
kecil di tabel kontingensi. Gabungkan kolom kedua
dan ketiga (None dan Some) di tabel sebelumnya:
• ctbl = cbind(tbl[,"Freq"], tbl[,"None"] + tbl[,
"Some"])
• chisq.test(ctbl)
▪ Kesimpulan: nilai p-value setelah tabel kontingensi
digabungkan sebesar 0,3571, masih lebih besar dari
0,05. Hipotesis awal tidak ditolak.
44
6. Regresi linier sederhana
45
Mengestimasi Persamaan Regresi Sederhana
▪ Dataset:
• faithful
▪ Durasi erupsi berikutnya (dalam menit) dari sebuah
gunung berapi dipengaruhi oleh lama menunggu
(dalam menit) dari erupsi yang terakhir. Buatlah model
regresi linier sederhana yang menggambarkan
hubungan dua variabel ini.
▪ Model:
• lm(y ~ x, data=dataset).
▪ Koefisien regresi:
• koefisien = coefficients(model regresi)
▪ Intersep:
• koefisien[1]
▪ Slope:
• koefisien[2]
46
Mengestimasi Persamaan Regresi Sederhana
47
Koefisien Determinasi
48
Uji Signifikansi
49
Selang Kepercayaan dan Selang Prediksi
50
Residu Regresi
▪ Buatlah plot residu dari model regresi linier sederhana
erupsi gunung berapi.
▪ Residu model:
• eruption.res = resid(model regresi)
• plot(faithful$waiting, eruption.res,
ylab="Residuals", xlab="Waiting Time", main="Old
Faithful Eruptions")
• abline(0, 0)
• help(resid)
▪ Residu terstandardisasi:
• eruption.stdres = rstandard(model regresi)
• plot(faithful$waiting, eruption.stdres,
ylab="Standardized Residuals", xlab="Waiting
Time", main="Old Faithful Eruptions")
• abline(0, 0)
• help(rstandard)
51
Normal Probability Plot Residu
52
Residual Plot
53
Residual Terstandardisasi
54
Normal Probability Plot Residu
55
7. Regresi linier majemuk
56
Permasalahan
▪ Dataset:
• stackloss
▪ Variabel dependen:
• Stackloss.
▪ Variabel independen:
• Cooling air flow.
• Inlet water temperature.
• Acid concentration.
57
Mengestimasi Persamaan Regresi Majemuk
▪ Dataset:
• stackloss
▪ Model:
• lm(y ~ X, data=dataset).
▪ Koefisien regresi:
• koefisien = coefficients(model regresi)
▪ Intersep:
• koefisien[1]
▪ Slope:
• koefisien[2]
58
Mengestimasi Persamaan Regresi Majemuk
59
Koefisien Determinasi MLR
60
Uji Signifikansi MLR
61
Selang Kepercayaan
dan Selang Prediksi MLR
▪ Buatlah selang kepercayaan dan selang prediksi
95% jika air flow, temperatur air, dan konsentrasi
acid masing-masing adalah 72, 20, dan 85%.
▪ Selang kepercayaan:
• predict(model
regresi, X, interval="confidence")
▪ Selang prediksi:
• predict(model regresi, X, interval=“predict")
62
8. Analisis variansi
63
Completely Randomized Design
64
Completely Randomized Design
▪ Dataset:
• Item1 = c(22, 42, 44, 52, 45, 37)
• Item2 = c(52, 33, 8, 47, 43, 52)
• Item3 = c(16, 24, 19, 18, 34, 39)
• df1 = data.frame(Item1, Item2, Item3)
▪ Gabungkan dataset ke dalam satu vektor:
• r = c(t(as.matrix(df1)))
▪ Buat variabel treatment:
• f = c("Item1", "Item2", "Item3")
• k = 3
• n = 6
65
Completely Randomized Design
66
Randomized Block Design
▪ Sebuah restoran cepat saji sedang menguji 3 menu baru.
Untuk mengetahui apakah ketiganya memiliki popularitas
yang sama, 6 franchise dipilih secara acak untuk studi ini.
Sesuai dengan prinsip RBD, setiap restoran akan menguji coba
3 menu baru tersebut. Setiap restoran hanya menguji satu
menu per minggu, dan membutuhkan 3 minggu untuk
melakukan semua uji coba. Urutan pengujian menu juga
dipilih secara acak
Item1 Item2 Item3
31 27 24
31 28 31
45 29 46
21 18 48
42 36 46
32 17 40
67
Randomized Block Design
▪ Dataset:
• Item1 = c(22, 42, 44, 52, 45, 37)
• Item2 = c(52, 33, 8, 47, 43, 52)
• Item3 = c(16, 24, 19, 18, 34, 39)
• df1 = data.frame(Item1, Item2, Item3)
▪ Gabungkan dataset ke dalam satu vektor:
• r = c(t(as.matrix(df2)))
▪ Buat variabel treatment:
• f = c("Item1", "Item2", "Item3")
• k = 3
• n = 6
68
Randomized Block Design
69
Factorial Design
70
Factorial Design
71
Randomized Block Design
▪ Dataset:
• Item1 = c(25, 36, 31, 26, 51, 47, 47, 52)
• Item2 = c(39, 42, 39, 35, 43, 39, 53, 46)
• Item3 = c(36, 24, 28, 29, 42, 36, 32, 33)
• df3 = data.frame(Item1, Item2, Item3)
▪ Gabungkan dataset ke dalam satu vektor:
• r = c(t(as.matrix(df3)))
▪ Buat variabel treatment dan faktor:
• f1 = c("Item1", "Item2", "Item3")
• f2 = c("East", "West")
• k1 = length(f1)
• k2 = length(f2)
• n = 4
72
Randomized Block Design
▪ Satukan variabel pengamatan dengan treatment:
• tm1 = gl(k1, 1, n*k1*k2, factor(f1))
▪ Satukan variabel pengamatan dengan East/West coast:
• tm2 = gl(k2, n*k1, n*k1*k2, factor(f2))
▪ ANOVA:
• av = aov(r ~ tm1 * tm2)
• summary(av)
▪ Kesimpulan:
• Karena P-value (tm1) kurang dari 0,05, hipotesis nol ditolak. Simpulkan
bahwa rata-rata penjualan untuk ketiga jenis menu tidak sama.
• Karena P-value untuk perbedaan Pantai Barat-Timur (tm2) kurang
dari 0,05, terdapat perbedaan penjualan untuk kedua pantai
tersebut.
• Karena P-value interaksi Pantai Barat-Timur kurang dari 0,05, terdapat
interaksi antara menu dengan faktor lokasi (sisi pantai), i.e.
pelanggan dari sisi pantai yang berbeda memiliki selera menu yang
berbeda.
73
9. Statistika non-parametrik
74
Uji Tanda (Sign Test)
75
Uji Tanda (Sign Test)
▪ Uji tanda:
• binom.test(5, 18)
▪ Kesimpulan:
• Karena P-value lebih dari 0,05, hipotesis awal tidak ditolak.
Kedua varian minuman (lama dan baru) sama-sama
popular.
76
Wilcoxon Signed-Rank Test
77
Kruskal-Wallis Test
▪ Telah dikumpulkan data kualitas udara (ozon) di
New York dari bulan Mei s.d. September 1973.
Tanpa mengasumsikan bahwa data tersebut
normal, ujilah apakah data setiap bulan (selama 5
bulan) tersebut adalah sama.
▪ Dataset:
• head(airquality)
▪ Kruskal-Wallis test:
• kruskal.test(Ozone ~ Month, data = airquality)
▪ Kesimpulan:
• Karena P-value kurang dari 0,05, simpulkan bahwa massa
jenis ozon bulanan di New York dari Mei s.d. September
1973 berasal dari populasi yang tidak identik.
78
Selesai
79