Python'da veri nasıl dönüştürülür (log, kare kök, küp kök)
Birçok istatistiksel test, veri setlerinin normal şekilde dağıldığını varsayar. Ancak uygulamada çoğu zaman durum böyle değildir.
Bu sorunu çözmenin bir yolu, bir veri kümesindeki değerlerin dağılımını üç dönüşümden birini kullanarak dönüştürmektir:
1. Günlük dönüşümü: yanıt değişkenini y’den log(y)’ ye dönüştürün.
2. Karekök dönüşümü: Yanıt değişkenini y’den √y’ye dönüştürün.
3. Küp kök dönüşümü: yanıt değişkenini y’den y 1/3’e dönüştürün.
Bu dönüşümlerin gerçekleştirilmesiyle veri kümesi genel olarak daha normal dağılmış hale gelir.
Aşağıdaki örnekler bu dönüşümlerin Python’da nasıl gerçekleştirileceğini göstermektedir.
Python’da Günlük Dönüşümü
Aşağıdaki kod, bir değişken üzerinde logaritmik dönüşümün nasıl gerçekleştirileceğini ve verilerin orijinal dağılımını ve loga dönüştürülmüş dağılımını görüntülemek için yan yana grafiklerin nasıl oluşturulacağını gösterir:
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 ')
Log-dönüştürülmüş dağıtımın orijinal dağıtımdan nasıl daha normal dağıldığına dikkat edin.
Hala mükemmel bir “çan şekli” değil ama normal dağılıma orijinal dağılımdan daha yakın.
Python’da Karekök Dönüşümü
Aşağıdaki kod, bir değişken üzerinde karekök dönüşümünün nasıl gerçekleştirileceğini ve verilerin orijinal dağılımını ve karekök dönüştürülmüş dağılımını görüntülemek için yan yana grafiklerin nasıl oluşturulacağını gösterir:
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 ')
Karekök dönüştürülmüş verilerin orijinal verilere göre nasıl çok daha normal bir şekilde dağıldığına dikkat edin.
Python’da Küp Kök Dönüşümü
Aşağıdaki kod, bir değişken üzerinde küp kök dönüşümünün nasıl gerçekleştirileceğini ve verilerin orijinal dağılımını ve küp kök dönüştürülmüş dağılımını görüntülemek için yan yana grafiklerin nasıl oluşturulacağını gösterir:
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 ')
Küp kökü dönüştürülmüş verilerin, orijinal verilere göre nasıl çok daha normal bir şekilde dağıldığına dikkat edin.
Ek kaynaklar
Python’da Z puanları nasıl hesaplanır
Python’da veriler nasıl normalleştirilir?
İstatistikte normallik varsayımı nedir?