Lewati ke konten utama

Fungsi R sd(): Simpangan Baku di R

Pelajari cara mengukur variabilitas dalam data Anda menggunakan fungsi R sd(). Temukan contoh praktis dan teknik penting untuk menangani nilai hilang dan data berkelompok.
Diperbarui 28 Sep 2026  · 5 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Simpangan baku adalah salah satu cara paling umum untuk merangkum seberapa menyebar data Anda. Di R, fungsi sd() memberi Anda cara cepat untuk menghitung ukuran variabilitas ini, baik saat Anda bekerja dengan vektor, data frame, maupun data berkelompok. 

Dalam artikel ini, saya akan mengulas dasar-dasar penggunaan sd() di R, membahas cara menangani nilai hilang, dan menunjukkan cara menghitung simpangan baku lintas kelompok menggunakan fungsi seperti tapply() dan paket seperti dplyr.

Apa yang Dilakukan sd() di R?

Di R, fungsi sd() dari base R menghitung simpangan baku dari vektor numerik atau kolom data frame. Fungsi ini mengukur seberapa jauh nilai dalam data Anda menyimpang dari mean, sehingga memberi gambaran tentang variabilitas atau dispersi.

Jika Anda sudah familier dengan konsep varians, simpangan baku hanyalah akar kuadratnya dan, karena cara penghitungannya (mengambil akar kuadrat dari rata-rata deviasi kuadrat), simpangan baku tetap berada pada skala yang sama dengan data asli. Ini membuatnya lebih mudah diinterpretasikan secara praktis.

Contoh Sederhana sd()

Misalkan Anda memiliki sekumpulan angka dan ingin mengetahui seberapa besar penyimpangannya dari rata-rata.

Berikut cara melakukannya di R:

exam_scores <- c(75, 80, 85, 90, 95) 
sd(exam_scores) 

Output memberi tahu Anda simpangan baku, yang mengkuantifikasi jarak rata-rata tiap nilai dari mean.

Anda dapat menggunakan sd() dengan vektor numerik apa pun, termasuk integer, double, atau hasil perhitungan. Anda mungkin tahu bahwa R memperlakukan vektor logika sebagai numerik (TRUE sebagai 1, FALSE sebagai 0), jadi fungsi sd() secara teknis dapat bekerja pada vektor logika (silakan coba jika ingin), tetapi konsep simpangan baku paling bermakna untuk data numerik kontinu.

Menangani Nilai Hilang dengan sd()

Dataset dunia nyata sering mengandung nilai hilang, jadi ini patut disebutkan: Jika data Anda memuat nilai NA, sd() akan mengembalikan NA secara bawaan.

Pertimbangkan contoh berikut:

heights <- c(170, 175, NA, 180, 185)
sd(heights)

Hasilnya adalah NA.

Untuk mengabaikan nilai hilang dan menghitung simpangan baku dari angka yang tersedia, gunakan argumen na.rm = TRUE. Atau, Anda dapat membersihkan nilai NA dari dataset Anda, tetapi saya menyarankan itu hanya jika memang masuk akal.

sd(heights, na.rm = TRUE) 

Sekarang Anda akan mendapatkan simpangan baku untuk 170, 175, 180, dan 185.

Menghitung Simpangan Baku untuk Data Frame di R

Anda dapat dengan mudah menghitung simpangan baku dari kolom tertentu dalam data frame menggunakan operator $. Misalkan Anda memiliki data frame bobot produk:

product_data <- data.frame( weight = c(1.2, 1.5, 1.3, 1.7, 1.4), price = c(10, 12, 11, 13, 12) ) 
sd(product_data$weight)

Ini memberi Anda simpangan baku dari kolom weight. Ingat, sd() dirancang untuk vektor numerik, bukan seluruh data frame. Selalu pilih kolom yang sesuai.

sd() dan Simpangan Baku Terkelompok

Sering kali, Anda ingin mengukur variabilitas dalam kelompok, seperti berdasarkan kategori, wilayah, atau faktor lainnya. R menyediakan beberapa cara untuk menghitung simpangan baku terkelompok. Saya akan menunjukkan tiga cara:

Menggunakan tapply() untuk simpangan baku terkelompok

Misalkan Anda memiliki data penjualan untuk berbagai wilayah dan menginginkan simpangan baku untuk tiap wilayah:

sales_amount <- c(200, 220, 210, 250, 240, 230) 
region <- c("North", "North", "South", "South", "North", "South") 
tapply(sales_amount, region, sd)

tapply() menerapkan sd() ke setiap kelompok yang didefinisikan oleh wilayah.

Menggunakan aggregate() untuk simpangan baku terkelompok

Jika Anda lebih suka hasil dalam data frame yang rapi, aggregate() bisa digunakan:

sales_data <- data.frame( region = c("North", "North", "South", "South", "North", "South"), amount = c(200, 220, 210, 250, 240, 230) ) 
aggregate(amount ~ region, data = sales_data, sd)

Ini menghasilkan data frame ringkasan dengan simpangan baku untuk tiap wilayah.

Menggunakan dplyr untuk simpangan baku terkelompok

Dengan paket dplyr, perhitungan terkelompok menjadi lebih mudah dibaca. Gunakan summarize() setelah melakukan grouping:

library(dplyr) 

sales_data %>% 
   group_by(region) %>% 
   summarize(sd_amount = sd(amount))

Pendekatan ini sangat berguna untuk dataset yang lebih besar atau saat merantai beberapa transformasi data. (Atau jika Anda sekadar lebih suka menggunakan operator pipe, seperti saya.)

Kesalahan Umum dan Tips

Bahkan fungsi sederhana seperti sd() bisa menimbulkan masalah jika Anda tidak berhati-hati. Berikut beberapa jebakan umum:

  • Data non-numerik: sd() hanya bekerja dengan vektor numerik. Jika data Anda mencakup karakter atau faktor, Anda akan mendapat error. Gunakan is.numeric() untuk memeriksa data Anda.

  • Nilai hilang: Satu NA saja akan membuat sd() mengembalikan NA. Selalu gunakan na.rm = TRUE jika Anda ingin mengabaikan nilai hilang.

  • Ukuran sampel kecil: sd() menggunakan n-1 pada penyebut (simpangan baku sampel). Untuk vektor dengan panjang 1, sd() mengembalikan NA, bukan 0.

Khusus yang terakhir itu, menurut saya, menarik. Ini perbedaan yang kurang dikenal, dan bisa mengecoh jika Anda beralih dari Python ke R, karena Python membagi dengan simpangan baku populasi, bukan sampel.

Variasi Berguna dan Fungsi Terkait di R

R menawarkan beberapa fungsi terkait untuk mengukur variabilitas dan merangkum data:

  • var(): Menghitung varians, yaitu kuadrat dari simpangan baku.

  • apply(), sapply(), lapply(): Berguna untuk menerapkan sd() pada baris atau kolom matriks dan data frame.

  • mad(): Menghitung median absolute deviation, ukuran variabilitas lain yang menarik dan lebih robust.

Izinkan saya menunjukkan sd() yang digunakan dengan apply(), seperti yang saya sebutkan: Berikut cara menggunakan apply() untuk mendapatkan simpangan baku tiap kolom dalam matriks. Seperti sebelumnya, saya akan membuat matriksnya langsung.

measurement_matrix <- matrix(1:9, nrow = 3) 
apply(measurement_matrix, 2, sd)

Ini mengembalikan simpangan baku untuk tiap kolom, memberi Anda gambaran cepat tentang variabilitas di berbagai variabel.

Kesimpulan

Fungsi sd() di R relatif sederhana (hanya satu baris kode). Namun jika Anda sering menggunakannya untuk laporan atau presentasi dan merasa sedikit samar soal detailnya, daftarlah ke jalur karier Statistician in R kami. Ada banyak nuansa dalam statistik dan analisis data, jadi pastikan Anda benar-benar memahami dasarnya.


Josef Waples's photo
Author
Josef Waples

Saya penulis dan editor data science dengan kontribusi pada artikel riset di jurnal ilmiah. Saya sangat tertarik pada aljabar linear, statistika, R, dan sejenisnya. Saya juga cukup sering bermain catur! 

Topik
R

Belajar R dengan DataCamp

Kursus

Pengantar R

4 jam
3.1M
Kuasai dasar analisis data di R, termasuk vectors, lists, dan data frames, lalu praktikkan R dengan data sets nyata.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat SelengkapnyaLihat Selengkapnya