R Markdown merupakan format dokumen yang menggabungkan teks, kode program R, dan hasil analisis dalam satu berkas. Dokumen ini dapat digunakan untuk menyusun laporan praktikum, penelitian, maupun dokumentasi analisis data. Kode dapat dijalankan langsung sehingga tabel dan grafik diperbarui ketika analisis dijalankan kembali.
R Markdown memiliki beberapa kegunaan, yaitu: 1. Menggabungkan uraian dan kode R dalam satu dokumen. 2. Menampilkan hasil perhitungan secara otomatis. 3. Menyajikan data dalam bentuk tabel dan grafik. 4. Mendokumentasikan tahapan analisis agar dapat diperiksa kembali. 5. Menghasilkan laporan dalam format HTML, Word, atau PDF.
Dokumen R Markdown terdiri atas tiga bagian utama: - YAML Header, untuk mengatur judul, penulis, tanggal, dan format keluaran. - Markdown, untuk menulis teks, judul, daftar, tabel, dan persamaan. - Code Chunk, untuk menuliskan serta menjalankan sintaks R.
YAML Header terletak pada bagian paling atas dokumen dan diapit tiga tanda hubung.
---
title: "Laporan Praktikum"
author: "Elisya"
date: "2026"
output: html_document
---
Keterangan: title menentukan judul, author
mencantumkan penulis, date mengatur tanggal, sedangkan
output menentukan format dokumen.
Tanda pagar (#) digunakan untuk membentuk tingkatan
judul. Semakin banyak tanda pagar, semakin rendah tingkat heading.
# Judul Utama
## Subjudul
### Sub-subbab
#### Bagian Pembahasan
Markdown menyediakan beberapa format teks.
| Keperluan | Sintaks | Tampilan |
|---|---|---|
| Tebal | **Teks** |
Teks |
| Miring | *Teks* |
Teks |
| Tebal dan miring | ***Teks*** |
Teks |
| Dicoret | ~~Teks~~ |
|
| Kode dalam kalimat | `mean()` |
mean() |
Paragraf baru dibuat dengan memberikan satu baris kosong di antara dua bagian teks.
Statistika digunakan untuk mengumpulkan dan mengolah data.
Hasil pengolahan dapat disajikan melalui tabel, grafik,
dan ukuran numerik.
Daftar tidak berurutan:
- Data numerik
- Data kategorik
- Data diskrit
- Data kontinu
Daftar berurutan:
1. Mengumpulkan data.
2. Memeriksa data.
3. Melakukan analisis.
4. Menarik kesimpulan.
Daftar bertingkat:
1. Analisis data
- Deskriptif
- Inferensial
2. Pemodelan
- Regresi sederhana
- Regresi berganda
Kutipan menggunakan tanda >.
> Data menjadi dasar dalam proses analisis statistik.
Garis pemisah menggunakan tiga tanda hubung.
---
Tautan ditulis dengan format [teks](alamat).
[Website R Project](https://www.r-project.org/)
Tabel Markdown menggunakan tanda garis vertikal (|) dan
tanda hubung (-).
| Variabel | Jenis Data |
|---|---|
| Umur | Numerik |
| Jenis Kelamin | Kategorik |
| Tinggi Badan | Numerik |
Hasil:
| Variabel | Jenis Data |
|---|---|
| Umur | Numerik |
| Jenis Kelamin | Kategorik |
| Tinggi Badan | Numerik |
| Keterangan | Kiri | Tengah | Kanan |
|:---|:---:|---:|---:|
| Contoh | A | B | C |
Rumus singkat ditulis dengan satu tanda dolar.
Rata-rata sampel dilambangkan dengan $\bar{x}$.
Hasil: Rata-rata sampel dilambangkan dengan \(\bar{x}\).
Persamaan terpisah ditulis dengan dua tanda dolar.
$$
\bar{x}=\frac{\sum_{i=1}^{n}x_i}{n}
$$
Hasil:
\[ \bar{x}=\frac{\sum_{i=1}^{n}x_i}{n} \]
Varians sampel:
\[ s^2=\frac{\sum_{i=1}^{n}(x_i-\bar{x})^2}{n-1} \]
Simpangan baku:
\[ s=\sqrt{\frac{\sum_{i=1}^{n}(x_i-\bar{x})^2}{n-1}} \]
Korelasi:
\[ r_{xy}= \frac{\sum_{i=1}^{n}(x_i-\bar{x})(y_i-\bar{y})} {\sqrt{\sum_{i=1}^{n}(x_i-\bar{x})^2 \sum_{i=1}^{n}(y_i-\bar{y})^2}} \]
| Sintaks | Hasil |
|---|---|
\\alpha |
\(\alpha\) |
\\beta |
\(\beta\) |
\\mu |
\(\mu\) |
\\sigma |
\(\sigma\) |
\\sum |
\(\sum\) |
\\sqrt{x} |
\(\sqrt{x}\) |
\\frac{a}{b} |
\(\frac{a}{b}\) |
\\neq |
\(\neq\) |
\\leq |
\(\leq\) |
\\geq |
\(\geq\) |
Code Chunk merupakan bagian untuk menuliskan dan menjalankan kode R.
Bagian ini diawali tiga tanda backtick dan {r}, kemudian
ditutup tiga tanda backtick.
print("Selamat belajar R Markdown!")
#> [1] "Selamat belajar R Markdown!"
| Opsi | Fungsi |
|---|---|
echo=TRUE |
Menampilkan kode dan hasil |
echo=FALSE |
Menyembunyikan kode |
eval=FALSE |
Tidak menjalankan kode |
include=FALSE |
Menjalankan kode tanpa menampilkan kode dan hasil |
message=FALSE |
Menyembunyikan pesan |
warning=FALSE |
Menyembunyikan peringatan |
results='hide' |
Menyembunyikan hasil teks |
fig.width=8 |
Mengatur lebar grafik |
fig.height=5 |
Mengatur tinggi grafik |
Contoh menampilkan kode dan hasil:
12 + 18
#> [1] 30
Contoh menyembunyikan kode:
#> [1] 85
Contoh tidak menjalankan kode:
summary(iris)
Contoh menjalankan kode tanpa menampilkan hasil:
a <- 18
b <- 6
penjumlahan <- a + b
pengurangan <- a - b
perkalian <- a * b
pembagian <- a / b
perpangkatan <- a^2
penjumlahan
#> [1] 24
pengurangan
#> [1] 12
perkalian
#> [1] 108
pembagian
#> [1] 3
perpangkatan
#> [1] 324
nama <- "Ziyad"
semester <- 5
nilai <- c(78, 85, 90, 88, 95)
nama
#> [1] "Ziyad"
semester
#> [1] 5
nilai
#> [1] 78 85 90 88 95
mean(nilai)
#> [1] 87.2
median(nilai)
#> [1] 88
min(nilai)
#> [1] 78
max(nilai)
#> [1] 95
var(nilai)
#> [1] 39.7
sd(nilai)
#> [1] 6.300794
summary(nilai)
#> Min. 1st Qu. Median Mean 3rd Qu. Max.
#> 78.0 85.0 88.0 87.2 90.0 95.0
Contoh pengolahan data menggunakan dataset iris, yang
berisi pengukuran karakteristik bunga dari beberapa spesies.
data("iris")
head(iris)
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> 1 5.1 3.5 1.4 0.2 setosa
#> 2 4.9 3.0 1.4 0.2 setosa
#> 3 4.7 3.2 1.3 0.2 setosa
#> 4 4.6 3.1 1.5 0.2 setosa
#> 5 5.0 3.6 1.4 0.2 setosa
#> 6 5.4 3.9 1.7 0.4 setosa
str(iris)
#> 'data.frame': 150 obs. of 5 variables:
#> $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
#> $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
#> $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
#> $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
#> $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
dim(iris)
#> [1] 150 5
names(iris)
#> [1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
summary(iris)
#> Sepal.Length Sepal.Width Petal.Length Petal.Width
#> Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100
#> 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300
#> Median :5.800 Median :3.000 Median :4.350 Median :1.300
#> Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199
#> 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800
#> Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500
#> Species
#> setosa :50
#> versicolor:50
#> virginica :50
#>
#>
#>
Statistik deskriptif digunakan untuk menggambarkan karakteristik data melalui ukuran pemusatan dan penyebaran.
ringkasan <- data.frame(
Variabel = names(iris)[1:4],
Rata_Rata = sapply(iris[1:4], mean),
Median = sapply(iris[1:4], median),
Minimum = sapply(iris[1:4], min),
Maksimum = sapply(iris[1:4], max),
Simpangan_Baku = sapply(iris[1:4], sd)
)
knitr::kable(
ringkasan,
digits = 3,
caption = "Statistik Deskriptif Dataset Iris"
)
| Variabel | Rata_Rata | Median | Minimum | Maksimum | Simpangan_Baku | |
|---|---|---|---|---|---|---|
| Sepal.Length | Sepal.Length | 5.843 | 5.80 | 4.3 | 7.9 | 0.828 |
| Sepal.Width | Sepal.Width | 3.057 | 3.00 | 2.0 | 4.4 | 0.436 |
| Petal.Length | Petal.Length | 3.758 | 4.35 | 1.0 | 6.9 | 1.765 |
| Petal.Width | Petal.Width | 1.199 | 1.30 | 0.1 | 2.5 | 0.762 |
Histogram digunakan untuk melihat bentuk distribusi frekuensi data numerik.
hist(
iris$Sepal.Length,
main = "Distribusi Panjang Sepal",
xlab = "Panjang Sepal",
ylab = "Frekuensi",
col = "lightblue",
border = "white"
)
Boxplot memperlihatkan median, kuartil, rentang data, dan kemungkinan pencilan.
boxplot(
Sepal.Length ~ Species,
data = iris,
main = "Panjang Sepal Berdasarkan Spesies",
xlab = "Spesies",
ylab = "Panjang Sepal",
col = c("lightblue", "lightgreen", "lightpink")
)
Scatterplot digunakan untuk mengamati pola hubungan antara dua variabel numerik.
plot(
iris$Sepal.Length,
iris$Petal.Length,
main = "Hubungan Panjang Sepal dan Petal",
xlab = "Sepal Length",
ylab = "Petal Length",
pch = 19,
col = "blue"
)
frekuensi <- table(iris$Species)
barplot(
frekuensi,
main = "Jumlah Pengamatan Setiap Spesies",
xlab = "Spesies",
ylab = "Frekuensi",
col = c("skyblue", "lightgreen", "salmon")
)
Package ggplot2 dapat digunakan untuk membuat grafik
dengan pengaturan tampilan yang lebih fleksibel.
if (!requireNamespace("ggplot2", quietly = TRUE)) {
install.packages("ggplot2")
}
library(ggplot2)
ggplot(iris, aes(x = Sepal.Length, y = Petal.Length,
color = Species)) +
geom_point(size = 2) +
labs(
title = "Hubungan Sepal Length dan Petal Length",
x = "Sepal Length",
y = "Petal Length",
color = "Spesies"
) +
theme_minimal()
Regresi linear berganda merupakan metode statistik untuk menjelaskan
hubungan satu variabel respons dengan dua atau lebih variabel prediktor.
Dalam contoh ini digunakan dataset iris.
Variabel yang digunakan:
| Simbol | Variabel | Keterangan |
|---|---|---|
| Y | Petal.Length | Panjang petal |
| X1 | Sepal.Length | Panjang sepal |
| X2 | Sepal.Width | Lebar sepal |
| X3 | Petal.Width | Lebar petal |
\[ Y_i=\beta_0+\beta_1X_{1i}+\beta_2X_{2i} +\beta_3X_{3i}+\varepsilon_i \]
Keterangan: \(Y_i\) adalah variabel respons, \(\beta_0\) adalah konstanta, \(\beta_j\) adalah koefisien regresi, \(X_{ji}\) adalah variabel prediktor, dan \(\varepsilon_i\) adalah galat.
data("iris")
data_analisis <- iris[, c(
"Petal.Length",
"Sepal.Length",
"Sepal.Width",
"Petal.Width"
)]
head(data_analisis)
#> Petal.Length Sepal.Length Sepal.Width Petal.Width
#> 1 1.4 5.1 3.5 0.2
#> 2 1.4 4.9 3.0 0.2
#> 3 1.3 4.7 3.2 0.2
#> 4 1.5 4.6 3.1 0.2
#> 5 1.4 5.0 3.6 0.2
#> 6 1.7 5.4 3.9 0.4
str(data_analisis)
#> 'data.frame': 150 obs. of 4 variables:
#> $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
#> $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
#> $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
#> $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
statistik <- data.frame(
Variabel = names(data_analisis),
Minimum = sapply(data_analisis, min),
Rata_Rata = sapply(data_analisis, mean),
Median = sapply(data_analisis, median),
Maksimum = sapply(data_analisis, max),
SD = sapply(data_analisis, sd)
)
knitr::kable(
statistik,
digits = 3,
caption = "Statistik Deskriptif Variabel Regresi"
)
| Variabel | Minimum | Rata_Rata | Median | Maksimum | SD | |
|---|---|---|---|---|---|---|
| Petal.Length | Petal.Length | 1.0 | 3.758 | 4.35 | 6.9 | 1.765 |
| Sepal.Length | Sepal.Length | 4.3 | 5.843 | 5.80 | 7.9 | 0.828 |
| Sepal.Width | Sepal.Width | 2.0 | 3.057 | 3.00 | 4.4 | 0.436 |
| Petal.Width | Petal.Width | 0.1 | 1.199 | 1.30 | 2.5 | 0.762 |
korelasi <- cor(data_analisis)
knitr::kable(
korelasi,
digits = 3,
caption = "Matriks Korelasi"
)
| Petal.Length | Sepal.Length | Sepal.Width | Petal.Width | |
|---|---|---|---|---|
| Petal.Length | 1.000 | 0.872 | -0.428 | 0.963 |
| Sepal.Length | 0.872 | 1.000 | -0.118 | 0.818 |
| Sepal.Width | -0.428 | -0.118 | 1.000 | -0.366 |
| Petal.Width | 0.963 | 0.818 | -0.366 | 1.000 |
Matriks korelasi digunakan untuk melihat arah dan kekuatan hubungan linear antarvariabel. Nilai korelasi berada pada rentang -1 sampai 1.
Model diestimasi menggunakan fungsi lm().
model <- lm(
Petal.Length ~ Sepal.Length + Sepal.Width + Petal.Width,
data = data_analisis
)
summary(model)
#>
#> Call:
#> lm(formula = Petal.Length ~ Sepal.Length + Sepal.Width + Petal.Width,
#> data = data_analisis)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -0.99333 -0.17656 -0.01004 0.18558 1.06909
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) -0.26271 0.29741 -0.883 0.379
#> Sepal.Length 0.72914 0.05832 12.502 <2e-16 ***
#> Sepal.Width -0.64601 0.06850 -9.431 <2e-16 ***
#> Petal.Width 1.44679 0.06761 21.399 <2e-16 ***
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 0.319 on 146 degrees of freedom
#> Multiple R-squared: 0.968, Adjusted R-squared: 0.9674
#> F-statistic: 1473 on 3 and 146 DF, p-value: < 2.2e-16
koef <- coef(model)
tabel_koef <- data.frame(
Parameter = names(koef),
Estimasi = as.numeric(koef)
)
knitr::kable(
tabel_koef,
digits = 4,
caption = "Estimasi Parameter Regresi"
)
| Parameter | Estimasi |
|---|---|
| (Intercept) | -0.2627 |
| Sepal.Length | 0.7291 |
| Sepal.Width | -0.6460 |
| Petal.Width | 1.4468 |
Persamaan model hasil estimasi mempunyai bentuk:
\[ \widehat{Y}= \hat{\beta}_0+\hat{\beta}_1X_1+ \hat{\beta}_2X_2+\hat{\beta}_3X_3 \]
Uji F digunakan untuk mengetahui apakah variabel prediktor secara bersama-sama berhubungan dengan variabel respons.
Hipotesis:
\[ H_0:\beta_1=\beta_2=\beta_3=0 \]
\[ H_1:\text{Minimal terdapat satu }\beta_j\neq 0 \]
Taraf signifikansi:
\[ \alpha=0.05 \]
hasil_anova <- anova(model)
knitr::kable(
hasil_anova,
digits = 4,
caption = "Tabel ANOVA Model Regresi"
)
| Df | Sum Sq | Mean Sq | F value | Pr(>F) | |
|---|---|---|---|---|---|
| Sepal.Length | 1 | 352.8662 | 352.8662 | 3468.5688 | 0 |
| Sepal.Width | 1 | 50.0224 | 50.0224 | 491.7052 | 0 |
| Petal.Width | 1 | 46.5838 | 46.5838 | 457.9047 | 0 |
| Residuals | 146 | 14.8529 | 0.1017 | NA | NA |
fstat <- summary(model)$fstatistic
p_value_f <- pf(
fstat[1], fstat[2], fstat[3],
lower.tail = FALSE
)
p_value_f
#> value
#> 6.976868e-109
Interpretasi keputusan:
if (p_value_f < 0.05) {
cat("p-value sebesar ", signif(p_value_f, 4),
" lebih kecil dari 0,05. H0 ditolak. Terdapat bukti bahwa setidaknya satu prediktor berhubungan secara signifikan dengan variabel respons.",
sep = "")
} else {
cat("p-value sebesar ", signif(p_value_f, 4),
" lebih besar atau sama dengan 0,05. H0 tidak ditolak. Belum terdapat bukti yang cukup bahwa prediktor secara bersama-sama berhubungan signifikan dengan respons.",
sep = "")
}
p-value sebesar 6.977e-109 lebih kecil dari 0,05. H0 ditolak. Terdapat bukti bahwa setidaknya satu prediktor berhubungan secara signifikan dengan variabel respons.
Uji t digunakan untuk menilai koefisien setiap variabel prediktor secara individual.
Hipotesis:
\[ H_0:\beta_j=0 \]
\[ H_1:\beta_j\neq 0 \]
hasil_t <- summary(model)$coefficients
knitr::kable(
hasil_t,
digits = 4,
caption = "Hasil Uji Parsial Koefisien Regresi"
)
| Estimate | Std. Error | t value | Pr(>|t|) | |
|---|---|---|---|---|
| (Intercept) | -0.2627 | 0.2974 | -0.8833 | 0.3785 |
| Sepal.Length | 0.7291 | 0.0583 | 12.5025 | 0.0000 |
| Sepal.Width | -0.6460 | 0.0685 | -9.4312 | 0.0000 |
| Petal.Width | 1.4468 | 0.0676 | 21.3987 | 0.0000 |
Koefisien determinasi menunjukkan proporsi variasi respons yang dapat dijelaskan oleh model.
\[ R^2=1-\frac{SSE}{SST} \]
r2 <- summary(model)$r.squared
adjusted_r2 <- summary(model)$adj.r.squared
knitr::kable(
data.frame(
Ukuran = c("R-squared", "Adjusted R-squared"),
Nilai = c(r2, adjusted_r2)
),
digits = 4,
caption = "Koefisien Determinasi"
)
| Ukuran | Nilai |
|---|---|
| R-squared | 0.9680 |
| Adjusted R-squared | 0.9674 |
Prediksi diperoleh menggunakan predict(). Residual
merupakan selisih antara nilai aktual dan nilai prediksi.
prediksi <- predict(model)
residual <- residuals(model)
hasil_prediksi <- data.frame(
Aktual = data_analisis$Petal.Length,
Prediksi = prediksi,
Residual = residual
)
knitr::kable(
head(hasil_prediksi, 10),
digits = 3,
caption = "Nilai Aktual, Prediksi, dan Residual"
)
| Aktual | Prediksi | Residual |
|---|---|---|
| 1.4 | 1.484 | -0.084 |
| 1.4 | 1.661 | -0.261 |
| 1.3 | 1.386 | -0.086 |
| 1.5 | 1.378 | 0.122 |
| 1.4 | 1.347 | 0.053 |
| 1.7 | 1.734 | -0.034 |
| 1.4 | 1.329 | 0.071 |
| 1.5 | 1.476 | 0.024 |
| 1.4 | 1.361 | 0.039 |
| 1.5 | 1.452 | 0.048 |
plot(
data_analisis$Petal.Length,
prediksi,
pch = 19,
col = "blue",
main = "Nilai Aktual dan Prediksi Petal Length",
xlab = "Nilai Aktual",
ylab = "Nilai Prediksi"
)
abline(a = 0, b = 1, col = "red", lwd = 2)
Titik yang semakin dekat dengan garis diagonal menunjukkan bahwa nilai prediksi semakin dekat dengan nilai aktual.
par(mfrow = c(2, 2))
plot(model)
par(mfrow = c(1, 1))
Grafik diagnostik digunakan untuk membantu memeriksa pola residual, normalitas, kesamaan varians, dan pengamatan yang berpengaruh. Hasilnya perlu ditafsirkan sesuai asumsi model regresi.
Dokumen R Markdown disimpan dengan ekstensi .Rmd. Pada
RStudio, pilih File, kemudian Save As,
lalu tentukan nama file.
Tombol Knit digunakan untuk menjalankan seluruh kode dalam dokumen dan menghasilkan keluaran berdasarkan format yang dipilih pada YAML Header.
rmarkdown::render(
"Modul_R_Markdown_Elisya.Rmd",
output_format = "html_document"
)
rmarkdown::render(
"Modul_R_Markdown_Elisya.Rmd",
output_format = "word_document"
)
rmarkdown::render(
"Modul_R_Markdown_Elisya.Rmd",
output_format = "pdf_document"
)
Pembuatan PDF memerlukan instalasi LaTeX, misalnya TinyTeX.
R Markdown merupakan fasilitas yang dapat digunakan untuk menyusun laporan analisis secara terintegrasi. Materi ini membahas pengenalan R Markdown, penulisan Markdown, pembuatan tabel dan persamaan, penggunaan Code Chunk, pengolahan data, visualisasi, serta penerapan regresi linear berganda.
Melalui fitur Knit, teks, kode, tabel, dan grafik dapat disusun menjadi dokumen keluaran secara otomatis. Dengan demikian, R Markdown membantu menghasilkan laporan yang sistematis, mudah diperbarui, dan mendukung analisis yang dapat direproduksi.