# Belajar Analisis Data – Hari 3: Jenis Data dan Tipe Variabel

- Link: https://legawa.com/teknologi/belajar-analisis-data-hari-3-jenis-data-dan-tipe-variabel/
- Published: 2026-11-13T09:00:00+07:00
- Author: Cahya

Sebelum menghitung apa pun, analis perlu tahu jenis data yang sedang dipegang, karena
jenis data menentukan operasi apa yang masuk akal. Rata-rata kode pos tidak punya
makna, sedangkan rata-rata berat badan punya makna. Catatan hari ketiga ini membahas
cara membedakan tipe variabel dan menuliskannya di SQL, pandas, dan R.

## Tujuan belajar

 * Membedakan data kategorik dan numerik, serta empat skala pengukuran menurut Stevens(
   1946).
 * Memilih statistik yang sesuai untuk setiap tipe variabel.
 * Menuliskan tipe variabel dengan benar di SQL, pandas, dan R.

## Konsep inti

Saat pertama mencoba analisis, saya mengira kolom yang berisi angka otomatis bisa
dirata-ratakan. Ternyata nomor rekam medis dan kode pos juga tersimpan sebagai angka,
tetapi fungsinya hanya sebagai label. Kesalahan ini kelihatan sepele, tetapi hasil
statistik yang dihasilkannya bisa menyesatkan.

![Diagram pohon jenis data: Data bercabang menjadi Kategorik (nominal, ordinal) 
dan Numerik (diskrit, kontinu), dengan contoh pada tiap cabang](https://i0.wp.com/
legawa.com/wp-content/uploads/2026/11/belajar-analisis-data-hari-3-ilustrasi.png?
resize=1000%2C560&ssl=1)

Pohon sederhana untuk contoh ini: kategorik dibagi menjadi nominal dan ordinal, 
numerik dibagi menjadi diskrit dan kontinu.

Stevens (1946) memperkenalkan empat skala pengukuran. Urutannya dari yang paling
sederhana sampai yang paling kaya operasi matematikanya adalah sebagai berikut.

 * **Nominal**: kategori tanpa urutan, misalnya golongan darah atau nama kota. Yang
   bisa dilakukan: menghitung frekuensi dan modus.
 * **Ordinal**: kategori dengan urutan, tetapi jarak antarurutan tidak diketahui
   sama, misalnya tingkat pendidikan (SD, SMP, SMA, sarjana). Yang bisa dilakukan:
   median dan persentil.
 * **Interval**: angka dengan jarak yang sama, tetapi tanpa nol mutlak, misalnya
   suhu dalam Celsius. Yang bisa dilakukan: selisih dan rata-rata.
 * **Rasio**: angka dengan jarak yang sama dan nol mutlak, misalnya berat badan,
   lama rawat inap, atau jumlah anak. Yang bisa dilakukan: semua operasi di atas,
   termasuk perbandingan dua kali lipat.

### Kategorik, numerik, diskrit, dan kontinu

Dua pembagian ini sering dipakai bersama, tetapi menjawab pertanyaan yang berbeda.
Skala Stevens menjawab operasi apa yang boleh dilakukan pada sebuah variabel. Pembagian
diskrit dan kontinu menjawab dari mana nilainya datang. Nilai diskrit dihitung, 
misalnya jumlah kunjungan (0, 1, 2, dan seterusnya). Nilai kontinu diukur dan bisa
berada di antara dua bilangan, misalnya tinggi badan 165,2 cm. Gambar pohon di atas
sengaja disederhanakan: interval dan rasio keduanya numerik, dan diskrit-kontinu
adalah pembagian lain di dalam kelompok numerik.

### Dari definisi ke kode

Contoh berikut memakai dataset penguins, yang tersedia sebagai dataset bawaan di
seaborn dan paket palmerpenguins di R. Dataset ini berisi pengukuran penguin di 
Kepulauan Palmer, Antartika, bukan data manusia. Kolom species dan island adalah
nominal, sedangkan body_mass_g adalah rasio dan kontinu. Versi SQL menghitung jumlah
dan rata-rata massa per kelas massa. Versi pandas dan R menunjukkan cara menyatakan
tipe variabel.

    ```wp-block-code
    -- SQL (PostgreSQL): kelas massa ordinal dibuat dari variabel numerik
    -- Ambang 3500 dan 4500 hanya contoh untuk latihan
    SELECT
      species,                                  -- kategorik nominal
      CASE
        WHEN body_mass_g < 3500 THEN '1 ringan'
        WHEN body_mass_g < 4500 THEN '2 sedang'
        ELSE '3 berat'                          -- awalan angka menjaga urutan
      END AS kelas_massa,                       -- kategorik ordinal hasil dari numerik
      COUNT(*) AS jumlah,
      AVG(body_mass_g) AS rata_rata_massa       -- rata-rata hanya masuk akal untuk rasio
    FROM penguins
    WHERE body_mass_g IS NOT NULL
    GROUP BY 1, 2
    ORDER BY 1, 2;
    ```

    ```wp-block-code
    # Python (pandas)
    import seaborn as sns
    import pandas as pd

    # Dataset bawaan seaborn; sumber asli: Horst, Hill, & Gorman (2020)
    penguins = sns.load_dataset("penguins")

    # Periksa tipe setiap kolom
    print(penguins.dtypes)

    # species: nominal, cukup tipe category tanpa urutan
    penguins["species"] = penguins["species"].astype("category")

    # Ordinal perlu urutan eksplisit agar 'ringan' < 'sedang' < 'berat'
    ukuran = pd.Categorical(["sedang", "ringan", "berat"],
                            categories=["ringan", "sedang", "berat"],
                            ordered=True)
    print(ukuran.min())   # 'ringan', karena urutannya sudah ditetapkan

    # body_mass_g: rasio, sehingga describe() dan rata-rata masuk akal
    print(penguins["body_mass_g"].describe())
    ```

    ```wp-block-code
    # R (tidyverse)
    library(tidyverse)
    library(palmerpenguins)   # dataset penguins, Horst, Hill, & Gorman (2020)

    # Nominal: hitung frekuensi per species
    penguins |>
      count(species)

    # Ordinal: di R disimpan sebagai factor dengan urutan eksplisit
    ukuran <- factor(c("sedang", "ringan", "berat"),
                     levels = c("ringan", "sedang", "berat"),
                     ordered = TRUE)
    ukuran[1] > ukuran[2]   # TRUE: 'sedang' lebih tinggi daripada 'ringan'

    # Rasio: rata-rata dan selisih masuk akal
    penguins |>
      summarise(rata_massa = mean(body_mass_g, na.rm = TRUE))
    ```

## Contoh kecil

**Contoh kecil.** Sebuah klinik ingin melaporkan kepuasan layanan dengan skor 1 
sampai 5, dari sangat tidak puas sampai sangat puas. Skor ini terlihat seperti angka,
tetapi jarak antara 1 dan 2 belum tentu sama dengan jarak antara 4 dan 5. Saya memperlakukannya
sebagai ordinal: laporan memakai median dan distribusi frekuensi, bukan rata-rata.
Jika tim tetap ingin rata-rata, asumsi itu harus ditulis di laporan.

## Kesalahan yang sering terjadi

**Waspadai empat hal ini:**

 * Menghitung rata-rata kolom kode pos, ID pelanggan, atau nomor urut. Kolom ini
   nominal meskipun berisi angka.
 * Menyimpan kategori sebagai angka 1, 2, 3 tanpa kamus data, lalu lupa arti setiap
   kodenya.
 * Menganggap skala Likert 1 sampai 5 sebagai interval tanpa menuliskannya sebagai
   asumsi.
 * Mengubah variabel kontinu menjadi kategori tanpa alasan yang jelas, sehingga 
   informasi ikut hilang.

## Latihan

 1. Tentukan skala Stevens untuk nomor rekam medis, lama rawat inap dalam hari, dan
    tingkat pendidikan (SD, SMP, SMA, sarjana).
 2. Suhu ruangan dapat dinyatakan dalam Celsius atau Kelvin. Mana yang termasuk rasio,
    dan mengapa?

**Kunci jawaban singkat:** (1) Nomor rekam medis adalah nominal, karena hanya label
identitas. Lama rawat inap adalah rasio dan diskrit, karena dihitung dalam hari 
dan nol berarti tidak ada rawat inap. Tingkat pendidikan adalah ordinal, karena 
ada urutan tetapi jarak antarjenjang tidak diukur. (2) Kelvin adalah rasio, karena
nol Kelvin adalah nol mutlak. Celsius adalah interval, karena nol Celsius hanya 
titik acuan air membeku dan tidak berarti tanpa suhu.

## Ringkasan

Tipe variabel menentukan statistik yang boleh dihitung, jadi pertanyaan tentang 
jenis data sebaiknya dijawab sebelum query pertama dijalankan. Besok kita membahas
statistik deskriptif, yaitu mean, median, dan modus, yang hanya bermakna setelah
tipe variabel jelas.

### Sumber bacaan

Horst, A. M., Hill, A. P., & Gorman, K. B. (2020). _palmerpenguins: Palmer Archipelago(
Antarctica) penguin data_. [https://doi.org/10.5281/zenodo.3960218](https://doi.org/10.5281/zenodo.3960218)

pandas documentation. “Categorical data”. [https://pandas.pydata.org/docs/user_guide/categorical.html](https://pandas.pydata.org/docs/user_guide/categorical.html)

Stevens, S. S. (1946). On the theory of scales of measurement. _Science_, 103(2684),
677–680.

Wickham, H., Çetinkaya-Rundel, M., & Grolemund, G. (2023). _R for Data Science_ (
2nd ed.). O’Reilly Media. [https://r4ds.hadley.nz/](https://r4ds.hadley.nz/)

**Navigasi seri Belajar Analisis Data**

 * Berikutnya: Hari 4, Statistik Deskriptif: Mean, Median, Modus (terbit 14 November
   2026 pukul 09.00 WIB)
 * Sebelumnya: Hari 2, [Merumuskan Pertanyaan Bisnis dan Metrik](https://legawa.com/teknologi/belajar-analisis-data-hari-2-merumuskan-pertanyaan-bisnis-dan-metrik/)
 * [Semua tulisan seri Belajar Analisis Data](https://legawa.com/tag/data-analyst/)
