Rancangan Percobaan

Author

Muhammad Syafiq

Tujuan Praktikum

Setelah mengikuti praktikum ini, mahasiswa diharapkan mampu:

  • Memahami konsep dasar rancangan percobaan yang umum digunakan dalam penelitian kimia

  • Mengolah dan menganalisis data percobaan menggunakan R

  • Melakukan analisis ANOVA faktorial dan interpretasinya

  • Membuat interaction plot dan main effect plot

  • Mengenal rancangan Response Surface Methodology (RSM) dan Mixture Design secara praktis

Fokus praktikum ini adalah hands-on analysis menggunakan R.

1. Percobaan Satu Faktor

Percobaan satu faktor dilakukan ketika hanya satu faktor yang divariasikan, sementara faktor lain dikendalikan konstan.

Contoh

  • Faktor: waktu ekstraksi (30s, 45s, 60s)

  • Ulangan: 3 kali

Analisis di R

# contoh data
waktu <- factor(rep(c(30,45,60), each=3))
respon <- c(7.1,7.3,7.6, 5.2,5.4,4.5, 4.7,5.4,5.3)

data1 <- data.frame(waktu, respon)

# ANOVA satu arah
model1 <- aov(respon ~ waktu, data=data1)
summary(model1)
            Df Sum Sq Mean Sq F value   Pr(>F)    
waktu        2  10.14   5.070   35.37 0.000478 ***
Residuals    6   0.86   0.143                     
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2. Rancangan Faktorial

Rancangan faktorial memungkinkan semua kombinasi level faktor dicobakan secara simultan.

Contoh Kasus

  • Faktor A: Nisbah serat : semen (1:2, 1:3)

  • Faktor B: Konsentrasi katalis (0%, 2.5%, 5%)

  • Ulangan: 3 kali

Total unit percobaan = 2 × 3 × 3 = 18

Input Data Faktorial di R

# input data
Nisbah <- factor(rep(c("1:2","1:3"), each=9))
Katalis <- factor(rep(rep(c(0,2.5,5), each=3), 2))
Respon <- c(7.1,7.3,7.6,5.2,5.4,4.5,4.7,5.4,5.3,
6.0,5.5,5.8,1.5,1.1,1.2,1.5,1.6,2.0)


dataF <- data.frame(Nisbah, Katalis, Respon)

Analisis ANOVA Faktorial di R

modelF <- aov(Respon ~ Nisbah * Katalis, data=dataF)
summary(modelF)
               Df Sum Sq Mean Sq F value   Pr(>F)    
Nisbah          1  38.43   38.43  380.05 1.88e-10 ***
Katalis         2  42.90   21.45  212.13 4.33e-10 ***
Nisbah:Katalis  2   4.22    2.11   20.86 0.000124 ***
Residuals      12   1.21    0.10                     
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Interpretasi:

  • Nisbah signifikan → faktor utama A berpengaruh

  • Katalis signifikan → faktor utama B berpengaruh

  • Interaksi signifikan → efek katalis bergantung pada nisbah

Interaction Plot

interaction.plot(dataF$Katalis, dataF$Nisbah, dataF$Respon,
xlab="Katalis (%)",
ylab="Rata-rata Respon",
trace.label="Nisbah")

Jika garis tidak sejajar, maka terdapat indikasi interaksi.

Uji Lanjut (Post-hoc)

library(emmeans)


emm <- emmeans(modelF, ~ Nisbah * Katalis)
pairs(emm, adjust="tukey")
 contrast                        estimate   SE df t.ratio p.value
 1:2 Katalis0 - 1:3 Katalis0        1.567 0.26 12   6.034  0.0006
 1:2 Katalis0 - 1:2 Katalis2.5      2.300 0.26 12   8.859  <.0001
 1:2 Katalis0 - 1:3 Katalis2.5      6.067 0.26 12  23.367  <.0001
 1:2 Katalis0 - 1:2 Katalis5        2.200 0.26 12   8.474  <.0001
 1:2 Katalis0 - 1:3 Katalis5        5.633 0.26 12  21.698  <.0001
 1:3 Katalis0 - 1:2 Katalis2.5      0.733 0.26 12   2.825  0.1201
 1:3 Katalis0 - 1:3 Katalis2.5      4.500 0.26 12  17.332  <.0001
 1:3 Katalis0 - 1:2 Katalis5        0.633 0.26 12   2.439  0.2171
 1:3 Katalis0 - 1:3 Katalis5        4.067 0.26 12  15.663  <.0001
 1:2 Katalis2.5 - 1:3 Katalis2.5    3.767 0.26 12  14.508  <.0001
 1:2 Katalis2.5 - 1:2 Katalis5     -0.100 0.26 12  -0.385  0.9986
 1:2 Katalis2.5 - 1:3 Katalis5      3.333 0.26 12  12.839  <.0001
 1:3 Katalis2.5 - 1:2 Katalis5     -3.867 0.26 12 -14.893  <.0001
 1:3 Katalis2.5 - 1:3 Katalis5     -0.433 0.26 12  -1.669  0.5738
 1:2 Katalis5 - 1:3 Katalis5        3.433 0.26 12  13.224  <.0001

P value adjustment: tukey method for comparing a family of 6 estimates 

Untuk menampilkan pengelompokan huruf:

library(multcomp)
cld(emm, Letters=letters, adjust="tukey")
 Nisbah Katalis emmean    SE df lower.CL upper.CL .group
 1:3    2.5       1.27 0.184 12     0.69     1.84  a    
 1:3    5         1.70 0.184 12     1.12     2.28  a    
 1:2    2.5       5.03 0.184 12     4.46     5.61   b   
 1:2    5         5.13 0.184 12     4.56     5.71   b   
 1:3    0         5.77 0.184 12     5.19     6.34   b   
 1:2    0         7.33 0.184 12     6.76     7.91    c  

Confidence level used: 0.95 
Conf-level adjustment: sidak method for 6 estimates 
P value adjustment: tukey method for comparing a family of 6 estimates 
significance level used: alpha = 0.05 
NOTE: If two or more means share the same grouping symbol,
      then we cannot show them to be different.
      But we also did not show them to be the same. 

3. Pengantar Response Surface Methodology (RSM)

RSM digunakan ketika:

  • Faktor bersifat kuantitatif

  • Tujuan utama adalah optimasi respon

Model yang umum digunakan adalah model kuadratik.

Central Composite Design (CCD) di R

library(rsm)

ccd <- rsm::ccd(
  ~ x1 + x2,
  n0 = 4
)

ccd
   run.order std.order  x1.as.is  x2.as.is Block
1          1         8  0.000000  0.000000     1
2          2         6  0.000000  0.000000     1
3          3         3 -1.000000  1.000000     1
4          4         1 -1.000000 -1.000000     1
5          5         2  1.000000 -1.000000     1
6          6         5  0.000000  0.000000     1
7          7         4  1.000000  1.000000     1
8          8         7  0.000000  0.000000     1
9          1         2  1.414214  0.000000     2
10         2         4  0.000000  1.414214     2
11         3         1 -1.414214  0.000000     2
12         4         7  0.000000  0.000000     2
13         5         8  0.000000  0.000000     2
14         6         5  0.000000  0.000000     2
15         7         3  0.000000 -1.414214     2
16         8         6  0.000000  0.000000     2

Data are stored in coded form using these coding formulas ...
x1 ~ x1.as.is
x2 ~ x2.as.is

Contoh pemodelan:

# contoh respon simulasi
ccd$Y <- with(ccd, 95 + 2*x1 + 1.5*x2 - 2*x1^2 - 2.5*x2^2 + rnorm(nrow(ccd)))

model_rsm <- rsm(Y ~ SO(x1, x2), data=ccd)
summary(model_rsm)

Call:
rsm(formula = Y ~ SO(x1, x2), data = ccd)

            Estimate Std. Error  t value  Pr(>|t|)    
(Intercept) 95.15071    0.30619 310.7610 < 2.2e-16 ***
x1           1.65814    0.30619   5.4155 0.0002949 ***
x2           0.85372    0.30619   2.7882 0.0191777 *  
x1:x2       -0.14265    0.43301  -0.3294 0.7486252    
x1^2        -1.74440    0.30619  -5.6972 0.0001991 ***
x2^2        -2.55082    0.30619  -8.3309 8.242e-06 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Multiple R-squared:  0.9329,    Adjusted R-squared:  0.8994 
F-statistic: 27.81 on 5 and 10 DF,  p-value: 1.462e-05

Analysis of Variance Table

Response: Y
            Df Sum Sq Mean Sq F value    Pr(>F)
FO(x1, x2)   2 27.826  13.913 18.5507 0.0004314
TWI(x1, x2)  1  0.081   0.081  0.1085 0.7486252
PQ(x1, x2)   2 76.397  38.198 50.9312 5.709e-06
Residuals   10  7.500   0.750                  
Lack of fit  3  2.611   0.870  1.2458 0.3633508
Pure error   7  4.889   0.698                  

Stationary point of response surface:
       x1        x2 
0.4689678 0.1542295 

Stationary point in original units:
 x1.as.is  x2.as.is 
0.4689678 0.1542295 

Eigenanalysis:
eigen() decomposition
$values
[1] -1.738142 -2.557075

$vectors
          [,1]       [,2]
x1 -0.99617078 0.08742874
x2  0.08742874 0.99617078

Visualisasi Permukaan Respon

persp(model_rsm, ~ x1 + x2)

contour(model_rsm, ~ x1 + x2)

Box-Behnken Design

Box-Behnken digunakan sebagai alternatif CCD dengan jumlah run yang lebih sedikit.

library(rsm)

bbd <- rsm::bbd(
  ~ x1 + x2 + x3,
  n0 = 3
)

bbd
   run.order std.order x1.as.is x2.as.is x3.as.is
1          1         3       -1        1        0
2          2         7       -1        0        1
3          3        13        0        0        0
4          4        11        0       -1        1
5          5         1       -1       -1        0
6          6         2        1       -1        0
7          7        14        0        0        0
8          8         8        1        0        1
9          9         4        1        1        0
10        10         9        0       -1       -1
11        11        12        0        1        1
12        12        10        0        1       -1
13        13         6        1        0       -1
14        14        15        0        0        0
15        15         5       -1        0       -1

Data are stored in coded form using these coding formulas ...
x1 ~ x1.as.is
x2 ~ x2.as.is
x3 ~ x3.as.is

4. Mixture Experiment

Digunakan ketika faktor berupa proporsi dan memenuhi kendala:

\[ x_1 + x_2 + \dots + x_q = 1 \]

Contoh: formulasi campuran pelarut.

Simplex Lattice Design {3,2}

library(mixexp)


SLD <- SLD(3,2)
SLD
   x1  x2  x3
1 1.0 0.0 0.0
2 0.5 0.5 0.0
3 0.0 1.0 0.0
4 0.5 0.0 0.5
5 0.0 0.5 0.5
6 0.0 0.0 1.0