Perbandingan Dua Vektor Nilai Tengah Sampel Berpasangan

Input data

library(MASS)
set.seed(105)

n_daring <- 20
n_luring <- 20

mu_daring <- c(60, 55)
mu_luring <- c(65, 60)
Sigma <- matrix(c(200,50,50,180), 2)

data_daring <- mvrnorm(n_daring, mu = mu_daring, Sigma = Sigma)
data_luring <- mvrnorm(n_luring, mu = mu_luring, Sigma = Sigma)

dataset <- data.frame(
  Daring_Teori = data_daring[,1],
  Daring_Praktik = data_daring[,2],
  Luring_Teori = data_luring[,1],
  Luring_Praktik = data_luring[,2]
)
dataset
##    Daring_Teori Daring_Praktik Luring_Teori Luring_Praktik
## 1      69.10082       75.57203     82.92667       66.54077
## 2      64.76782       60.59846     71.48184       50.42095
## 3      75.19226       33.19184     42.15755       61.56826
## 4      33.12650       56.08377     67.27187       51.00631
## 5      67.66235       42.76799     86.96436       49.35985
## 6      54.53408       51.76298     49.26123       48.99604
## 7      60.63178       48.37937     68.14539       65.54106
## 8      65.31747       68.40494     51.38198       49.66886
## 9      55.39224       51.69868     64.79917       34.83578
## 10     64.87338       57.19761     66.79023       83.93738
## 11     81.13363       56.79122     63.67320       66.45155
## 12     70.54292       51.37868     58.92118       67.62025
## 13     60.81948       57.31139     71.99837       53.20297
## 14     57.48305       41.12359     76.67869       51.84916
## 15     55.38135       58.12605     52.98789       43.60255
## 16     54.59488       63.15775     65.60093       73.75354
## 17     70.54695       78.95870     90.02358       65.05747
## 18     59.33022       74.05079     58.61602       78.22222
## 19     71.87210       53.65545     48.33564       48.26555
## 20     65.01429       63.53392     79.94754       65.62850

Memisahkan Data dari Populasi 1 dan 2

data_daring <- dataset[,1:2]
data_luring <- dataset[,3:4]

Menghitung vektor rataan dan matriks kovarians

xbar1 = apply(data_daring, 2, mean)
xbar1
##   Daring_Teori Daring_Praktik 
##       62.86588       57.18726
xbar2 = apply(data_luring, 2, mean)
xbar2
##   Luring_Teori Luring_Praktik 
##       65.89817       58.77645
cov_m1 = cov(data_daring)
cov_m1
##                Daring_Teori Daring_Praktik
## Daring_Teori    102.6125993     -0.5359109
## Daring_Praktik   -0.5359109    133.5326911
cov_m2 = cov(data_luring)
cov_m2
##                Luring_Teori Luring_Praktik
## Luring_Teori      175.77439       24.41551
## Luring_Praktik     24.41551      155.96229
n1 = nrow(data_daring)
n2 = nrow(data_luring)

# S Gabungan
s_gab = ((n1-1)*cov_m1 + (n2-1)*cov_m2)/(n1+n2-2)
s_gab
##                Daring_Teori Daring_Praktik
## Daring_Teori       139.1935        11.9398
## Daring_Praktik      11.9398       144.7475

Uji T2 Hotelling Dua Populasi Sampel Berpasangan

library(Hotelling)
## Loading required package: corpcor
t2_homogen = hotelling.test(data_daring, data_luring, var.equal=TRUE)
t2_homogen
## Test stat:  0.78348 
## Numerator df:  2 
## Denominator df:  37 
## P-value:  0.6855

Selang Kepercayaan Simultan

T.ci = function(mu1, mu2, S_gab, n1, n2, avec=rep(1,length(mu1)), 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)
}

# Teori
T.ci(xbar1, xbar2, s_gab, n1, n2, avec=c(1,0), level=0.95)
##      lower      upper 
## -12.674698   6.610122
# Praktik
T.ci(xbar1, xbar2, s_gab, n1, n2, avec=c(0,1), level=0.95)
##     lower     upper 
## -11.42209   8.24371

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
}

# Teori
bon(xbar1, xbar2, s_gab, n1, n2, 0.05, 1)
##      lower      upper 
## -11.739085   5.674509
# Praktik
bon(xbar1, xbar2, s_gab, n1, n2, 0.05, 2)
##      lower      upper 
## -10.467994   7.289614

Perbandingan Dua Vektor Nilai Tengah Sampel Saling Bebas Ragam Sama

Input data

library(MASS)
set.seed(105)

n1 <- 20
n2 <- 20
mu1 <- c(60, 55)
mu2 <- c(65, 60)
Sigma <- matrix(c(200,50,50,180), 2)  # sama untuk dua populasi

data1 <- mvrnorm(n1, mu = mu1, Sigma = Sigma)
data2 <- mvrnorm(n2, mu = mu2, Sigma = Sigma)

dataset1 <- data.frame(
  Pop1_X1 = data1[,1],
  Pop1_X2 = data1[,2],
  Pop2_X1 = data2[,1],
  Pop2_X2 = data2[,2]
)
dataset1
##     Pop1_X1  Pop1_X2  Pop2_X1  Pop2_X2
## 1  69.10082 75.57203 82.92667 66.54077
## 2  64.76782 60.59846 71.48184 50.42095
## 3  75.19226 33.19184 42.15755 61.56826
## 4  33.12650 56.08377 67.27187 51.00631
## 5  67.66235 42.76799 86.96436 49.35985
## 6  54.53408 51.76298 49.26123 48.99604
## 7  60.63178 48.37937 68.14539 65.54106
## 8  65.31747 68.40494 51.38198 49.66886
## 9  55.39224 51.69868 64.79917 34.83578
## 10 64.87338 57.19761 66.79023 83.93738
## 11 81.13363 56.79122 63.67320 66.45155
## 12 70.54292 51.37868 58.92118 67.62025
## 13 60.81948 57.31139 71.99837 53.20297
## 14 57.48305 41.12359 76.67869 51.84916
## 15 55.38135 58.12605 52.98789 43.60255
## 16 54.59488 63.15775 65.60093 73.75354
## 17 70.54695 78.95870 90.02358 65.05747
## 18 59.33022 74.05079 58.61602 78.22222
## 19 71.87210 53.65545 48.33564 48.26555
## 20 65.01429 63.53392 79.94754 65.62850

Memisahkan data dari Populasi 1 dan 2

pop1 <- dataset1[,1:2]
pop2 <- dataset1[,3:4]

Menghitung vektor rataan dan matriks kovarians

xbar1 <- colMeans(pop1); xbar1
##  Pop1_X1  Pop1_X2 
## 62.86588 57.18726
xbar2 <- colMeans(pop2); xbar2
##  Pop2_X1  Pop2_X2 
## 65.89817 58.77645
cov1 <- cov(pop1); cov1
##             Pop1_X1     Pop1_X2
## Pop1_X1 102.6125993  -0.5359109
## Pop1_X2  -0.5359109 133.5326911
cov2 <- cov(pop2); cov2
##           Pop2_X1   Pop2_X2
## Pop2_X1 175.77439  24.41551
## Pop2_X2  24.41551 155.96229
n1 <- nrow(pop1)
n2 <- nrow(pop2)

# S Gabungan
s_gab <- ((n1-1)*cov1 + (n2-1)*cov2)/(n1+n2-2)
s_gab
##          Pop1_X1  Pop1_X2
## Pop1_X1 139.1935  11.9398
## Pop1_X2  11.9398 144.7475

Uji T2 Hotelling Dua Populasi Ragam Sama

library(Hotelling)
t2_homogen <- hotelling.test(pop1, pop2, var.equal=TRUE)
t2_homogen
## Test stat:  0.78348 
## Numerator df:  2 
## Denominator df:  37 
## P-value:  0.6855

Selang Kepercayaan Simultan

T.ci = function(mu1, mu2, S_gab, n1, n2, avec=rep(1,length(mu1)), 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)
}

# X1
T.ci(xbar1, xbar2, s_gab, n1, n2, avec=c(1,0), level=0.95)
##      lower      upper 
## -12.674698   6.610122
# X2
T.ci(xbar1, xbar2, s_gab, n1, n2, avec=c(0,1), level=0.95)
##     lower     upper 
## -11.42209   8.24371

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
}

# X1
bon(xbar1, xbar2, s_gab, n1, n2, 0.05, 1)
##      lower      upper 
## -11.739085   5.674509
# X2
bon(xbar1, xbar2, s_gab, n1, n2, 0.05, 2)
##      lower      upper 
## -10.467994   7.289614

Perbandingan Dua Vektor Nilai Tengah Sampel Saling Bebas Ragam Tidak Sama

Input data

set.seed(105)

n1 <- 20
n2 <- 20   # samain jumlah sampel biar bisa digabung
mu1 <- c(50, 55)
mu2 <- c(60, 65)

Sigma1 <- matrix(c(150,20,20,100), 2)   # beda
Sigma2 <- matrix(c(250,80,80,220), 2)

data1 <- mvrnorm(n1, mu = mu1, Sigma = Sigma1)
data2 <- mvrnorm(n2, mu = mu2, Sigma = Sigma2)

dataset2 <- data.frame(
  Pop1_X1 = data1[,1],
  Pop1_X2 = data1[,2],
  Pop2_X1 = data2[,1],
  Pop2_X2 = data2[,2]
)
dataset2
##     Pop1_X1  Pop1_X2  Pop2_X1  Pop2_X2
## 1  62.54998 68.19037 80.11398 73.07736
## 2  55.15814 57.94200 66.79697 54.90775
## 3  55.59097 33.99569 34.76487 65.49644
## 4  29.85452 63.42660 62.15782 55.32208
## 5  52.48262 43.46163 83.90131 54.57329
## 6  44.95678 54.06473 42.13129 52.17617
## 7  48.66959 49.74852 63.70417 71.20380
## 8  57.71161 63.76817 44.50679 53.02175
## 9  45.59196 53.77289 58.77526 37.57334
## 10 54.30818 55.30634 62.93611 91.17438
## 11 66.56574 50.39876 58.78757 71.95845
## 12 57.02914 49.24514 53.57135 72.97956
## 13 51.25561 56.53941 67.47983 57.96613
## 14 44.28970 45.07897 72.60928 56.73954
## 15 47.34182 58.70079 46.04367 46.49781
## 16 48.11993 62.77852 61.21334 80.01615
## 17 64.57640 70.37655 87.91460 71.83793
## 18 54.70163 69.78655 53.65568 84.51404
## 19 58.66300 50.61395 41.07712 51.33121
## 20 56.14859 60.12156 76.77832 71.92536

Memisahkan data dari populasi 1 dan 2

pop1 <- dataset2[,1:2]
pop2 <- dataset2[,3:4]

Menghitung vektor rataan dan matriks kovarians

xbar1 <- colMeans(pop1); xbar1
##  Pop1_X1  Pop1_X2 
## 52.77829 55.86586
xbar2 <- colMeans(pop2); xbar2
##  Pop2_X1  Pop2_X2 
## 60.94597 63.71463
cov1 <- cov(pop1); cov1
##           Pop1_X1   Pop1_X2
## Pop1_X1 69.142296  5.653242
## Pop1_X2  5.653242 86.828349
cov2 <- cov(pop2); cov2
##           Pop2_X1   Pop2_X2
## Pop2_X1 217.99157  46.60925
## Pop2_X2  46.60925 188.44134

Uji T2 Hotelling Dua Populasi Ragam Tidak Sama

t2_heterogen <- hotelling.test(pop1, pop2, var.equal=FALSE)
t2_heterogen
## Test stat:  7.6928 
## Numerator df:  2 
## Denominator df:  31.5259166090171 
## P-value:  0.03473