library(grid)
library(agricolae)
## Warning: package 'agricolae' was built under R version 4.3.3
library(stats) #berisi fungsi analisis statistika umum
library(readxl) #untuk membaca data dari file (.xls dan .xlsx)
library(readr) #untuk baca data dalam bentuk (.csv)
library(car) #Analisis lanjutan
## Loading required package: carData
library(tidyr) #Merapikan Data
UJI TAK TERENCANA
1. LSD
2. Tukey, Duncan, Dunnet
UJI TERENCANA
1. Kontras Orthogonal
2. Polinomial Orthogonal
Tujuan BNT untuk menentukan apakah rata-rata dua perlakuan berbeda
secara statistik atau tidak.
knitr::include_graphics("D:\\AGH 25\\BNT.png")
Catatan: Jika selisih antara 2
rataan > BNT, maka tolak \(H_0\)
Berikut data mengenai produksi padi yang dihasilkan oleh 3 varietas padi yaitu IR 32, IR 36 dan VUTW untuk tiap 2000 \(m^3\) sawah. Hasil produksi satu musim tanam diperoleh sebagai berikut:
knitr::include_graphics("D:\\AGH 25\\soal BNT.png")
knitr::include_graphics("D:\\AGH 25\\hipo BNT.png")
ulangan <- factor(rep(c("I", "II", "III", "IV", "V"), each=3)) # Ulangan
varietas <- factor(rep(c("IR32", "IR36", "VUTW"), times=5)) # Perlakuan (varietas padi)
hasil <- c(8, 8, 15, 9, 7, 12, 12, 6, 20, 11, 8, 17, 10, 9, 19) # Data hasil
data_padi <- data.frame(ulangan,varietas,hasil)
str(data_padi)
## 'data.frame': 15 obs. of 3 variables:
## $ ulangan : Factor w/ 5 levels "I","II","III",..: 1 1 1 2 2 2 3 3 3 4 ...
## $ varietas: Factor w/ 3 levels "IR32","IR36",..: 1 2 3 1 2 3 1 2 3 1 ...
## $ hasil : num 8 8 15 9 7 12 12 6 20 11 ...
print(data_padi)
## ulangan varietas hasil
## 1 I IR32 8
## 2 I IR36 8
## 3 I VUTW 15
## 4 II IR32 9
## 5 II IR36 7
## 6 II VUTW 12
## 7 III IR32 12
## 8 III IR36 6
## 9 III VUTW 20
## 10 IV IR32 11
## 11 IV IR36 8
## 12 IV VUTW 17
## 13 V IR32 10
## 14 V IR36 9
## 15 V VUTW 19
anova <- aov(hasil ~ varietas, data=data_padi)
summary(anova)
## Df Sum Sq Mean Sq F value Pr(>F)
## varietas 2 217.2 108.6 23.11 7.67e-05 ***
## Residuals 12 56.4 4.7
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Didapat nilai \(P\text{-Value}\) sebesar 7.67e-0.5 lebih kecil dari \(\alpha\) (0.05), sehingga tolak \(H_0\) artinya terdapat minimal ada satu perbedaan antara produksi ketiga varietas padi pada taraf nyata 5%.
lsd_test <- LSD.test(anova, "varietas", p.adj = "none", alpha = 0.05)
lsd_test
## $statistics
## MSerror Df Mean CV t.value LSD
## 4.7 12 11.4 19.01709 2.178813 2.987438
##
## $parameters
## test p.ajusted name.t ntr alpha
## Fisher-LSD none varietas 3 0.05
##
## $means
## hasil std r se LCL UCL Min Max Q25 Q50 Q75
## IR32 10.0 1.581139 5 0.969536 7.887563 12.112437 8 12 9 10 11
## IR36 7.6 1.140175 5 0.969536 5.487563 9.712437 6 9 7 8 8
## VUTW 16.6 3.209361 5 0.969536 14.487563 18.712437 12 20 15 17 19
##
## $comparison
## NULL
##
## $groups
## hasil groups
## VUTW 16.6 a
## IR32 10.0 b
## IR36 7.6 b
##
## attr(,"class")
## [1] "group"
Varietas dengan huruf yang berbeda (a, b, c) menunjukkan bahwa rataan
hasil produksi mereka berbeda secara signifikan satu sama lain.
Jika dua varietas memiliki huruf yang sama, itu berarti tidak ada
perbedaan signifikan di antara mereka
Nilai LSD = 2.987438
VUTW (16.6) dikelompokkan ke dalam grup a, artinya rataan hasil VUTW adalah yang paling tinggi.
IR32 (10.0) dikelompokkan ke dalam grup b, artinya rataan hasil IR32 berbeda secara signifikan dari VUTW.
IR36 (7.6) dikelompokkan ke dalam grup b, artinya rataan hasil IR36 berbeda secara signifikan dari IR32, namun tidak ada perbedaan secara signifikan terhadap VUTW.
RAL_1 <- data.frame(
Perlakuan = factor(rep(c("A", "B", "C", "D"), each = 6)),
Hasil = c(25.1, 17.2, 26.4, 16.1, 22.2, 15.9, # Data untuk Perlakuan A
40.2, 35.3, 32.0, 36.5, 43.3, 37.1, # Data untuk Perlakuan B
18.3, 22.6, 25.9, 15.1, 11.4, 23.7, # Data untuk Perlakuan C
28.0, 28.6, 33.2, 31.7, 30.3, 27.6) # Data untuk Perlakuan D
)
# Melihat data
print(RAL_1)
## Perlakuan Hasil
## 1 A 25.1
## 2 A 17.2
## 3 A 26.4
## 4 A 16.1
## 5 A 22.2
## 6 A 15.9
## 7 B 40.2
## 8 B 35.3
## 9 B 32.0
## 10 B 36.5
## 11 B 43.3
## 12 B 37.1
## 13 C 18.3
## 14 C 22.6
## 15 C 25.9
## 16 C 15.1
## 17 C 11.4
## 18 C 23.7
## 19 D 28.0
## 20 D 28.6
## 21 D 33.2
## 22 D 31.7
## 23 D 30.3
## 24 D 27.6
anova <- aov(Hasil~Perlakuan, data=RAL_1)
summary(anova)
## Df Sum Sq Mean Sq F value Pr(>F)
## Perlakuan 3 1291.0 430.3 23.46 9.32e-07 ***
## Residuals 20 366.9 18.3
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Didapat nilai \(P\text{-Value}\) sebesar 9.32e-07 lebih kecil dari \(\alpha\) (0.05), sehingga tolak \(H_0\) artinya terdapat minimal satu perlakuan yang secara signifikan mempengaruhi berat melon dalam kg.
tukey_test <- HSD.test(anova, trt="Perlakuan", group=TRUE) #Paket Agricole
print(tukey_test)
## $statistics
## MSerror Df Mean CV MSD
## 18.34442 20 26.82083 15.96907 6.921246
##
## $parameters
## test name.t ntr StudentizedRange alpha
## Tukey Perlakuan 4 3.958293 0.05
##
## $means
## Hasil std r se Min Max Q25 Q50 Q75
## A 20.48333 4.696133 6 1.748543 15.9 26.4 16.375 19.70 24.375
## B 37.40000 3.927340 6 1.748543 32.0 43.3 35.600 36.80 39.425
## C 19.50000 5.560935 6 1.748543 11.4 25.9 15.900 20.45 23.425
## D 29.90000 2.230695 6 1.748543 27.6 33.2 28.150 29.45 31.350
##
## $comparison
## NULL
##
## $groups
## Hasil groups
## B 37.40000 a
## D 29.90000 b
## A 20.48333 c
## C 19.50000 c
##
## attr(,"class")
## [1] "group"
Dari hasil output diatas dapat diambil kesimpulan bahwa varietas A dan C berada pada grup yang sama yang artinya rataannya tidak berbeda nyata terhadap respon yang diamati pada taraf nyata 5%. Selain itu, antara B dan D, B dan A, B dan C, D dan A, D dan C memiliki rataan yang berbeda nyata terhadap respon yang diamati pada taraf nyata 5%.
RAK_1 <- read.csv("D:\\AGH 25\\RAK-DATA 1.csv") #BENTUK UMUM
head(RAK_1) #Menampilkan 6 data teratas
## Hari A B C D
## 1 Hari1 260 308 323 330
## 2 Hari2 280 358 343 345
## 3 Hari3 298 353 350 333
## 4 Hari4 288 323 365 363
str(RAK_1)
## 'data.frame': 4 obs. of 5 variables:
## $ Hari: chr "Hari1" "Hari2" "Hari3" "Hari4"
## $ A : int 260 280 298 288
## $ B : int 308 358 353 323
## $ C : int 323 343 350 365
## $ D : int 330 345 333 363
# Mengonversi Bentuk Variabel
RAK_1$Hari <- as.factor(RAK_1$Hari)
str(RAK_1)
## 'data.frame': 4 obs. of 5 variables:
## $ Hari: Factor w/ 4 levels "Hari1","Hari2",..: 1 2 3 4
## $ A : int 260 280 298 288
## $ B : int 308 358 353 323
## $ C : int 323 343 350 365
## $ D : int 330 345 333 363
## Merapikan Data
RAK_1_1 <- pivot_longer(RAK_1,
cols=c(A,B,C,D),
names_to ="Perlakuan",
values_to = "Hasil")
head(RAK_1_1)
## # A tibble: 6 × 3
## Hari Perlakuan Hasil
## <fct> <chr> <int>
## 1 Hari1 A 260
## 2 Hari1 B 308
## 3 Hari1 C 323
## 4 Hari1 D 330
## 5 Hari2 A 280
## 6 Hari2 B 358
hasil_anova <- aov(Hasil ~ Perlakuan + Hari, data = RAK_1_1)
summary(hasil_anova)
## Df Sum Sq Mean Sq F value Pr(>F)
## Perlakuan 3 10886 3629 19.031 0.000309 ***
## Hari 3 2373 791 4.149 0.042052 *
## Residuals 9 1716 191
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
tukey_test1 <- HSD.test(hasil_anova, trt="Perlakuan", group=TRUE)
print(tukey_test1)
## $statistics
## MSerror Df Mean CV MSD
## 190.6667 9 326.25 4.232402 30.48087
##
## $parameters
## test name.t ntr StudentizedRange alpha
## Tukey Perlakuan 4 4.41489 0.05
##
## $means
## Hasil std r se Min Max Q25 Q50 Q75
## A 281.50 16.11418 4 6.904105 260 298 275.00 284.0 290.50
## B 335.50 23.97916 4 6.904105 308 358 319.25 338.0 354.25
## C 345.25 17.44276 4 6.904105 323 365 338.00 346.5 353.75
## D 342.75 14.97498 4 6.904105 330 363 332.25 339.0 349.50
##
## $comparison
## NULL
##
## $groups
## Hasil groups
## C 345.25 a
## D 342.75 a
## B 335.50 a
## A 281.50 b
##
## attr(,"class")
## [1] "group"
Grup a (yang terdiri dari B, C, dan D) menunjukkan bahwa rata-rata
dari perlakuan B, C, dan D tidak memiliki perbedaan yang signifikan
antara satu sama lain.
Grup b, yang hanya terdiri dari A, menunjukkan bahwa A berbeda secara
signifikan dari grup a, yang mencakup B, C, dan D.
tukey_test2 <- HSD.test(hasil_anova, trt="Hari", group=TRUE)
print(tukey_test2)
## $statistics
## MSerror Df Mean CV MSD
## 190.6667 9 326.25 4.232402 30.48087
##
## $parameters
## test name.t ntr StudentizedRange alpha
## Tukey Hari 4 4.41489 0.05
##
## $means
## Hasil std r se Min Max Q25 Q50 Q75
## Hari1 305.25 31.53173 4 6.904105 260 330 296.00 315.5 324.75
## Hari2 331.50 34.97142 4 6.904105 280 358 327.25 344.0 348.25
## Hari3 333.50 25.25206 4 6.904105 298 353 324.25 341.5 350.75
## Hari4 334.75 36.68219 4 6.904105 288 365 314.25 343.0 363.50
##
## $comparison
## NULL
##
## $groups
## Hasil groups
## Hari4 334.75 a
## Hari3 333.50 a
## Hari2 331.50 a
## Hari1 305.25 a
##
## attr(,"class")
## [1] "group"
# 1. Input Data
data <- data.frame(
perlakuan = rep(c("A", "B", "C", "D"), each = 5), # Perlakuan
respons = c(20, 22, 21, 23, 24, # Hasil pengukuran untuk perlakuan A
25, 26, 27, 28, 29, # Hasil pengukuran untuk perlakuan B
30, 31, 32, 33, 34, # Hasil pengukuran untuk perlakuan C
35, 36, 37, 38, 39) # Hasil pengukuran untuk perlakuan D
)
# 2. Melakukan ANOVA
anova_result <- aov(respons ~ perlakuan, data = data)
# 3. Melihat hasil ANOVA
summary(anova_result)
## Df Sum Sq Mean Sq F value Pr(>F)
## perlakuan 3 625 208.3 83.33 5.57e-10 ***
## Residuals 16 40 2.5
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# 4. Uji Duncan menggunakan duncan.test dari paket Agricolae
duncan_result <- duncan.test(anova_result, trt = "perlakuan", group = TRUE, console = TRUE)
##
## Study: anova_result ~ "perlakuan"
##
## Duncan's new multiple range test
## for respons
##
## Mean Square Error: 2.5
##
## perlakuan, means
##
## respons std r se Min Max Q25 Q50 Q75
## A 22 1.581139 5 0.7071068 20 24 21 22 23
## B 27 1.581139 5 0.7071068 25 29 26 27 28
## C 32 1.581139 5 0.7071068 30 34 31 32 33
## D 37 1.581139 5 0.7071068 35 39 36 37 38
##
## Alpha: 0.05 ; DF Error: 16
##
## Critical Range
## 2 3 4
## 2.119905 2.223004 2.287451
##
## Means with the same letter are not significantly different.
##
## respons groups
## D 37 a
## C 32 b
## B 27 c
## A 22 d
# 5. Menampilkan hasil uji Duncan
print(duncan_result)
## $statistics
## MSerror Df Mean CV
## 2.5 16 29.5 5.359793
##
## $parameters
## test name.t ntr alpha
## Duncan perlakuan 4 0.05
##
## $duncan
## Table CriticalRange
## 2 2.997999 2.119905
## 3 3.143802 2.223004
## 4 3.234945 2.287451
##
## $means
## respons std r se Min Max Q25 Q50 Q75
## A 22 1.581139 5 0.7071068 20 24 21 22 23
## B 27 1.581139 5 0.7071068 25 29 26 27 28
## C 32 1.581139 5 0.7071068 30 34 31 32 33
## D 37 1.581139 5 0.7071068 35 39 36 37 38
##
## $comparison
## NULL
##
## $groups
## respons groups
## D 37 a
## C 32 b
## B 27 c
## A 22 d
##
## attr(,"class")
## [1] "group"
Antar perlakuan menunjukkan perbedaan signifikan di antara rata-rata kelompok perlakuan pada taraf nyata 5%.
Membandingkan perlakuan lain dengan kontrol (yang tidak diberi perlakuan)
library(multcomp)
## Warning: package 'multcomp' was built under R version 4.3.2
## Loading required package: mvtnorm
## Loading required package: survival
## Loading required package: TH.data
## Warning: package 'TH.data' was built under R version 4.3.2
## Loading required package: MASS
## Warning: package 'MASS' was built under R version 4.3.3
##
## Attaching package: 'TH.data'
## The following object is masked from 'package:MASS':
##
## geyser
# Input data
data_dunnet <- data.frame(
treatment = factor(rep(c("Control", "A", "B", "C"), each = 10)), # 10 pengulangan per perlakuan
respon = c(25, 27, 24, 26, 30, 28, 29, 27, 26, 25, # Data untuk kontrol
31, 33, 35, 30, 32, 34, 31, 30, 29, 32, # Data untuk perlakuan A
40, 42, 41, 39, 43, 40, 41, 42, 39, 41, # Data untuk perlakuan B
45, 48, 46, 47, 49, 48, 46, 45, 47, 46) # Data untuk perlakuan C
)
# Melihat struktur data
print(data_dunnet)
## treatment respon
## 1 Control 25
## 2 Control 27
## 3 Control 24
## 4 Control 26
## 5 Control 30
## 6 Control 28
## 7 Control 29
## 8 Control 27
## 9 Control 26
## 10 Control 25
## 11 A 31
## 12 A 33
## 13 A 35
## 14 A 30
## 15 A 32
## 16 A 34
## 17 A 31
## 18 A 30
## 19 A 29
## 20 A 32
## 21 B 40
## 22 B 42
## 23 B 41
## 24 B 39
## 25 B 43
## 26 B 40
## 27 B 41
## 28 B 42
## 29 B 39
## 30 B 41
## 31 C 45
## 32 C 48
## 33 C 46
## 34 C 47
## 35 C 49
## 36 C 48
## 37 C 46
## 38 C 45
## 39 C 47
## 40 C 46
# Uji ANOVA
anova_result2 <- aov(respon ~ treatment, data = data_dunnet)
# Melihat hasil ANOVA
summary(anova_result2)
## Df Sum Sq Mean Sq F value Pr(>F)
## treatment 3 2416.1 805.4 302.3 <2e-16 ***
## Residuals 36 95.9 2.7
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Melakukan uji Dunnett
# Menetapkan "Control" sebagai kontrol
library(DescTools)
## Warning: package 'DescTools' was built under R version 4.3.2
##
## Attaching package: 'DescTools'
## The following object is masked from 'package:car':
##
## Recode
dunnett_result <- DunnettTest(x = data_dunnet$respon, g = data_dunnet$treatment, control = "Control")
# Menampilkan hasil uji Dunnett
print(dunnett_result)
##
## Dunnett's test for comparing several treatments with a control :
## 95% family-wise confidence level
##
## $Control
## diff lwr.ci upr.ci pval
## A-Control 5.0 3.210026 6.789974 8.4e-08 ***
## B-Control 14.1 12.310026 15.889974 < 2e-16 ***
## C-Control 20.0 18.210026 21.789974 < 2e-16 ***
##
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Pr(>|t|): menampilkan nilai p, yang menunjukkan apakah perbedaan
rata-rata antara perlakuan dan kontrol signifikan secara stastistik.
Nilai p yang lebih kecil dari tingkat signifikansi (misalnya 0.05)
menunjukkan perbedaan yang signifikan.
Berdasarkan, pada hasil analisis diatas didapat bahwa semua perlakuan
memberikan/menunjukkan perbedaan yang signifikan.