Saat melakukan analisis data, kira-kira apa yang ada di benak Sobat Exsight terkait distribusi data?
Distribusi data merupakan suatu aspek penting yang dapat mempengaruhi hasil analisis data. Namun bagaimana cara kita memastikan bahwa distribusi data yang kita gunakan telah tepat atau belum?
Nah pada artikel ini, kita akan membahas lebih lanjut terkait Penentuan Jenis Distribusi Data, adapun aplikasi yang digunakan pada tutorial kali ini yaitu Python. Yuk simak artikel ini dengan seksama yaa!
Distribusi Data
Secara definisi distribusi data adalah suatu cara yang menggambarkan frekuensi munculnya nilai-nilai tertentu dalam kumpulan data serta menggambarkan sebaran nilai-nilai dalam kumpulan data. Visualisasi distribusi data dapat dilakukan dengan berbagai grafik seperti histogram, boxplot, atau density plot.
Pemahaman terkait jenis distribusi data sangatlah penting, dikarenakan pemilihan yang tepat akan mempengaruhi hasil analisis yang diperoleh. Misalnya, jika data diambil dari distribusi normal, maka hasil analisis yang menggunakan distribusi normal akan lebih akurat dan dapat diandalkan. Sebaliknya, jika distribusi data yang digunakan salah, hasil analisis dapat menjadi tidak akurat atau bahkan menyesatkan.
Tutorial Python
Studi Kasus
Data yang akan kita gunakan pada tutorial kali ini yaitu data Fastfood Nutrition , yang didapatkan dari situs Kaggle
* Data terdiri atas 17 variabel dan 516 observasi.
Berdasarkan 17 variabel yang tersedia, selanjutnya dilakukan data cleaning dengan hanya mengambil 6 variabel saja yang menjadi fokus dalam penentuan jenis distribusi yaitu:
Variabel calories, total_fat, cholestrol, sodium, total_carb, dan sugar
Load Library Python
Tahapan paling awal sebelum running syntax di Python yaitu melakukan load library. Apabila kamu masih belum memiliki library untuk penentuan jenis distribusi, maka dapat menginstall terlebih dahulu dengan cara
pip install (nama library nya)
Adapun beberapa library yang digunakan terdiri atas:
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from scipy import stats
from scipy.stats import kstest
from fitter import Fitter, get_common_distributions, get_distributions
Load Data
Tahapan selanjutnya yaitu melakukan load data di Python. Data yang diinput diberi nama sebagai data yang berasal dari file Fastfood Nutrition. Perlu diperhatikan untuk jenis file data yang diinput dalam format CSV, hal ini dengan tujuan untuk mempermudah pengguna. Syntax yang digunakan adalah sebagai berikut
#Import Data
dataset =pd.read_csv("Fastfood Nutrition.csv")
dataset
Visualisasi Histogram
Penentuan jenis distribusi data dapat dilakukan secara visual berdasarkan grafik Histogram sebaagai berikut.
dataset.hist(bins=30, figsize=(12,12), density=True)
plt.show()
Berdasarkan visualisasi histogram terlihat bahwa untuk seluruh variabel histogram tidak berbentuk seperti lonceng, sehingga secara visual dapat dikatakan data tidak berdistribusi Normal.
Uji Kolmogorov-Smirnov
Pengidentifikasian distribusi data secara visual, seringkali terdapat subjektifitas antara satu peneliti dengan peneliti lainnya. Sehingga untuk lebih memastikan lagi, maka diperlukan pengujian, dalam hal ini pengujian yang digunakan adalah uji Kolmogorov-Smirnov. Hipotesis yang digunakan untuk pengujian ini adalah sebagai berikut.
H0 : Data Berdistribusi Normal
H1 : Data Tidak Berdistribusi Normal
Apabila dari pengujian Kolmogorov-Smirnov, p-value bernilai lebih dari 0,5 maka diambil keputusan Terima H0 artinya data berdistribusi normal.
# Uji Kolmogorov-Smirnov (kstest)
ks_calories = kstest(dataset['calories'], 'norm')
ks_total_fat = kstest(dataset['total_fat'], 'norm')
ks_cholesterol = kstest(dataset['cholesterol'], 'norm')
ks_sodium = kstest(dataset['sodium'], 'norm')
ks_total_carb= kstest(dataset['total_carb'], 'norm')
ks_sugar = kstest(dataset['sugar'], 'norm')
print(ks_calories)
print(ks_total_fat)
print(ks_cholesterol)
print(ks_sodium)
print(ks_total_carb)
print(ks_sugar)
Berdasarkan hasil pengujian Kolmogorov-Smirnov, p-value untuk variabel calories, total_fat, cholesterol, sodium, total_carb, dan sugar bernilai kurang dari 0.05 maka diambil keputusan TOLAK H0 artinya data TIDAK BERDISTRIBUSI NORMAL
Jenis-Jenis Distribusi
Tahapan selanjutnya, dikarenakan variabel-variabel tidak ada yang berdistribusi Normal, maka dilanjutkan pengidentifikasian dengan jenis-jenis distribusi lainnya. Adapun jenis distribusi yang akan menjadi acuan adalah sebagai berikut.
#Beberapa Distribusi yang umum Digunakan
get_common_distributions()
Identifikasi Distribusi
Berdasarkan jenis-jenis distribusi yang telah dipaparkan sebelumnya, selanjutnya dilakukan pengidentifikasi jenis distribusi masing-masing variabel.
Variabel Calories
#Visualisasi Data Untuk Setiap Distribusi (Ditampilkan 5 Terbaik)
fage = Fitter(dataset['calories'],
distributions=get_common_distributions())
fage.fit()
fage.summary()
Secara Visualisasi terlihat bahwa kurva dari distribusi Rayleight paling pas dalam menyesuaikan bentuk data dari variabel Calories. Namun hal tersebut masih perlu dipastikan lagi berdasarkan perhitungan nilai Sum Square Error.
#Menentukan Distribusi Terbaik berdasarkan Sum square Error Terkecil
fcalories.get_best(method = 'sumsquare_error')
Berdasarkan nilai Sum Square Error terkecil, didapatkan hasil bahwa untuk variabel Calories paling sesuai berdistribusi Rayleight, dengan nilai parameter lokasi yaitu 38,498 dan parameter skala yaitu 401,302. Selanjutnya dapat ditampilkan visualisasi untuk variabel Calories dengan kurva distribusi Rayleight yaitu sebagai berikut.
#Visualisasi Variabel Calories dengan Distribusi Rayleigh
fcalories_rayleigh= Fitter(dataset['calories'],
distributions='rayleigh')
fcalories_rayleigh.fit()
fcalories_rayleigh.summary()
Variabel-Variabel Lainnya
Selanjutnya dengan menggunakan cara yang sama seperti sebelumnya, maka dapat ditentukan distribusi dari variabel-variabel lainnya adalah sebagai berikut.
Referensi
https://www.datainsightonline.com/post/how-to-find-the-distribution-that-fits-your-data-best
Sekian penjelasan terkait Penentuan Jenis Distribusi Data dengan Python. Jika masih terdapat hal-hal yang dibingungkan bisa langsung saja ramaikan kolom komentar atau hubungi admin melalui tombol bantuan di kanan bawah. Stay tuned di website https://exsight.id/blog/ agar tidak ketinggalan artikel-artikel menarik lainnya.
Pingback: Distribusi Normal Pada Data #1 - Exsight