1. Pendahuluan

Tujuan Praktikum:

1. Memahami konsep uji vektor nilai tengah untuk dua populasi.

2. Mampu melakukan uji hipotesis dan membentuk selang kepercayaan untuk:

3. Mampu menginterpretasikan hasil output R dalam konteks masalah.

2. Perbandingan Dua Vektor Nilai Tengah Sampel Berpasangan

Input Data

set.seed(63)

# Banyak baris data
n <- 15

# Bangkitkan data acak
data <- data.frame(
  `Mobil` = sample(100:230, n, replace = TRUE),
  `Mobil Matic` = sample(10:35, n, replace = TRUE),
  `Motor` = sample(70:220, n, replace = TRUE),
  `Motor Matic` = sample(7:30, n, replace = TRUE)
)

# Tampilkan data
print(data)
##    Mobil Mobil.Matic Motor Motor.Matic
## 1    166          17   153           7
## 2    141          29   134          21
## 3    104          20   155          28
## 4    184          31   184          17
## 5    112          14   155          20
## 6    190          35   159          19
## 7    151          20    74          25
## 8    183          20   112          29
## 9    101          11    86          30
## 10   223          12   165          20
## 11   197          23   198           7
## 12   105          11   186          19
## 13   208          24    93          27
## 14   134          25   128          19
## 15   191          30    90          26

Menghitung Selisih Essay Formal dan Informal

d1 = data[,1]-data[,3]
d2 = data[,2]-data[,4]

X = data.frame(d1,d2)
X
##     d1  d2
## 1   13  10
## 2    7   8
## 3  -51  -8
## 4    0  14
## 5  -43  -6
## 6   31  16
## 7   77  -5
## 8   71  -9
## 9   15 -19
## 10  58  -8
## 11  -1  16
## 12 -81  -8
## 13 115  -3
## 14   6   6
## 15 101   4

Menghitung vektor rataan dan matriks covarians

xbar = apply(X, 2, mean)
xbar
##         d1         d2 
## 21.2000000  0.5333333
cov_m = cov(X)
cov_m
##             d1         d2
## d1 3105.028571   9.457143
## d2    9.457143 115.980952

Uji T2 Hotelling Dua Populasi Sampel Berpasangan

library(MVTests)
## 
## Attaching package: 'MVTests'
## The following object is masked from 'package:datasets':
## 
##     iris
mean0 = c(0,0)
result = OneSampleHT2(X,mu0=mean0,alpha=0.05)
summary(result)
##        One Sample Hotelling T Square Test 
## 
## Hotelling T Sqaure Statistic = 2.199614 
##  F value = 1.021 , df1 = 2 , df2 = 13 , p-value: 0.387 
## 
##                    Descriptive Statistics
## 
##             d1         d2
## N     15.00000 15.0000000
## Means 21.20000  0.5333333
## Sd    55.72278 10.7694453
## 
## 
##                  Detection important variable(s)
## 
##         Lower     Upper Mu0 Important Variables?
## d1 -19.991167 62.391167   0                FALSE
## d2  -7.427612  8.494278   0                FALSE

Selang Kepercayaan Simultan

result$CI
##         Lower     Upper Mu0 Important Variables?
## d1 -19.991167 62.391167   0                FALSE
## d2  -7.427612  8.494278   0                FALSE

Selang Kepercayaan Bonferroni

bon = function(mu,S,n,alpha,k){
 p = length(mu)
 lower = mu[k] - sqrt(S[k,k]/n) * abs(qt(alpha/(2*p), df=n-1))
 upper = mu[k] + sqrt(S[k,k]/n) * abs(qt(alpha/(2*p), df=n-1))
 c(lower = lower,upper = upper)
}

n = nrow(X)
#Kata
bon(xbar, cov_m,n,0.05,1)
##  lower.d1  upper.d1 
## -14.90658  57.30658
#Kata Kerja
bon(xbar, cov_m,n,0.05,2)
##  lower.d2  upper.d2 
## -6.444923  7.511590

3. Perbandingan Dua Vektor Nilai Tengah Sampel Saling Bebas Ragam Sama

set.seed(63)
n <- 20

data2 <- data.frame(
  `UNBT SD`     = round(rnorm(n, mean = 65, sd = 10)), 
  `UNBT SMP`     = round(rnorm(n, mean = 55, sd = 12)),
  `UNBK SD`  = round(rnorm(n, mean = 70, sd = 15)),
  `UNBK SMP`  = round(rnorm(n, mean = 60, sd = 12))
)

print(data2)
##    UNBT.SD UNBT.SMP UNBK.SD UNBK.SMP
## 1       78       67      65       53
## 2       46       46      70       68
## 3       70       44      69       50
## 4       46       62      55       64
## 5       70       46      25       51
## 6       54       77      93       60
## 7       69       64      77       67
## 8       66       39      88       72
## 9       48       61      74       49
## 10      69       57      67       61
## 11      69       38      78       75
## 12      64       60      72       59
## 13      68       62      71       56
## 14      67       53      51       44
## 15      63       67      66       63
## 16      67       63      33       58
## 17      61       37      63       44
## 18      74       74      58       50
## 19      75       67      56       71
## 20      77       65      93       60
# Memisahkan Data dari Populasi 1 dan 2
d3 = data2[,1:2]
d4 = data2[,3:4]

Menghitung vektor rataan dan matriks covarians

xbar1 = apply(d3, 2, mean)
xbar1
##  UNBT.SD UNBT.SMP 
##    65.05    57.45
xbar2 = apply(d4, 2, mean)
xbar2
##  UNBK.SD UNBK.SMP 
##    66.20    58.75
cov_m1 = cov(d3)
cov_m1
##           UNBT.SD  UNBT.SMP
## UNBT.SD  92.78684  10.23947
## UNBT.SMP 10.23947 143.20789
cov_m2 = cov(d4)
cov_m2
##            UNBK.SD UNBK.SMP
## UNBK.SD  297.22105 56.36842
## UNBK.SMP  56.36842 83.25000
n1 = nrow(d3)
n2 = nrow(d4)

# S Gabungan
s_gab = ((n1-1)*cov_m1+(n2-1)*cov_m2)/(n1+n2-2)
s_gab
##            UNBT.SD  UNBT.SMP
## UNBT.SD  195.00395  33.30395
## UNBT.SMP  33.30395 113.22895

Uji T2 Hotelling Dua Populasi Sampel Saling Bebas Ragam Sama

library(Hotelling)
## Loading required package: corpcor
t2_homogen = hotelling.test(d3,d4,var.equal=TRUE)
t2_homogen
## Test stat:  0.18107 
## Numerator df:  2 
## Denominator df:  37 
## P-value:  0.9158

Selang Kepercayaan Simultan

T.ci = function(mu1, mu2, S_gab, n1, n2, avec=rep(1,length(mu)), level=0.95){
p = length(mu1)
mu = mu1-mu2
cval = qf(level, p, n1+n2-p-1) * p * (n1+n2-2) / (n1+n2-p-1)
zhat = crossprod(avec, mu)
zvar = crossprod(avec, S_gab %*% avec)* (1/n1+1/n2)
const = sqrt(cval * zvar)
c(lower = zhat - const, upper = zhat + const)
}
#TWK
T.ci(xbar1, xbar2, s_gab, n1,n2, avec=c(1,0),level=0.95)
##     lower     upper 
## -12.56295  10.26295
#TIU
T.ci(xbar1, xbar2, s_gab, n1,n2, avec=c(0,1),level=0.95)
##     lower     upper 
## -9.996707  7.396707

Selang Kepercayaan Bonferroni

bon = function(mu1, mu2 ,S, n1, n2, alpha, k){
 p = length(mu1)
 mu = mu1-mu2
 lower = mu[k] - sqrt((S[k,k]) *(1/n1+1/n2))* abs(qt(alpha/(2*p), df=n1+n2-2))
 upper = mu[k] + sqrt((S[k,k]) *(1/n1+1/n2))* abs(qt(alpha/(2*p), df=n1+n2-2))
 ci = c(lower = lower,upper = upper)
 names(ci)= c("lower","upper")
 ci
}
#TWK
bon(xbar1, xbar2, s_gab, n1, n2,0.05,1)
##      lower      upper 
## -11.455538   9.155538
#TIU
bon(xbar1, xbar2, s_gab, n1, n2,0.05,2)
##     lower     upper 
## -9.152857  6.552857

4. Perbandingan Dua Vektor Nilai Tengah Sampel Saling Bebas Ragam Tidak Sama

Input Data

set.seed(63)
n <- 20

data3 <- data.frame(
  `UNBT SD`     = round(rnorm(n, mean = 65, sd = 10)), 
  `UNBT SMP`     = round(rnorm(n, mean = 55, sd = 12)),
  `UNBK SD`  = round(rnorm(n, mean = 70, sd = 15)),
  `UNBK SMP`  = round(rnorm(n, mean = 60, sd = 12))
)

print(data3)
##    UNBT.SD UNBT.SMP UNBK.SD UNBK.SMP
## 1       78       67      65       53
## 2       46       46      70       68
## 3       70       44      69       50
## 4       46       62      55       64
## 5       70       46      25       51
## 6       54       77      93       60
## 7       69       64      77       67
## 8       66       39      88       72
## 9       48       61      74       49
## 10      69       57      67       61
## 11      69       38      78       75
## 12      64       60      72       59
## 13      68       62      71       56
## 14      67       53      51       44
## 15      63       67      66       63
## 16      67       63      33       58
## 17      61       37      63       44
## 18      74       74      58       50
## 19      75       67      56       71
## 20      77       65      93       60
# Memisahkan Data dari Populasi 1 dan 2
d5 = data3[,1:2]
d6 = data3[,3:4]

Menghitung vektor rataan dan matriks covarians

xbar1 = apply(d5, 2, mean)
xbar1
##  UNBT.SD UNBT.SMP 
##    65.05    57.45
xbar2 = apply(d5, 2, mean)
xbar2
##  UNBT.SD UNBT.SMP 
##    65.05    57.45
cov_m1 = cov(d5)
cov_m1
##           UNBT.SD  UNBT.SMP
## UNBT.SD  92.78684  10.23947
## UNBT.SMP 10.23947 143.20789
cov_m2 = cov(d6)
cov_m2
##            UNBK.SD UNBK.SMP
## UNBK.SD  297.22105 56.36842
## UNBK.SMP  56.36842 83.25000
n1 = nrow(d5)
n2 = nrow(d6)

Uji T2 Hotelling Dua Populasi Sampel Saling Bebas Ragam Sama

library(Hotelling)
t2_not_homogen = hotelling.test(d5,d6,var.equal=FALSE)
t2_not_homogen
## Test stat:  0.18107 
## Numerator df:  2 
## Denominator df:  33.9571171928145 
## P-value:  0.9158

Selang Kepercayaan Simultan

T.ci = function(mu1, mu2, S1, S2, n1, n2, avec=rep(1,length(mu)), level=0.95){
p = length(mu1)
mu = mu1-mu2
cval = qchisq(level, p)
zhat = crossprod(avec, mu)
zvar = crossprod(avec, S1 %*% avec)/n1 + crossprod(avec, S2 %*% avec)/n2
const = sqrt(cval * zvar)
c(lower = zhat - const, upper = zhat + const)
}

#TWK
T.ci(xbar1, xbar2, cov_m1, cov_m2, n1,n2, avec=c(1,0),level=0.95)
##     lower     upper 
## -10.80907  10.80907
#TWK
T.ci(xbar1, xbar2, cov_m1, cov_m2, n1,n2, avec=c(1,0),level=0.95)
##     lower     upper 
## -10.80907  10.80907
#TIU
T.ci(xbar1, xbar2, cov_m1, cov_m2, n1,n2, avec=c(0,1),level=0.95)
##     lower     upper 
## -8.236548  8.236548

Latihan

library(MASS)
set.seed(63)
unbt <- 20
unbk <- 20

# Nilai peserta CAT: Misalnya rata-rata lebih rendah
mu_unbt <- c(60, 55)
Sigma <- matrix(c(200, 50, 50, 180), 2) # Matriks kovariansi diasumsikan sama
data_unbt <- mvrnorm(unbt, mu = mu_unbt, Sigma = Sigma)

# Nilai peserta Manual: Misalnya rata-rata lebih tinggi
mu_unbk <- c(65, 60)
data_unbk <- mvrnorm(unbk, mu = mu_unbk, Sigma = Sigma)

# Gabungkan menjadi satu data frame
data_siswa <- data.frame(
  Metode = rep(c("UNBT", "UNBK"), each = 20),
  SD = c(data_unbt[,1], data_unbk[,1]),
  SMP = c(data_unbt[,2], data_unbk[,2])
)
data_siswa
##    Metode       SD      SMP
## 1    UNBT 51.54474 32.89156
## 2    UNBT 76.61587 80.59872
## 3    UNBT 47.53539 58.14733
## 4    UNBT 87.34108 68.17126
## 5    UNBT 47.94602 56.30959
## 6    UNBT 86.56771 48.83678
## 7    UNBT 60.90786 44.04124
## 8    UNBT 48.38442 65.92683
## 9    UNBT 83.47054 66.85448
## 10   UNBT 55.87114 49.65947
## 11   UNBT 45.12615 63.77619
## 12   UNBT 64.85345 52.60249
## 13   UNBT 60.15793 46.45980
## 14   UNBT 56.91586 54.38329
## 15   UNBT 70.30212 48.36083
## 16   UNBT 62.35042 46.80681
## 17   UNBT 53.18673 72.77664
## 18   UNBT 60.76063 31.71731
## 19   UNBT 55.87071 36.66395
## 20   UNBT 52.11118 35.45281
## 21   UNBK 64.27545 68.67255
## 22   UNBK 69.71600 54.23550
## 23   UNBK 59.17810 68.31901
## 24   UNBK 79.01712 66.87510
## 25   UNBK 95.84525 96.43944
## 26   UNBK 47.21205 44.89107
## 27   UNBK 63.78272 50.01694
## 28   UNBK 57.74188 39.09402
## 29   UNBK 55.46601 65.57480
## 30   UNBK 68.20733 60.82346
## 31   UNBK 67.41655 43.51128
## 32   UNBK 63.05253 59.77584
## 33   UNBK 61.64836 61.97146
## 34   UNBK 69.81975 84.47458
## 35   UNBK 70.36413 60.74942
## 36   UNBK 93.32125 86.34714
## 37   UNBK 60.93205 76.52587
## 38   UNBK 68.09878 75.43910
## 39   UNBK 83.17794 60.52428
## 40   UNBK 47.08078 44.75717
# Pisahkan data berdasarkan kelompok
group_unbt <- subset(data_siswa, Metode == "UNBT", select = c(SD, SMP))
group_unbt 
##          SD      SMP
## 1  51.54474 32.89156
## 2  76.61587 80.59872
## 3  47.53539 58.14733
## 4  87.34108 68.17126
## 5  47.94602 56.30959
## 6  86.56771 48.83678
## 7  60.90786 44.04124
## 8  48.38442 65.92683
## 9  83.47054 66.85448
## 10 55.87114 49.65947
## 11 45.12615 63.77619
## 12 64.85345 52.60249
## 13 60.15793 46.45980
## 14 56.91586 54.38329
## 15 70.30212 48.36083
## 16 62.35042 46.80681
## 17 53.18673 72.77664
## 18 60.76063 31.71731
## 19 55.87071 36.66395
## 20 52.11118 35.45281
group_unbk <- subset(data_siswa, Metode == "UNBK", select = c(SD, SMP))
group_unbk 
##          SD      SMP
## 21 64.27545 68.67255
## 22 69.71600 54.23550
## 23 59.17810 68.31901
## 24 79.01712 66.87510
## 25 95.84525 96.43944
## 26 47.21205 44.89107
## 27 63.78272 50.01694
## 28 57.74188 39.09402
## 29 55.46601 65.57480
## 30 68.20733 60.82346
## 31 67.41655 43.51128
## 32 63.05253 59.77584
## 33 61.64836 61.97146
## 34 69.81975 84.47458
## 35 70.36413 60.74942
## 36 93.32125 86.34714
## 37 60.93205 76.52587
## 38 68.09878 75.43910
## 39 83.17794 60.52428
## 40 47.08078 44.75717