Pengenalan R

Uiwang Nur Thoriq

2025-09-05

Akses Data di sini:
https://docs.google.com/spreadsheets/d/1Vy3fnvyHrovL_0IK2r17H9hOX232P7a2G8GA-0-3iA0/edit?usp=sharing

Import data

Contoh data berat sapi Holstein (Torrie,1980)

# library(readxl) -> Jika ingin import data dari excel
# Jika belum punya instal dengan fungsi (hilangkan pagar):
# install.packages("readxl")
library(readxl)
DataSapi<-read_xlsx("D:/Rancob/DataFull.xlsx",sheet="Sapi") # Tempat file disesuaikan
DataSapi
## # A tibble: 14 × 2
##    `Berat Sapi Kontrol` `Berat Sapi Vitamin A`
##                   <dbl>                  <dbl>
##  1                  175                    142
##  2                  132                    311
##  3                  218                    337
##  4                  151                    262
##  5                  200                    302
##  6                  219                    195
##  7                  234                    253
##  8                  149                    199
##  9                  187                    236
## 10                  123                    216
## 11                  248                    211
## 12                  206                    176
## 13                  179                    249
## 14                  206                    214

Menampilkan ringkasan data

summary(DataSapi$`Berat Sapi Kontrol`)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   123.0   157.0   193.5   187.6   215.0   248.0
summary(DataSapi$`Berat Sapi Vitamin A`)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   142.0   202.0   226.0   235.9   259.8   337.0

Membuat Histogram

par(mfrow=c(1,2)) # Membagi halaman
hist(DataSapi$`Berat Sapi Kontrol`, main="Histogram Berat Sapi Kontrol", xlab="Berat", ylab="Frekuensi", col="lightblue", border="black")
hist(DataSapi$`Berat Sapi Vitamin A`, main="Histogram Berat Sapi Vitamin A", xlab="Berat", ylab="Frekuensi", col="lightgreen", border="black")

Membuat Boxplot

boxplot(DataSapi, 
        main="Boxplot Berat Sapi", 
        xlab="Kelompok", 
        ylab="Berat Sapi", 
        col=c("lightblue", "lightgreen"),
        border="black")

Membuat Bar Chart

library(dplyr)
Data1 <- data.frame(
  Kelompok = rep(c("Berat Sapi Kontrol", " Berat Sapi Vitamin A"), each = 14),
  Berat_Sapi = c(DataSapi$`Berat Sapi Kontrol`, DataSapi$`Berat Sapi Vitamin A`)
)

summary_data <- Data1 %>%
  group_by(Kelompok) %>%
  summarise(
    mean_berat = mean(Berat_Sapi),
    se_berat = sd(Berat_Sapi) / sqrt(n()),
    .groups = 'drop'
  )

library(ggplot2)
ggplot(summary_data, aes(x = Kelompok, y = mean_berat, fill = Kelompok)) +
  geom_bar(stat = "identity", width = 0.6, alpha = 0.8) +
  geom_errorbar(aes(ymin = mean_berat - se_berat, 
                    ymax = mean_berat + se_berat),
                width = 0.2, size = 0.8) +
  scale_fill_manual(values = c("Berat Sapi Kontrol" = "#3498db", " Berat Sapi Vitamin A" = "#e74c3c")) +
  labs(
    title = "Perbandingan Berat Sapi: Kontrol vs Vitamin A",
    subtitle = "Error bar menunjukkan Standard Error",
    x = "Kelompok Perlakuan",
    y = "Berat Sapi (kg)",
    fill = "Kelompok"
  ) +
  theme_minimal()

Uji t

Sebanyak 28 ekor sapi Holstein dikelompokkan menjadi dua, kelompok pertama sebanyak 14 ekor sapi diberi vitamin A, sedangkan kelompok kedua tidak diberi vitamin A sebagai kontrol. Digunakan uji t untuk mengetahui perbedaan berat kedua kelompok sapi karena hanya terdapat dua perlakuan.

Hipotesis:
\(H_0\) : Tidak ada perbedaan antara berat sapi kontrol dengan berat sapi vitamin A
\(H_1\) : Terdapat perbedaan antara berat sapi kontrol dengan berat sapi vitamin A

t.test(x = DataSapi$`Berat Sapi Kontrol`,
       y = DataSapi$`Berat Sapi Vitamin A`,
       mu = 0,
       conf.level = 0.95)
## 
##  Welch Two Sample t-test
## 
## data:  DataSapi$`Berat Sapi Kontrol` and DataSapi$`Berat Sapi Vitamin A`
## t = -2.7242, df = 23.306, p-value = 0.01201
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -84.92613 -11.64530
## sample estimates:
## mean of x mean of y 
##  187.6429  235.9286
db<-length( DataSapi$`Berat Sapi Kontrol`)+length( DataSapi$`Berat Sapi Vitamin A`)-2
qt(0.975,db)
## [1] 2.055529
qt(0.025,db,lower.tail = FALSE)
## [1] 2.055529

Berdasarkan perhitungan uji t diperoleh p-value sebesar 0,012 yang lebih kecil dari taraf nyata 5% dan nilai t-kritis sebesar 2,05 yang lebih kecil dari |t-hitung| = 2.72, sehingga tolak \(H_0\) Maka dapat disimpulkan bahwa pada taraf nyata 5%, terdapat perbedaan berat antara kelompok sapi yang diberi vitamin A dengan yang tidak diberi vitamin A.

Model Umum

Model umum dengan notasi matrix

\[ E(\underline{y})=X\underline{\beta}+\underline{ε}, \underline{ε} \sim N(0,\sigma^2I),\underline{y} \sim N(X\underline{\beta},\sigma^2I) \]

Dimana:
\(\underline{y}\) = vektor pengamatan respon.
\(X\) = matrix model yang berukuran nxp dimana n adalah banyaknya pengamatan dan p adalah banyaknya parameter dalam model.
\(\underline{\beta}\) = vektor koefisien model.
\(\underline{ε}\) = vektor dari error (komponen acak).
\(\sigma^2\) = galat percobaan.

Pengacakan

Misalkan diketahui banyaknya perlakuan yang dicobakan adalah 6 dengan masing-masing 4 ulangan. Maka dibutuhkan 6x4 = 24 unit percobaan.

Rand<-data.frame(
  Perlakuan = rep(1:6,4),
  AngkaRandom = runif(24)
)
Rand
##    Perlakuan AngkaRandom
## 1          1  0.58542860
## 2          2  0.21416264
## 3          3  0.71803321
## 4          4  0.43743365
## 5          5  0.03775364
## 6          6  0.63410490
## 7          1  0.54914131
## 8          2  0.27762238
## 9          3  0.85358911
## 10         4  0.92592455
## 11         5  0.13869141
## 12         6  0.66122437
## 13         1  0.94924984
## 14         2  0.57303067
## 15         3  0.08856329
## 16         4  0.27001403
## 17         5  0.06658735
## 18         6  0.78693293
## 19         1  0.51895229
## 20         2  0.99164252
## 21         3  0.34611815
## 22         4  0.32671240
## 23         5  0.80022708
## 24         6  0.92981580
sorted<-Rand[order(Rand$AngkaRandom),]
sorted
##    Perlakuan AngkaRandom
## 5          5  0.03775364
## 17         5  0.06658735
## 15         3  0.08856329
## 11         5  0.13869141
## 2          2  0.21416264
## 16         4  0.27001403
## 8          2  0.27762238
## 22         4  0.32671240
## 21         3  0.34611815
## 4          4  0.43743365
## 19         1  0.51895229
## 7          1  0.54914131
## 14         2  0.57303067
## 1          1  0.58542860
## 6          6  0.63410490
## 12         6  0.66122437
## 3          3  0.71803321
## 18         6  0.78693293
## 23         5  0.80022708
## 9          3  0.85358911
## 10         4  0.92592455
## 24         6  0.92981580
## 13         1  0.94924984
## 20         2  0.99164252

Menentukan Ulangan

Formula 1

\[ r\geq 2(Z_{\alpha/2}+Z_{\beta})^2(\frac{\sigma}{\delta})^2 \]

Misalkan pada penelitian sebelumnya diketahui bahwa \(\sigma=3\). Berapakah ulangan yang diperlukan pada \(\alpha= 5%\) dan \(\beta=10%\) dan maksimal perbedaan rataan yang diinginkan adalah 5 (\(\delta=5\))

Za<-qnorm(0.05/2,lower.tail = FALSE)
Zb<-qnorm(0.1,lower.tail = FALSE)
r<-2*((Za+Zb)^2)*(3/5)^2

# ceiling untuk membulatkan ke atas
ceiling(r)
## [1] 8
# Bisa juga dibuat dalam bentuk fungsi
Ulangan<-function(alpha,beta,sigma,delta)
{
  Za=qnorm(alpha/2,lower.tail=F)
  Zb=qnorm(beta,lower.tail=F)
  r=2*((Za+Zb)^2)*(sigma/delta)^2
  return(ceiling(r))
}
Ulangan(0.05,0.10,3,5)
## [1] 8

Formula 2

Formula ini berdasarkan derajat bebas galat, digunakan pada penentuan ulangan dalam RAL \[ t(r-1)\geq15 \]

Misalkan perlakuan yang ingin dicobakan sebanyak 6 perlakuan. Berapakah ulangan minimal untuk masing-masing percobaan?

t<-6
r<-(15/t)+1
ceiling(r)
## [1] 4