Seorang peneliti menyelidiki banyaknya infeksi virus yang diderita orang sebagai fungsi dari level stres yang mereka alami selama periode 6 bulan. Data yang diperoleh adalah:
#Data
penderita <-c (2,1,4,1,
4,3,2,3,
6,5,7,5,
5,7,8,4)
tingkatan <- c(rep("Tidak stress",4),rep("Stress minimal",4),rep("Stress moderat",4),rep("Stress berat",4))
tingkatan <- factor(tingkatan, levels=c("Tidak stress","Stress minimal","Stress moderat","Stress berat"))
levels(tingkatan)
## [1] "Tidak stress" "Stress minimal" "Stress moderat" "Stress berat"
# Menjadikan bentuk matriks 4x4
mat <- matrix(penderita, nrow = 4, byrow = TRUE)
# Memberikan nama kolom
colnames(mat) <- levels(tingkatan)
# TMenampilkan matriks
print(mat)
## Tidak stress Stress minimal Stress moderat Stress berat
## [1,] 2 1 4 1
## [2,] 4 3 2 3
## [3,] 6 5 7 5
## [4,] 5 7 8 4
datastress <-data.frame(tingkatan,penderita)
str(datastress)
## 'data.frame': 16 obs. of 2 variables:
## $ tingkatan: Factor w/ 4 levels "Tidak stress",..: 1 1 1 1 2 2 2 2 3 3 ...
## $ penderita: num 2 1 4 1 4 3 2 3 6 5 ...
#Mencari rata-rata untuk masing-masing kategori
tapply(datastress$penderita, datastress$tingkatan, mean)
## Tidak stress Stress minimal Stress moderat Stress berat
## 2.00 3.00 5.75 6.00
#Mencari variansi untuk masing-masing kategori
sd.tingkatan <- tapply(datastress$penderita, datastress$tingkatan, sd)
var.tingkatan <- sd.tingkatan^2
var.tingkatan
## Tidak stress Stress minimal Stress moderat Stress berat
## 2.0000000 0.6666667 0.9166667 3.3333333
#Plot rata-rata respon
library(ggpubr)
## Warning: package 'ggpubr' was built under R version 4.3.3
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.3.3
ggline(datastress, x="tingkatan", y = "penderita",
add = c("mean_se", "jitter"),
order = c("Tidak stress", "Stress minimal", "Stress moderat", "Stress berat"),
xlab = "Level stress", ylab = "Penderita inveksi virus")
#Kriteria keputusan yang sesuai jika tarak signifikansi a = 0.05
n <- nrow(datastress);n
## [1] 16
k <- nlevels(datastress$tingkatan);k
## [1] 4
qf (0.95,df<-k-1,df2<-n-k)
## [1] 3.490295
#Tabel ANOVA
options(digits=10)
fit<-aov(penderita~tingkatan,data=datastress)
summary(fit)
## Df Sum Sq Mean Sq F value Pr(>F)
## tingkatan 3 47.6875 15.895833 9.19277 0.0019594 **
## Residuals 12 20.7500 1.729167
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Perbandingan berganda dengan prosedur Bonferroni
library(DescTools)
## Warning: package 'DescTools' was built under R version 4.3.3
PostHocTest(fit, method ="bonferroni", coef.level = 0.95)
##
## Posthoc multiple comparisons of means : Bonferroni
## 95% family-wise confidence level
##
## $tingkatan
## diff lwr.ci upr.ci pval
## Stress minimal-Tidak stress 1.00 -1.93145682436 3.931456824 1.0000
## Stress moderat-Tidak stress 3.75 0.81854317564 6.681456824 0.0100 **
## Stress berat-Tidak stress 4.00 1.06854317564 6.931456824 0.0062 **
## Stress moderat-Stress minimal 2.75 -0.18145682436 5.681456824 0.0719 .
## Stress berat-Stress minimal 3.00 0.06854317564 5.931456824 0.0436 *
## Stress berat-Stress moderat 0.25 -2.68145682436 3.181456824 1.0000
##
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Melakukan perbandingan berganda dengan prosedur Tukey
TukeyHSD(fit, which = "tingkatan", conf.level = 0.95)
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = penderita ~ tingkatan, data = datastress)
##
## $tingkatan
## diff lwr upr p adj
## Stress minimal-Tidak stress 1.00 -1.76057253772 3.760572538 0.7102198445
## Stress moderat-Tidak stress 3.75 0.98942746228 6.510572538 0.0078017395
## Stress berat-Tidak stress 4.00 1.23942746228 6.760572538 0.0049068745
## Stress moderat-Stress minimal 2.75 -0.01057253772 5.510572538 0.0509907932
## Stress berat-Stress minimal 3.00 0.23942746228 5.760572538 0.0319619986
## Stress berat-Stress moderat 0.25 -2.51057253772 3.010572538 0.9928382918
#pengecekan asumsi homogenitas variansi (Uji Barlett)manual
n <- nrow(datastress)
n
## [1] 16
si <- tapply(datastress$penderita, datastress$tingkatan,sd)
si
## Tidak stress Stress minimal Stress moderat Stress berat
## 1.4142135624 0.8164965809 0.9574271078 1.8257418584
ni <- c(4,4,4,4)
k <- length(ni)
n <- sum(ni)
sp <- sqrt(sum((ni - 1) * si^2) / (n - k))
sp
## [1] 1.31497782
T <- ((n-k)*log(sp^2)-sum((ni-1)*log(si^2)))/(1+(1/3*(k-1)))*(sum(1/(ni-1))-(1/(n-k)))
T
## [1] 1.473590415
df <- k-1
df
## [1] 3
p.value <- 1-pchisq(T,df)
p.value
## [1] 0.6883789239
khi_kuadrat_tabel <- qchisq(0.95, df=3)
khi_kuadrat_tabel
## [1] 7.814727903
#pengecekan asumsi homogenitas variansi (Uji Barlett)Program R
bartlett.test(penderita~tingkatan, data=datastress)
##
## Bartlett test of homogeneity of variances
##
## data: penderita by tingkatan
## Bartlett's K-squared = 2.0702148, df = 3, p-value = 0.557962
#Uji normalitas dengan uji Saphiro-Wilk manual
grup1 <- subset(datastress$penderita, datastress$tingkatan == "Tidak stress")
grup1
## [1] 2 1 4 1
grup1.order <- sort(grup1,decreasing = FALSE)
grup1.order
## [1] 1 1 2 4
n <- length(grup1)
n
## [1] 4
m <- (n-1)/2
m
## [1] 1.5
#Uji normalitas dengan uji Saphiro-Wilk program R
grup1 <- subset(datastress$penderita, datastress$tingkatan == "Tidak stress")
shapiro.test(grup1)
##
## Shapiro-Wilk normality test
##
## data: grup1
## W = 0.82742667, p-value = 0.1611906
grup2 <- subset(datastress$penderita, datastress$tingkatan == "Stress minimal")
shapiro.test(grup2)
##
## Shapiro-Wilk normality test
##
## data: grup2
## W = 0.9446644, p-value = 0.6829615
grup3 <- subset(datastress$penderita, datastress$tingkatan == "Stress moderat")
shapiro.test(grup3)
##
## Shapiro-Wilk normality test
##
## data: grup3
## W = 0.86336905, p-value = 0.2724532
grup4 <- subset(datastress$penderita, datastress$tingkatan == "Stress berat")
shapiro.test(grup4)
##
## Shapiro-Wilk normality test
##
## data: grup4
## W = 0.94970596, p-value = 0.7142802