Anda di halaman 1dari 11

CONTOH ANALISIS RANCANGAN ACAK LENGKAP DENGAN

KONTRAS ORTOGONAL MENGGUNAKAN R

Webinar Fakultas Pertanian 8 September 2020

Narasumber:

Prof. Hamim Sudarsono, Ph.D.


Dosen Entomologi dan Statistika Pertanian
Universitas Lampung

PENGANTAR
Materi ini dikembangkan dari materi kuliah di Jurusan Proteksi Tanaman, Fakultas Pertanian
Universitas Lampung. Data dan analisis yang digunakan dalam makalah ini bersumber dari buku
Aplikasi Statistika untuk Analisis Data Riset Proteksi Tanaman (F. X. Susilo, 2013, Penerbit
Aura, Bandar Lampung. 168 hlm). Jika peserta mengalami kesulitan dengan prosedur penentuan
kontras ortogonal dan aspek statistika lainnya diharapkan merujuk kepada buku tersebut atau
menggunakan referensi lain yang relevan. Materi ini khusus membahas penggunaan R untuk
menganalisis data sehingga memberikan hasil yang sama dengan buku. Terima kasih kepada
Prof. Susilo, Universitas Lampung, yang telah mengijinkan penggunaan data dan analisisnya.

Deskripsi Data:

Lima perlakuan berupa genotipa tanaman dengan kriteria sbb:


Genotipa Informasi / Sifat

Lokal, rentan terhadap hama dan


A
penyakit

B Unggul, tahan penyakit P1

C Unggul, tahan penyakit P2

D Unggul, tahan penyakit P1 dan hama H

E Unggul, tahan penyakit P2 dan hama H

1
Pertanyaan penelitian:
1) Apakah respons genotipa lokal (µ1) berbeda dengan respons genotipa-genotipa non-
lokal (yaitu genotipa-genotipa unggul µ2, µ3, µ4, µ5)?

2) Apakah respons genotipa-genotipa unggul tahan penyakit (µ2, µ3) berbeda dengan
respons genotipa-genotipa unggul tahan penyakit dan hama (µ4, µ5)?

3) Apakah respons genotipa unggul tahan penyakit P1 (µ2) berbeda dengan respons
genotipa unggul tahan penyakit P2 (µ3)?

4) Apakah respons genotipa unggul tahan penyakit P1 dan hama (µ4) berbeda dengan
respons genotipa unggul tahan penyakit P2 dan hama (µ5)?

Hipotesis
1) Ho: θ1 = 4µ1 – µ2 – µ3 – µ4 – µ5 = 0
H1: θ1 = 4µ1 – µ2 – µ3 – µ4 – µ5 ≠ 0
(A vs B, C, D, E)

2) Ho: θ2 = µ2 + µ3 – µ4 – µ5 = 0
H1: θ2 = µ2 + µ3 – µ4 – µ5 ≠ 0
(B, C vs D, E)

3) Ho: θ3 = µ2 – µ3 = 0
H1: θ3 = µ2 – µ3 ≠ 0
(B vs C)

4) Ho: θ4 = µ4 – µ5 = 0
H1: θ4 = µ4 – µ5 ≠ 0
(D vs E)

Kontras ortogonal dan koefisiennya:

Koefisien kontras
k Kontras θk
ortogonal

1 θ1 = 4µ1 – µ2 – µ3 – µ4 – µ5 4 -1 -1 -1 -1

2 θ2 = µ2 + µ3 – µ4 – µ5 0 1 1 -1 -1

3 θ3 = µ2 – µ3 0 1 -1 0 0

4 θ4 = µ4 – µ5 0 0 0 1 -1

2
Hasil panen hipotetis dari 5 genotipa di atas adalah sbb (ton/ha)

Kelompok
Genotipa
1 2 3 4

A 1.2 1.5 1.8 1.6

B 1.4 2.1 3 2.8

C 2 3.4 3.7 3.8

D 3.7 4.3 4.9 4.7

E 2.6 3.6 3.9 3.6

Untuk menjawab pertanyan penelitian dan untuk membuktikan hipotesisnya, digunakan


aplikasi R dengan tahapan dan penjelasan sbb:
Catataan:
Eksekusi R dapat dilakukan dengan cara menyalin bagian kode atau script R yang ada dalam
makalah dan menempelkannya pada koncol R dalam Rstudio. Dapat juga digunakan file kode R
yang disertakan bersama makalah ini. Peserta diharapkan mampu megidentifikasi bagian mana
yang merupkan kode R untuk disalin dan diaplikasikan pada Rstudio.
##############################
# Membersihkan memori R Studio dan mengetahui folder kerja:
options(scipen=999) # Untuk mencegah R agar tidak menggunakan scientific notation
rm(list=ls()) # membersihkan memori R Studi
getwd() # Memeriksa folder saat ini
list.files() # Memeriksa nama-nama file dalam folder

## ANALISIS DATA GENOTIPA DARI BUKU PAK SUSILO DENGAN R

## Format asli data dalam bentuk Excel adalah sbb:

#GENOTIPA Rep1 Rep2 Rep3 Rep4


# A 1,2 1,5 1,8 1,6
# B 1,4 2,1 3 2,8
# C 2 3,4 3,7 3,8
# D 3,7 4,3 4,9 4,7

3
# E 2,6 3,6 3,9 3,6

# Data dengan format tsb menyebabkan error jika dieksekusi dalam R


# karena R mengharuskan setiap baris hanya berisi satu pengamatan
# dan setiap kolom hanya berisi satu variabel

## AGAR DAPAT DIANALISIS DENGAN R TANPA ERROR MAKA HARUS DISUSUN ULANG
## DENGAN MENGGUNAKAN PAKET "tidyr"

# if (!require(openxlsx)) install.packages('openxlsx') ===> Jika perlu, install pa


ketnya
# JIka paket sudah terpasang maka R tidak akan menginstall ulang
# Paket 'openxlsx' diperlukan untuk membuka file data yang berbentuk Excel
# Pastikan bahwa file data ada dalam folder yang sama dengan kode
# library(openxlsx) =====> mengaktifkan paket yang sudah terpasang di komputer

if (!require(openxlsx)) install.packages('openxlsx')

## Loading required package: openxlsx

library(openxlsx)
setwd("G:/My Drive/Webinar 2020/R_Webinar 2020/Presentasi")
kontras <- read.xlsx("GENOTIPA.xlsx",1)
kontras

## GENOTIPA Rep1 Rep2 Rep3 Rep4


## 1 A 1.2 1.5 1.8 1.6
## 2 B 1.4 2.1 3.0 2.8
## 3 C 2.0 3.4 3.7 3.8
## 4 D 3.7 4.3 4.9 4.7
## 5 E 2.6 3.6 3.9 3.6

# Aktifkan "tidyr"
if (!require(tidyr)) install.packages('tidyr')

## Loading required package: tidyr

library("tidyr")

# Fungsi cbind() untuk menambah kolom baru

kontras2 <- cbind(GENOTIPA = rownames(kontras), kontras)


kontras2

## GENOTIPA GENOTIPA Rep1 Rep2 Rep3 Rep4


## 1 1 A 1.2 1.5 1.8 1.6
## 2 2 B 1.4 2.1 3.0 2.8
## 3 3 C 2.0 3.4 3.7 3.8
## 4 4 D 3.7 4.3 4.9 4.7
## 5 5 E 2.6 3.6 3.9 3.6

4
# Agar tidak error ketika dianalisis dengan R, diatur agar "tidy"
# Dari data set di atas, hanya dipilih kolom 2 hingga 6

kontras3 <- kontras2[,2:6]


kontras3

## GENOTIPA Rep1 Rep2 Rep3 Rep4


## 1 A 1.2 1.5 1.8 1.6
## 2 B 1.4 2.1 3.0 2.8
## 3 C 2.0 3.4 3.7 3.8
## 4 D 3.7 4.3 4.9 4.7
## 5 E 2.6 3.6 3.9 3.6

# Data set baru ini diberi nama kontras4 DENGAN NAMA VARIABEL
# "GENOTIPA" SEBAGAI PERLAKUAN (INDEPENDENT VARIABLE)
# "TON" SEBAGAI HASIL (DEPENDENT VARIABLE)
# DIURUT SESUAI ULANGAN ATAU REP

kontras4 <- gather(kontras3,


key = "KELOMPOK",
value = "TON",
-GENOTIPA)
kontras4

## GENOTIPA KELOMPOK TON


## 1 A Rep1 1.2
## 2 B Rep1 1.4
## 3 C Rep1 2.0
## 4 D Rep1 3.7
## 5 E Rep1 2.6
## 6 A Rep2 1.5
## 7 B Rep2 2.1
## 8 C Rep2 3.4
## 9 D Rep2 4.3
## 10 E Rep2 3.6
## 11 A Rep3 1.8
## 12 B Rep3 3.0
## 13 C Rep3 3.7
## 14 D Rep3 4.9
## 15 E Rep3 3.9
## 16 A Rep4 1.6
## 17 B Rep4 2.8
## 18 C Rep4 3.8
## 19 D Rep4 4.7
## 20 E Rep4 3.6

5
# Supaya lebih ringkas dalam koding, kontras4 diberi nama baru "df"
df = kontras4
df

## GENOTIPA KELOMPOK TON


## 1 A Rep1 1.2
## 2 B Rep1 1.4
## 3 C Rep1 2.0
## 4 D Rep1 3.7
## 5 E Rep1 2.6
## 6 A Rep2 1.5
## 7 B Rep2 2.1
## 8 C Rep2 3.4
## 9 D Rep2 4.3
## 10 E Rep2 3.6
## 11 A Rep3 1.8
## 12 B Rep3 3.0
## 13 C Rep3 3.7
## 14 D Rep3 4.9
## 15 E Rep3 3.9
## 16 A Rep4 1.6
## 17 B Rep4 2.8
## 18 C Rep4 3.8
## 19 D Rep4 4.7
## 20 E Rep4 3.6

# SEKARANG SET DATA YANG BERNAMA "df" telah "tidy" dan siap untuk diolah dengan R

#############################################################################

## Membuat ANOVA RANCANGAN ACAK KELOMPOK (RAK)


## Ada beberapa cara menghasilkan ANOVA RAK

# Cara 1
RAK1<-aov(TON ~ factor(KELOMPOK) + factor(GENOTIPA), df)
summary(RAK1)

## Df Sum Sq Mean Sq F value Pr(>F)


## factor(KELOMPOK) 3 4.864 1.621 24.14 2.27e-05 ***
## factor(GENOTIPA) 4 19.282 4.820 71.77 2.82e-08 ***
## Residuals 12 0.806 0.067
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

6
# Cara 2

RAK2 <- aov(TON ~ KELOMPOK + GENOTIPA, data = df)


summary(RAK2)

## Df Sum Sq Mean Sq F value Pr(>F)


## KELOMPOK 3 4.864 1.621 24.14 2.27e-05 ***
## GENOTIPA 4 19.282 4.820 71.77 2.82e-08 ***
## Residuals 12 0.806 0.067
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

# Cara 3
RAK3 = aov(TON ~ KELOMPOK + GENOTIPA, data = df)
summary(RAK3)

## Df Sum Sq Mean Sq F value Pr(>F)


## KELOMPOK 3 4.864 1.621 24.14 2.27e-05 ***
## GENOTIPA 4 19.282 4.820 71.77 2.82e-08 ***
## Residuals 12 0.806 0.067
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

#############################################################################
# Sekedar untuk membandingkan, dianalisis dengan RAL
## Membuat ANOVA RANCANGAN ACAK LENGKAP (RAL)
## Ada beberapa cara menghasilkan ANOVA RAL

# Cara 1
RAL1<-aov(TON ~ factor(GENOTIPA), df)
summary(RAL1)

## Df Sum Sq Mean Sq F value Pr(>F)


## factor(GENOTIPA) 4 19.28 4.820 12.75 0.000101 ***
## Residuals 15 5.67 0.378
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

# Cara 2

RAL2 <- aov(TON ~ GENOTIPA, data = df)


summary(RAL2)

## Df Sum Sq Mean Sq F value Pr(>F)


## GENOTIPA 4 19.28 4.820 12.75 0.000101 ***
## Residuals 15 5.67 0.378
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

7
# Cara 3
RAL3 = aov(TON ~ GENOTIPA, data = df)
summary(RAL3)

## Df Sum Sq Mean Sq F value Pr(>F)


## GENOTIPA 4 19.28 4.820 12.75 0.000101 ***
## Residuals 15 5.67 0.378
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

#############################################################################
# Karena pengaruh KELOMPOK atau BLOK signifikan maka selanjutnya RAK digunakan

# Dalam Uji Kontras Ortogonal, faktor GENOTIPA akan dipartisi ke dalam 4 kontras
sbb:

# Pertama, kita periksa variabel-variabelnya menggunakan paket 'lsr' dan 'cars'

if (!require(lsr)) install.packages('lsr')

## Loading required package: lsr

library(lsr)

if(!require(car))install.packages('car')

## Loading required package: car

## Loading required package: carData

if(!require(lsmeans))install.packages("lsmeans")

## Loading required package: lsmeans

## Loading required package: emmeans

## The 'lsmeans' package is now basically a front end for 'emmeans'.


## Users are encouraged to switch the rest of the way.
## See help('transition') for more information, including how to
## convert old 'lsmeans' objects and scripts to work with 'emmeans'.

if(!require(multcomp))install.packages("multcomp")

## Loading required package: multcomp

## Loading required package: mvtnorm

## Loading required package: survival

## Loading required package: TH.data

## Loading required package: MASS

8
##
## Attaching package: 'TH.data'

## The following object is masked from 'package:MASS':


##
## geyser

library(lsmeans)
library(car)

df$GENOTIPA = factor(df$GENOTIPA,
levels=unique(df$GENOTIPA))
boxplot(TON ~ GENOTIPA,
data = df,
ylab="Produksi Ton/ha",
xlab="GENOTIPA")

levels(df$GENOTIPA)

## [1] "A" "B" "C" "D" "E"

# DEFINE CONTRASTS

contrast1 = c(4, -1, -1, -1, -1)


contrast2 = c(0, 1, 1, -1, -1)
contrast3 = c(0, 1, -1, 0, 0)
contrast4 = c(0, 0, 0, 1, -1)

9
# Gunakan fungsi "cbind" untuk menggabung 4 contrast tsb menjadi matriks

Matriks = cbind(contrast1, contrast2, contrast3, contrast4)

# Kita fungiskan Matriks sebagai "object"

contrasts(df$GENOTIPA) = Matriks

CList = list("contrast1" = 1,
"contrast2" = 2,
"contrast3" = 3,
"contrast4" = 4)

RAK_Kontras<-aov(TON ~ KELOMPOK + GENOTIPA, df)


summary(RAK_Kontras)

## Df Sum Sq Mean Sq F value Pr(>F)


## KELOMPOK 3 4.864 1.621 24.14 2.27e-05 ***
## GENOTIPA 4 19.282 4.820 71.77 2.82e-08 ***
## Residuals 12 0.806 0.067
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

summary(RAK_Kontras, split=list(GENOTIPA=CList))

## Df Sum Sq Mean Sq F value Pr(>F)


## KELOMPOK 3 4.864 1.621 24.14 2.27e-05 ***
## GENOTIPA 4 19.282 4.820 71.77 2.82e-08 ***
## GENOTIPA: contrast1 1 10.585 10.585 157.59 2.92e-08 ***
## GENOTIPA: contrast2 1 5.176 5.176 77.06 1.44e-06 ***
## GENOTIPA: contrast3 1 1.620 1.620 24.12 0.000359 ***
## GENOTIPA: contrast4 1 1.901 1.901 28.31 0.000182 ***
## Residuals 12 0.806 0.067
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

############################################################################

# Kesimpulan

# 1. Respon genotipa lokal (µ1) berbeda dengan genotipa-genotipa non-lokal.

# 2. Respons genotipa-genotipa unggul tahan penyakit (µ2, µ3) berbeda


# dengan respons genotipa-genotipa unggul tahan penyakit dan hama (µ4, µ5)

# 3. Respons genotipa unggul tahan penyakit P1 (µ2) berbeda dengan


10
# genotipa unggul tahan penyakit P2 (µ3)

# 4. Respons genotipa unggul tahan penyakit P1 dan hama (µ4) berbeda


# dengan respons genotipa unggul tahan penyakit P2 dan hama (µ5)

11

Anda mungkin juga menyukai