Cara mengubah data dengan python (log, akar kuadrat, akar kubus)
Banyak uji statistik mengasumsikan bahwa kumpulan data terdistribusi normal. Namun, hal ini sering kali tidak terjadi dalam praktiknya.
Salah satu cara untuk mengatasi masalah ini adalah dengan mengubah distribusi nilai dalam kumpulan data menggunakan salah satu dari tiga transformasi:
1. Transformasi log: ubah variabel respons dari y menjadi log(y) .
2. Transformasi akar kuadrat: Transformasikan variabel respon dari y menjadi √y .
3. Transformasi akar pangkat tiga: ubah variabel respon dari y menjadi y 1/3 .
Dengan melakukan transformasi ini, kumpulan data secara umum menjadi lebih terdistribusi secara normal.
Contoh berikut menunjukkan cara melakukan transformasi ini dengan Python.
Transformasi Log dengan Python
Kode berikut menunjukkan cara melakukan transformasi logaritmik pada variabel dan membuat plot berdampingan untuk menampilkan distribusi asli dan distribusi data yang ditransformasikan log:
import numpy as np import matplotlib. pyplot as plt #make this example reproducible n.p. random . seeds (0) #create beta distributed random variable with 200 values data = np. random . beta (a= 4 , b= 15 , size= 300 ) #create log-transformed data data_log = np. log (data) #define grid of plots fig, axs = plt. subplots (nrows= 1 , ncols= 2 ) #create histograms axs[0]. hist (data, edgecolor=' black ') axs[1]. hist (data_log, edgecolor=' black ') #add title to each histogram axs[0]. set_title (' Original Data ') axs[1].set_title(' Log-Transformed Data ')
Perhatikan bagaimana distribusi transformasi log lebih terdistribusi normal daripada distribusi aslinya.
Ini masih bukan “bentuk lonceng” yang sempurna tetapi lebih mendekati distribusi normal daripada distribusi aslinya.
Transformasi Akar Kuadrat dengan Python
Kode berikut menunjukkan cara melakukan transformasi akar kuadrat pada suatu variabel dan membuat plot berdampingan untuk menampilkan distribusi asli dan distribusi data yang ditransformasikan dengan akar kuadrat:
import numpy as np import matplotlib. pyplot as plt #make this example reproducible n.p. random . seeds (0) #create beta distributed random variable with 200 values data = np. random . beta (a= 1 , b= 5 , size= 300 ) #create log-transformed data data_log = np. sqrt (data) #define grid of plots fig, axs = plt. subplots (nrows= 1 , ncols= 2 ) #create histograms axs[0]. hist (data, edgecolor=' black ') axs[1]. hist (data_log, edgecolor=' black ') #add title to each histogram axs[0]. set_title (' Original Data ') axs[1].set_title(' Square Root Transformed Data ')
Perhatikan bagaimana data hasil transformasi akar kuadrat jauh lebih terdistribusi secara normal dibandingkan data asli.
Transformasi Akar Kubus dengan Python
Kode berikut menunjukkan cara melakukan transformasi akar pangkat tiga pada suatu variabel dan membuat plot berdampingan untuk menampilkan distribusi asli dan distribusi data yang diubah akar pangkat tiga:
import numpy as np import matplotlib. pyplot as plt #make this example reproducible n.p. random . seeds (0) #create beta distributed random variable with 200 values data = np. random . beta (a= 1 , b= 5 , size= 300 ) #create log-transformed data data_log = np. cbrt (data) #define grid of plots fig, axs = plt. subplots (nrows= 1 , ncols= 2 ) #create histograms axs[0]. hist (data, edgecolor=' black ') axs[1]. hist (data_log, edgecolor=' black ') #add title to each histogram axs[0]. set_title (' Original Data ') axs[1].set_title(' Cube Root Transformed Data ')
Perhatikan bagaimana data hasil transformasi akar pangkat tiga lebih terdistribusi secara normal dibandingkan data asli.
Sumber daya tambahan
Cara menghitung skor Z dengan Python
Cara menormalkan data dengan Python
Apa asumsi normalitas dalam statistik?