Giriş
Analizle uğraşan gerek akademik gerekse saha çalışanları verinin normal dağılım göstermediği durumlarda sıklıkla verinin normal dağılım dönüşümlerine başvurdukları bilinmekte ve görülmektedir. Normal dağılım sürekli olasılık dağılımlarından biridir. Geleneksel istatistik literatüründe özellikle parametrik test varsayımlarından birinin verinin normal dağılım gösterdiği varsayımıdır. Ancak genellikle biz uygulamada verinin normal dağılım göstermediğini biliriz. Peki bu durumda ne yaparız? Bu durumda yapılması gereken veriyi normal dağılıma uygun hale getirmektir. Peki ama nasıl? Öncelikle verinin dağılım yapısı histogramlarla, q-q, p-p ve kutu grafiklerle veya en kesin sonuç normalite testleriyle ortaya konulabilir. Normalite testleri tek değişkenli olarak yapılacaksa hepimizin yakından bildiği Shapiro-Wilk test veya Kolmogorov-Smirnov testi yapılır. Genellikle gözlem sayısının 50’nin altında değişken veri setlerinde Shapiro-Wilk testin kullanılmasının uygun olacağı iddia edilse de daha yüksek gözlem sayılarında da bu normalite testinin kullanıldığı görülmektedir. Literatürde yaygın olarak kullanılan diğer tek değişkenli normalite testleri ise şöyledir:
- Lilliefors düzeltmeli K-S testi,
- Anderson-Darling testi
- Cramer-von Mises testi
- D’Agostino çarpıklık testi
- Anscombe-Glynn basıklık testi
- D’Agostino-Pearson omnibus testi
- Jarque-Bera testi.
Tek değişkenli normalite testlerinde yokluk (Hnull) hipotezimiz yani “H0:Dağılım normal dağılım gösterir” şeklinde kurulur. Test sonucunda bulunan önemlilik düzeyi(p), a (alfa) yanılma düzeyinden diğer bir ifadeyle tip I hata (alfa hatası)’dan büyükse dağılımın normal dağılım gösterdiğini söyleriz. Örneğin Shapiro-Wilk veya Kolmogorov-Smirnov test istatistikleri söz gelimi 0,73 ve p değeri 0,06 ise p değeri a=0,05’ten büyük olduğu için dağılımın normal dağılım gösterdirdiği söylenir ve bu durumda H0 hipotezi kabul edilir. Diğer yandan ise alternatif hipotez red edilir. Alternatif hipotezin reddedilmesi, dağılımın normal dağılım göstermediği anlamına gelir. Bu arada değişken veri setinin çarpıklık (skewness) ve basıklık (kurtosis) değerlerine ve şekline de bakarak dağılımın yapısında bir yargıya ulaşılabilir. Çarpıklık, bir simetri ölçüsüdür, daha doğrusu, simetri eksikliğini gösterir. Bir dağılım veya veri kümesi, merkez noktanın solunda ve sağında aynı görünüyorsa simetriktir. Basıklık ise verilerin normal bir dağılıma göre kalın veya hafif kuyruklu olup olmadığının bir ölçüsüdür. Standart normal bir dağılımda çarpıklık ve basıklık değerleri 0’a eşittir. Diğer bir deyişle, yüksek basıklığa sahip veri setleri, büyük veya aykırı değerler (outliers)’e sahip olma eğilimindedir. Düşük basıklığa sahip veri kümeleri, düşük kuyruklara veya düşük aykırı değerlere sahip olma eğilimindedir. Ayrıca aralık yöntemi de değişken veri setinin normal dağılıma uygunluğunun test edilmesinde kullanılabilir. Diğer bir yaklaşım ise merkezi dağılım ölçülerinden olan ortalama, medyan ve mod değerlerine bakılarak dağılımın yapısı hakkında fikir edinilebilmesidir. Örneğin standart normal dağılımın ortalaması 0 ve standart sapması ise 1’e eşittir. Buradan bakıldığında eğer değişken veri setinin ortalaması ne kadar 0’a, standart sapması ise 1’e yakın olursa dağılımın normal dağılımına evrildiğini söyleyebiliriz.
Dönüşüm, ingilizce ifadeyle transformation veri setindeki değişkenlerin farklı bir birimle ifade edilmesidir. Dağılımını normal dağılıma dönüştürmek aslında hepimizin bildiği can eğrisine dönüştürmektir. Sözü gelmişken ifade etmek isterim verinin dönüştürülmesi ile standardizasyon iki farklı kavramdır. Dolayısıyla birbirine karıştırılmaması gerekir. Verinin dönüştürülmesinde dağılımın şekli değişirken, standardizasyonda dağılımın şeklinde bir değişiklik olmaz. Yani bu iki kavram farklı amaçlara hizmet etmektedir. Farklı yöntemlerle verinin standardize edilmesine yönelik daha önce yaptığım uygulamalı çalışmayı görmek isteyenler için çalışmanın linkini aşağıda paylaşıyorum.
Verinin Standartlaştırılması Üzerine Vaka Çalışmaları
Esasında normallik dönüşümü yapmakta amacımız, Şekil 1’de ortada yer alan normal dağılım olarak adlandırdığımız simetrik dağılıma veriyi dönüştürmektir. Simetrik dağılım ya da standart normal dağılımda şekilde görüleceği üzere ortalama (mean), medyan (median) ve mod (mode) değerleri birbirine eşittir. Normallik dönüşümlerinde de bizim amacımız Şekil 1’in solunda yer alan pozitif çarpık (sağa çarpık) ve Şekil 1’in sağında yer alan negatif çarpık (sola çarpık) dağılımları normal dağılıma yani simetrik dağılıma evrilmesini sağlamaktır. Pozitif çarpık bir dağılımda Mod <Medyan <Ortalama sırası bulunmakta iken, negatif çarpık bir dağılımda ise Mod> Medyan> Ortalama sırası bulunmaktadır.
Şekil 1: Normal ve Çarpık Dağılımlar
Kaynak: https://www.oreilly.com
Ancak dikkat edilmesi gereken bir konu olduğu için burası önemlidir: eğer kurulacak çok değişkenli analiz modellerinde normal dağılım varsayımı geçerliyse aynı anda bütün değişkenlerin içerisinde olduğu çok değişkenli normalite testi yapılmalıdır. Çünkü değişkenlerin bireysel bazda normal dağılım varsayımı karşılaması birlikte bu varsayımı karşılayacağı anlamına gelmemektedir. Yani her bir değişken durumuna uygun dönüşümle normal dağılıma uygun hale getirildikten sonra çok değişkenli normalite testi yapılmalıdır. Bir diğer durum değişken veri setlerinde bazı değişkenlerin normal dağılım gösterirken diğerlerinin normal dağılım göstermemesidir. Bu durumda da çok değişkenli normalite testi yapılmalıdır. Dolayısıyla normallik dönüşümlerinin iki farklı boyutu olduğu için iki başlık altında ele alınmaktadır:
a) Tek değişkenli veri seti setlerinde normallik dönüşümleri
b) Çok değişkenli veri seti setlerinde normal dağılım varsayımının incelenmesi
a) Tek değişkenli veri seti setlerinde normallik dönüşümleri
Tek değişkenli veri setlerinde dağılımın çarpıklık yapısına bağlı olarak yapılacak dönüşümler farklılık göstermektedir:
- Eğer dağılım ılımlı derecede pozitif çarpık, diğer bir ifadeyle ılımlı derecede sağa çarpık ise karekök dönüşümü ve bazı durumlarda ondan daha etkili olan küp kök dönüşümü yapılır. Eğer karekök dönüşümü yapılacak değişken veri setinde 1’den küçük değerler varsa en küçük değeri 1 yapacak şekilde bir sabit terimin gözlem değerlerine ilave edilmesi gerekir. Bazen de bu dağılım yapılarında Tukey dönüşümü (Tukey’s Ladder of Powers transformation) de kullanılmaktadır. Burada mutlak şekilde bu veya şu dönüşümü kullanmak gerektiğini söylemek çok doğru bir yaklaşım olmaz, verinin üzerinde test edilip değerlendirilmesi gerekir.
- Eğer dağılım şiddetli derecede pozitif çarpık, diğer bir ifadeyle şiddetli derecede sağa çarpık ise logaritmik (log) dönüşümü yapılır. Eğer log dönüşümü yapılacak değişken veri setinde 1’den küçük değerler varsa en küçük değeri 1 yapacak şekilde bir sabit terimin gözlem değerlerine ilave edilmesi gerekir.
- Eğer dağılım ılımlı veya şiddetli derecede negatif çarpık, diğer bir ifadeyle sola çarpık ise veri setindeki her bir gözlem, veri setindeki maksimum değer + 1 değerinden çıkarılarak dağılımı pozitif çarpık bir dağılıma dönüştürülür. Daha sonra pozitif çarpık dağılımlarda uygulanan dönüşüm yöntemleri uygulanarak dağılım normal dağılıma dönüştürülür. Negatif çarpık dağılımlarda değişken veri setinde kare veya küp dönüşümü de yapılabilmektedir. Ayrıca değişken veri setindeki değerler 0-1 aralığında ise bu durumda da log(x/(1-x)) dönüşümü uygulanabilmektedir. Doğrudan negatif çarpık dağılımların normallik dönüşümlerinde sıralı çeyreklik normalleştirme dönüşümü (Ordered Quantile (ORQ) normalizing transformation) de kullanılabilmektedir. Sıralı çeyreklik normalleştirme dönüşümü g(x) = Φ ^ {-1} ((sıra(x) – 0,5) / (uzunluk(x))) eşitliği ile hesaplanmaktadır. Eşitlikte Φ, standart normal kümülatif dağılım fonksiyonu (cdf)’nu ifade ederken, sıra (x) her bir gözlemin sırasını ve uzunluk (x) gözlem sayısını ifade etmektedir.
Değişkenin veri tipine göre de yapılacak dönüşüm farklılık gösterebilmektedir. Eğer kesikli nicel bir veri tipine sahipsek karekök dönüşümü uygulanabilmektedir. Diğer taraftan aşırı derecede çarpık dağılıma sahip bir değişken veri setinde değişken veri setinin tersi de alınabilmektedir. Ancak oran türünde bir değişken veri setine sahip isek bu durumda sıklıkla logit dönüşümü kullanabiliriz. Logit dönüşüm eşitliği şöyledir: Logit(p)=loge(p/1-p). Logit dönüşüm daha çok regresyon analizlerinde kullanılmaktadır. Pozitif çarpık dağılımlar uygulamada en sık karşılaşılan dağılımlardan biridir. Basedilenler ışığında kullanılan dönüşüm yöntemleri Şekil 2 üzerinde verilmiştir.
Şekil 2: Normallik Dönüşüm Yöntemleri
b) Çok değişkenli veri seti setlerinde normal dağılım varsayımının incelenmesi
Çok değişkenli veri setlerinde aynı anda normalite testlerinin yapılması ile değişken bazında normalite testlerinin yapılması aynı sonucu doğurmamaktadır. Diğer bir ifadeyle, bütün değişken veri setlerinin bireysel bazda normal dağılım göstermesi tamamı aynı anda değerlendirildiği zaman normal dağılım göstereceğini garanti etmez. Bunu şöyle düşünebiliriz; Bir futbol takımı düşünün her bir oyuncu oynadığı pozisyonda iyi işler çıkarıyor. Ancak iş takım oyununa geldiğinde uyum problemi yaşanabiliyor. Yani 1 futbolcunun 11 kişilik takımda bireysel anlamda iyi olması 11 kişilik takımın da iyi olacağı anlamına ve takım üyelerinin birbirine iyi uyum sağlayacağı anlamına gelmez. Bu örnekten hareketle çok değişkenli normalite testleri de aslında takım üyelerinin (bütün değişkenlerin) aynı anda normal dağılım gösterip göstermediğini bize verir. Literatürde daha fazla çok değişkenli normalite testleri bulunmakla birlikte öne çıkan çok değişkenli normalite testleri şöyledir:
- Mardia’nın çok değişkenli normallik testi: Mardia’nın testi çok değişkenli çarpıklık ve basıklık katsayılarını ve bunlara karşılık gelen istatistiksel anlamlılıklarını hesaplar. Küçük örneklem büyükleri (n <20) için çarpıklık katsayısının düzeltilmiş versiyonunu da hesaplayabilir. Çok değişkenli normallik için hem çarpıklık hem de basıklık istatistiğinin p değerleri 0,05’ten büyük olmalıdır. Verilerde eksik gözlemler varsa, liste halinde silme uygulanır ve tam bir durum analizi gerçekleştirilir.
- Henze-Zirkler çok değişkenli normallik testi: Henze-Zirkler testi, iki dağılım (gözlemlenen ve teorik) arasındaki mesafeyi ölçen negatif olmayan bir fonksiyona dayanmaktadır. Çok değişkenli veriler normalse, test istatistiği (HZ) yaklaşık olarak log-normal olarak dağılım gösterir. Verilerde eksik gözlemler varsa, liste halinde silme uygulanır ve tam bir durum analizi gerçekleştirilir.
- Royston çok değişkenli normallik testi: Çok değişkenli normalite testlerinden en sık kullanılanlardan biri de Royston tarafından 1992 yılında önerilen Royston testidir. Bu testte çok değişkenli normal dağılıma uygunluğun test edilmesinde Shapiro-Wilk veya Shapiro-Francia test istatistiğinden yararlanılır. Öncelikle bu testte her bir değişken için basıklık değerleri hesaplanır, ardından değişkenlerin basıklık katsayıları 3’ten büyükse Shapiro-Francia test istatistik değeri, eğer basıklık değeri 3’ten küçükse Shapiro-Wilk test istatistik değeri kullanılır.
- Enerji çok değişkenli normallik testi: Çok değişkenli dağılımlar arasındaki enerji mesafesi kavramına dayanmaktadır. Enerji adlandırması, Newton’un yerçekimi potansiyel enerjisi ile yakın bir benzetmeden kaynaklanmaktadır.
Bireysel baz kurulan hipotezlere benzer olarak çok değişkenli normalite testlerinde de aşağıda belirtildiği gibi hipotezler kurulur.
- H0 (yokluk): Değişkenler çok değişkenli normal dağılım gösterir.
- H1 (alternatif): Değişkenler çok değişkenli normal dağılım göstermez.
Çalışma kapsamında tesadüfi bir şekilde üretilen değişken gözlemleri üzerinden değişken veri setlerinin normallik dönüşümü öncesi ve sonrası normal dağılım varsayımı test edilmiştir. Ayrıca çok değişkenli normalite testleri de yapılarak normallik varsayımı bir bütün olarak ele alınmıştır.
Metodoloji ve Uygulama Sonuçları
İlk olarak analizde kullanılacak R kütüphanelerini vererek işe başlayalım. Aşağıda gerekenden fazla kütüphane verdiğimi biliyorum. Ancak daha çok esneklik ve estetik tasarım tanıdığı için genellikle olması gerekenden fazla kütüphane ile çalışıyorum. İki veya daha fazla değişkenli veri seti setlerinde normal dağılım varsayımının incelenmesinde kullanılan kütüphaneler “MVN” iken, normallik dönüşümlerinde ise “dlookr”, “bestNormalize” kütüphaneleridir. Analizlerde R programlama dili kullanılmıştır. Bulguların çalışma kitaplarına yazdırılmasında ise xlsx uzantılı Microsoft Excel çalışma kitapları kullanılmıştır.
Yüklenecek kütüphaneler
# Kütüphaneler
library<-c("dplyr","tibble","tidyr","ggplot2","ggthemes","readr","readxl","ggpubr","formattable", "ggstance", "pastecs","writexl", "psych", "GGally","pander", "MVN", "dlookr")
loading<-sapply(library, require, character.only = TRUE)
# Kütüphane yüklenme durumunu gösteren tablo
tablo=suppressWarnings(loading, classes = "warning")
isim=names(tablo)
deger=as_tibble(tablo)
data.frame(kutuphane=isim, yuklenme_durumu=deger$value) %>% mutate(yuklenme_durumu=if_else(yuklenme_durumu==TRUE, "Yuklendi", "Paket Kurulumu Gerekli")) %>% pander(caption="Kütüphane Yüklenme Bilgisi")
Yukarıdaki R kod bloğunun çalıştırılmasından sonra yukarıdaki kütüphanelerin yüklenip yüklenmediğine dair aşağıdaki gibi mantıksal vektör sonuçları gelecektir. Eğer mantıksal vektör sonuçlarının hepsi TRUE ise kütüphanelerin hepsi yüklenmiştir demektir. Kolaylık sağlaması açısından yukarıda kütüphanelerin yüklenmesini gösterir tabloyu da elde etmek ve daha kolay okumanız için yukarıdaki kod bloğu içerisinden kısa bir kod yazdım. Bu kod çalıştırıldığında aşağıdaki tabloda görüleceği üzere bütün kütüphaneler yüklenmiştir. Eğer ilgili kütüphane yüklenmemiş olursa “Paket Kurulumu Gerekli” ifadesi satırda yazacaktır. Satırda yazan bu uyarı metnine göre paketi ya kurar yada yüklersiniz. Bir paketin kurulması ile yüklenmesinin aynı şey olmadığını burada ifade etmek gerekir konuyu yabancı olanlar için. Paket kurulumu ilk defa yapılan bir işlem iken, paketin yüklenmesi zaten kurulan bir paketin yüklenmesi yani çalışır duruma getirilmesidir. İlk defa bir paket kurulumu gerçekleştiriliyorsa install.packages() fonksiyonunu, zaten bir paket kurulumu gerçekleştirilmiş ise ilgili paketin veya kütüphanenin yüklenmesi veya okunması için library() veya require() fonksiyonlarını kullanıyoruz. Fonksiyonlardaki parantez () içerisine yüklenecek paket veya kütüphane adını yazıyoruz.
-------------------------------
kutuphane yuklenme_durumu
------------- -----------------
dplyr Yuklendi
tibble Yuklendi
tidyr Yuklendi
ggplot2 Yuklendi
ggthemes Yuklendi
readr Yuklendi
readxl Yuklendi
ggpubr Yuklendi
formattable Yuklendi
ggstance Yuklendi
pastecs Yuklendi
writexl Yuklendi
psych Yuklendi
GGally Yuklendi
pander Yuklendi
MVN Yuklendi
dlookr Yuklendi
-------------------------------
Table: Kütüphane Yüklenme Bilgisi
Veri setinin oluşturulması
Oluşturulan veri setinde 4 değişken bulunmakta olup, aşağıdaki kurallara göre oluşturulmuştur.
- v1 değişkeni pozitif çarpık dağılım gösteren üstel (exponential) dağılımdan tesadüfi bir şekilde üretilen 1000 gözlemden oluşmaktadır. Üstel beta dağılıma göre veri üretmek için rexp() fonksiyonu kullanılmıştır.
- v2 değişkeni negatif çarpık dağılım gösteren beta dağılımdan tesadüfi bir şekilde üretilen 1000 gözlemden oluşmaktadır. Beta dağılımdan veri üretmek için rbeta() fonksiyonu kullanılmıştır.
- v3 değişkeni negatif çarpık dağılım gösteren beta dağılımdan tesadüfi bir şekilde üretilen 1000 gözlemden oluşmaktadır. Tek biçimli (uniform) dağılıma göre veri üretmek için runif() fonksiyonu kullanılmıştır.
- v4 değişkeni negatif çarpık dağılım gösteren beta dağılımdan tesadüfi bir şekilde üretilen 1000 gözlemden oluşmaktadır. Normal dağılıma uygun veri üretmek için rnorm() fonksiyonu kullanılmıştır.
set.seed(61) #üretilen değişken gözlem değerlerini sabitlemek için
v1=rexp(1000,rate=2) #Üstel dağılımdan tesadüfi bir şekilde üretilen 1000 gözlemli pozitif çarpık dağılım
v2=rbeta(1000,2,0.5,ncp=2) ##Beta dağılımdan tesadüfi bir şekilde üretilen 1000 gözlemli negatif çarpık dağılım
v3=runif(1000,min=0,max=2) # Tek biçimli (uniform) dağılımdan üretilen 1000 gözlemli iki modlu dağılım
v4=rnorm(n=1000, mean=0, sd=1) #standart normal dağılım (ortalama=0, standart sapma=1)'dan üretilen 1000 gözlemli değişken
veri=cbind(v1,v2,v3,v4) %>% as_tibble()
veri
#ilk 10 gözlemin gösterilmesi
head(veri,10) %>% formattable()
Yukarıdaki R kod bloğu çalıştırıldıktan sonra elde edilen ilk 10 gözlem aşağıdaki tabloda verilmiştir.
a) Tek değişkenli değişken veri setlerinin normallik dönüşümleri
Veri setindeki değişkenlerin dağılım yapısının yoğunluk grafikleriyle ortaya konulması
Aşağıda yazılan kod bloğu ile ilk olarak oluşturulan veri setindeki değişkenlerin dağılım yapısı yoğunluk grafikleriyle karşılaştırmalı olarak ortaya konulmuştur.
# V1 değişkeninin dağılımı
v1=ggdensity(veri, x = "v1", fill = "red", title = "v1: Pozitif Çarpık", add = "mean")
# V2 değişkeninin dağılımı
v2=ggdensity(veri, x = "v2", fill = "red", title = "v2: Negatif Çarpık", add = "mean")
# V3 değişkeninin dağılımı
v3=ggdensity(veri, x = "v3", fill = "red", title = "v3: İkili Mod Dağılımı", add = "mean")
# V4 değişkeninin dağılımı
v4=ggdensity(veri, x = "v4", fill = "red", title = "v4: Standart Normal Dağılım", add = "mean")
ggarrange(v1,v2,v3,v4, ncol=2, nrow=2)
Yukarıdaki R kod bloğunun çalıştırılmasından sonra elde edilen yoğunluk grafikleri değişkenlere göre aşağıda verilmiştir. Grafiklerde gösterilen y eksenine paralel kesikli siyah doğru ortalamayı göstermektedir.
Aşağıda yazılan kod bloğu ile ayrıca veri setindeki değişkenlerin dağılım yapısı teorik normal dağılım ile birlikte yoğunluk grafikleriyle ortaya konulmuştur.
# V1 değişkeninin dağılımı
v1=ggdensity(veri, x = "v1", fill = "red", title = "v1: Pozitif Çarpık", add = "mean") +
stat_overlay_normal_density(color = "blue", linetype = "dashed")
# V2 değişkeninin dağılımı
v2=ggdensity(veri, x = "v2", fill = "red", title = "v2: Negatif Çarpık", add = "mean") +
stat_overlay_normal_density(color = "blue", linetype = "dashed")
# V3 değişkeninin dağılımı
v3=ggdensity(veri, x = "v3", fill = "red", title = "v3: İkili Mod Dağılımı", add = "mean") +
stat_overlay_normal_density(color = "blue", linetype = "dashed")
# V4 değişkeninin dağılımı
v4=ggdensity(veri, x = "v4", fill = "red", title = "v4: Standart Normal Dağılım", add = "mean") +
stat_overlay_normal_density(color = "blue", linetype = "dashed")
ggarrange(v1,v2,v3,v4, ncol=2, nrow=2)
Veri setindeki değişkenlerin dağılım yapısı teorik normal dağılım ile birlikte yoğunluk grafikleriyle aşağıda verilmiştir. Bu grafiklerde teorik normal dağılım eğrisinin verilmesi mevcut değişken veri setindeki dağılım ile olması gereken normal dağılım yapısı arasındaki farkı görmek açısından önem arz etmektedir. Grafiklerde gösterilen y eksenine paralel kesikli siyah doğru ortalamayı göstermektedir.
Veri setindeki değişkenlerin dağılım yapısının q-q grafikleriyle ortaya konulması
Aşağıda yazılan kod bloğu ile veri setindeki değişkenlerin dağılım yapısı q-q grafikleriyle karşılaştırmalı olarak ortaya konulmuştur.
v1=ggplot(data=veri,
aes(sample=v1)) +
geom_qq() +
geom_qq_line() +
ggtitle("v1: Pozitif Çarpık")
v2=ggplot(data=veri,
aes(sample=v2)) +
geom_qq() +
geom_qq_line() +
ggtitle("v2: Negatif Çarpık")
v3=ggplot(data=veri,
aes(sample=v3)) +
geom_qq() +
geom_qq_line() +
ggtitle("v3: İkili Mod Dağılımı")
v4=ggplot(data=veri,
aes(sample=v4)) +
geom_qq() +
geom_qq_line() +
ggtitle("v4: Standart Normal Dağılım")
ggarrange(v1,v2,v3,v4, ncol=2, nrow=2)
Veri setindeki değişkenlerin dağılım yapısı q-q grafikler ile birlikte aşağıda verilmiştir. Veri setinin normal dağılıma uygun olup olmadığını ortaya koymada sıklıkla yararlanılan q-q grafiklerde teorik doğru üzerinde veri setinin dağılımın olması o veri setinin normal dağılıma sahip olduğunu veya normal dağılıma evrildiğini göstermektedir. Aşağıdaki grafiklere bakıldığında v4 değişkenindeki gözlemlerin doğru boyunca ilerlediği görülmektedir. Dolayısıyla burada v4 değişkeninin normal dağılım gösterdiğini söyleyebiliriz.
Veri setindeki değişkenlerin çarpıklık ve basıklık değerlerinin hesaplanması
Veri setindeki özellikle çarpık değerleri dağılım simetrik yapısını ortaya koymada oldukça yararlıdır. Aşağıda yazılan kod bloğu ile veri setindeki değişkenlerin hem çarpıklık hem de basıklık değerleri ortaya konulmuştur.
#çarpıklık değerlerinin hesaplanması
cv1=Skew(veri$v1)
cv2=Skew(veri$v2)
cv3=Skew(veri$v3)
cv4=Skew(veri$v4)
carpiklik= rbind(cv1, cv2, cv3,cv4)
#basıklık değerlerinin hesaplanması
bv1=Kurt(veri$v1)
bv2=Kurt(veri$v2)
bv3=Kurt(veri$v3)
bv4=Kurt(veri$v4)
basiklik= rbind(bv1, bv2, bv3,bv4)
#test etiketleri
test_tur=c(rep("Çarpıklık", 4), rep("Basıklık", 4))
#değişken etiketleri
degisken=rep(paste("V",1:4, sep = ""), 2)
#tablo oluşturma
tablo=cbind(degisken, test_tur,rbind(carpiklik,basiklik)) %>% as_tibble() %>% rename(deger=V3) %>% mutate(deger=round(as.numeric(deger),3))
formattable(tablo, align =rep("l",3), list(
`test_tur` = formatter("span", style = ~ style(color = "black",font.weight = "bold")),
`deger`= color_bar("#00FF7F")
))
Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen veri setindeki değişkenlerin çarpıklık ve basıklık değerleri aşağıdaki tabloda verilmiştir. Daha önce bahsettiğimiz üzere standart normal bir dağılımda çarpıklık ve basıklık değerleri 0’a eşittir. Buradan baktığımızda çarpıklık ve basıklık değerleri 0’a ne kadar yakınsa o ölçüde normal dağılıma evrildiğini söyleyebiliriz. Tabloya bakıldığında 0’a en yakın çarpıklık ve basıklık değerleri olan değişken v4 değişkeni olduğu için normal dağılıma sahip olduğunu söyleyebiliriz.
Veri setindeki değişkenlerin normalite testleri
Önceki kısımda yaptığımız testler her ne kadar dağılımın normal dağılım gösterip göstermediğini ortaya koymada yardımcı olsa da kesin bir karara varmak için normalite testleri yapılması gerekir. Aşağıda yazılan kod bloğu ile veri setindeki her bir değişkenin iki kuyruklu (two-sided) Kolmogorov-Smirnov (K-S) ve Shapiro-Wilks (S-W) testleri yapılarak dağılımın normal dağılıma uyup uymadığı kesin olarak ortaya konulmuştur.
options(scipen = 999)#sayısal bulguları bilimsel notasyondan kurtarmak için
#Kolmogorov-Smirnov (K-S) testleri (iki kuyruklu)
v1=ks.test(veri$v1, "pnorm", mean=mean(veri$v1), sd=sd(veri$v1))
v2=ks.test(veri$v2, "pnorm", mean=mean(veri$v2), sd=sd(veri$v2))
v3=ks.test(veri$v3, "pnorm", mean=mean(veri$v3), sd=sd(veri$v3))
v4=ks.test(veri$v4, "pnorm", mean=mean(veri$v4), sd=sd(veri$v4))
ks_testistastistigi=rbind(v1$statistic, v2$statistic, v3$statistic, v4$statistic)
ks_pdegeri=rbind(v1$p.value, v2$p.value, v3$p.value, v4$p.value)
#Shapiro-Wilks (S-W) testleri
v1=shapiro.test(veri$v1)
v2=shapiro.test(veri$v2)
v3=shapiro.test(veri$v3)
v4=shapiro.test(veri$v4)
sw_testistastistigi=rbind(v1$statistic, v2$statistic, v3$statistic, v4$statistic)
sw_pdegeri=rbind(v1$p.value, v2$p.value, v3$p.value, v4$p.value)
#test etiketleri
test_tur=c(rep("Kolmogorov-Smirnov", 4), rep("Shapiro-Wilks", 4))
#değişken etiketleri
degisken=rep(paste("V",1:4, sep = ""), 2)
#tablo oluşturma
t=cbind(degisken, test_tur, rbind(ks_testistastistigi,sw_testistastistigi),rbind(ks_pdegeri,sw_pdegeri)) %>% as_tibble()
t= t %>% rename(testin_turu=test_tur, test_istatistigi=D, p_degeri=V4)%>% mutate(p_degeri=as.numeric(p_degeri), test_istatistigi=as.numeric(test_istatistigi)) %>% mutate(sonuc=if_else(p_degeri>0.0499, "normal dağılım göstermektedir", "normal dağılmamaktadır")) %>% mutate_if(is.numeric, round, 3) %>% formattable()
t
Yukarıda yazılan kod bloğunun çalıştırılması ile elde edilen veri setindeki her bir değişkenin iki kuyruklu (two-sided) Kolmogorov-Smirnov (K-S) ve Shapiro-Wilks (S-W) test sonuçları aşağıdaki tabloda verilmiş ve yukarıda yazılan basit bir algoritmayla yorumlanmıştır. Aşağıdaki tablodan görüleceği üzere v4 değişkeninde p değeri 0,05’ten büyük olduğu için hem Kolmogorov-Smirnov (K-S) hem de Shapiro-Wilks (S-W) test sonuçları istatistiksel olarak anlamlı olup, bu sonuç v4 değişkeninin normal dağılım gösterdiğini ortaya koymaktadır. Bu durumda “Dağılım normal dağılım gösterir” şeklinde kurulan H0 hipotezi kabul edilirken H1 yani alternatif hipotez reddedilir.
Veri setindeki değişkenlerin normal dağılıma dönüştürülmesi
- v1 değişkeninin dönüştürülmesi
v1 değişkeni aşağıda yazılan kod bloğu ile Tukey (Tukey’s Ladder of Powers) dönüşüm uygulanarak normal dağılıma dönüştürülmüştür. Aynı zamanda dönüştürülen değişken gözlemlerinin grafiklerle ve Shapiro-Wilk testi ile normal dağılıma uygunluğu test edilmiştir.
#v1 değişkenine Tukey dönüşümünün uygulanması
tt=transformTukey(veri$v1,plotit=T)
tt
#Orjinal gözlemlerin ve dönüştürülmüş gözlemlerin tabloya taşınması
dv1=tibble(v1=veri$v1, dv1=tt[1:1000])
# v1 değişkeninin karşılaştırmalı dağılımı
v1=ggdensity(dv1, x = "v1", fill = "red", title = "v1: Pozitif Çarpık", add = "mean") +
stat_overlay_normal_density(color = "blue", linetype = "dashed")
# dönüşüm uygulanmış değişken (dv1) gözlemlerinin dağılımı
dv1=ggdensity(dv1, x = "dv1", fill = "red", title = "dv1: Tukey Dönüşüm", add = "mean") +
stat_overlay_normal_density(color = "blue", linetype = "dashed")
ggarrange(v1, dv1, ncol=2, nrow=1)
Yukarıdaki R kod bloğunda çalıştırıldığında elde edilen dönüşüm sonrası gözlemlerin karşılaştırmalı yoğunluk dağılım grafikleri aşağıda verilmiştir. Görüleceği üzere v1 değişkeni gözlemleri Tukey dönüşüm uygulanarak dönüştürüldüğünde normal dağılıma evrildiği görülmektedir. Ancak bu dönüşüme rağmen yine de bir normalite testinin yapılması yerinde bir karar olacağı düşünülmektedir. Grafiklerde gösterilen y eksenine paralel kesikli siyah doğru ortalamayı göstermektedir.
Aşağıda yazılan R kod bloğu dönüştürülmüş v1 (dv1) değişken gözlemlerinin normallik varsayımı Shapiro-Wilk testi ile test edilmiştir. Aynı zamanda dönüştürülmüş v1 değişken gözlemleri xlsx uzantılı Microsoft Excel çalışma kitabına yazdırılmıştır.
#dv1 değişkeni Shapiro-Wilk normalite testi
shapiro.test(dv1$dv1)
#dv1 değişkeninin excel çalışma kitabına yazdırılması
write_xlsx(dv1,"donusturulmus_v1_degiskeni.xlsx")
Yukarıdaki R kod bloğunun çalıştırılmasından sonra elde edilen Shapiro-Wilk normalite testi sonucu aşağıda verilmiştir. Bulgular dönüştürülmüş v1 değişken gözlemlerinin normal dağılım gösterdiğini ortaya koymaktadır. Çünkü p (0,09496) değeri 0,05’ten büyüktür.
#dv1 değişkeni Shapiro-Wilk normalite testi sonucu
W = 0.99731, p-value = 0.09496
Yukarıda yazılan kod bloğunun son satırı çalıştırıldığında dönüştürülmüş v1 (dv1) değişkeni ile dönüştürülmemiş v1 değişkeni xlx uzantılı çalışma kitabına yazdırılmış olup, aşağıdaki linkten indirebilirsiniz.
2. v2 değişkeninin dönüştürülmesi
v2 değişkeni aşağıda yazılan kod bloğu ile sıralı çeyreklik normalleştirme dönüşümü (Ordered Quantile (ORQ) normalizing transformation) uygulanarak normal dağılıma dönüştürülmüştür. Aynı zamanda dönüştürülen değişken gözlemlerinin grafiklerle ve Shapiro-Wilk testi ile normal dağılıma uygunluğu test edilmiştir.
#v2 değişkenine sıralı çeyreklik normalleştirme dönüşümü (Ordered Quantile (ORQ) normalizing transformation) uygulanması
sira=orderNorm(veri$v2)
#Orjinal gözlemlerin ve dönüştürülmüş gözlemlerin tabloya taşınması
d2=tibble(v2=veri$v2, dv2=sira$x.t)
#v2 değişkeninin karşılaştırmalı dağılımı
v2=ggdensity(d2, x = "v2", fill = "red", title = "v2: Negatif Çarpık", add = "mean") +
stat_overlay_normal_density(color = "blue", linetype = "dashed")
#Dönüşüm uygulanmış değişken (dv2) gözlemlerinin dağılımı
dv2=ggdensity(d2, x = "dv2", fill = "red", title = "dv2: ORQ Dönüşümü", add = "mean") +
stat_overlay_normal_density(color = "blue", linetype = "dashed")
ggarrange(v2, dv2, ncol=2, nrow=1)
Yukarıdaki R kod bloğunda çalıştırıldığında elde edilen dönüşüm sonrası gözlemlerin karşılaştırmalı yoğunluk dağılım grafikleri aşağıda verilmiştir. Görüleceği üzere v2 değişkeni gözlemleri sıralı çeyreklik (ORQ) normalleştirme dönüşümü uygulanarak dönüştürüldüğünde normal dağılıma evrildiği görülmektedir. Ancak bu dönüşüme rağmen yine de bir normalite testinin yapılması yerinde bir karar olur. Grafiklerde gösterilen y eksenine paralel kesikli siyah doğru ortalamayı göstermektedir.
Aşağıda yazılan R kod bloğu dönüştürülmüş v2 (dv2) değişken gözlemlerinin normallik varsayımı Shapiro-Wilk testi ile test edilmiştir. Aynı zamanda dönüştürülmüş v2 değişken gözlemleri xlsx uzantılı Microsoft Excel çalışma kitabına yazdırılmıştır.
#dv2 değişkeni Shapiro-Wilk normalite testi
shapiro.test(d2$dv2)
#dv2 değişkeninin excel çalışma kitabına yazdırılması
write_xlsx(d2,"donusturulmus_v2_degiskeni.xlsx")
Yukarıdaki R kod bloğunun çalıştırılmasından sonra elde edilen Shapiro-Wilk normalite testi sonucu aşağıda verilmiştir. Bulgular dönüştürülmüş v2 değişken gözlemlerinin normal dağılım gösterdiğini ortaya koymaktadır. Çünkü p (1) değeri 0,05’ten büyüktür.
#dv2 değişkeni Shapiro-Wilk normalite testi sonucu
W = 0.99995, p-value = 1
Yukarıda yazılan kod bloğunun son satırı çalıştırıldığında dönüştürülmüş v2 (dv2) değişkeni ile dönüştürülmemiş v2 değişkeni xlx uzantılı çalışma kitabına yazdırılmış olup, aşağıdaki linkten indirebilirsiniz.
3. v3 değişkeninin dönüştürülmesi
v3 değişkeni aşağıda yazılan kod bloğu ile v2 değişkeninde olduğu gibi sıralı çeyreklik normalleştirme dönüşümü (Ordered Quantile (ORQ) normalizing transformation) uygulanarak normal dağılıma dönüştürülmüştür. Aynı zamanda dönüştürülen değişken gözlemlerinin grafiklerle ve Shapiro-Wilk testi ile normal dağılıma uygunluğu test edilmiştir.
#v2 değişkenine sıralı çeyreklik normalleştirme dönüşümü (Ordered Quantile (ORQ) normalizing transformation) uygulanması
sira=orderNorm(veri$v3)
#Orjinal gözlemlerin ve dönüştürülmüş gözlemlerin tabloya taşınması
d3=tibble(v3=veri$v3, dv3=sira$x.t)
# v2 değişkeninin karşılaştırmalı dağılımı
v3=ggdensity(d3, x = "v3", fill = "red", title = "v3: İkili Mod Dağılımı", add = "mean") +
stat_overlay_normal_density(color = "blue", linetype = "dashed")
#Dönüşüm uygulanmış değişken (dv3) gözlemlerinin dağılımı
dv3=ggdensity(d3, x = "dv3", fill = "red", title = "dv3: ORQ Dönüşümü", add = "mean") +
stat_overlay_normal_density(color = "blue", linetype = "dashed")
ggarrange(v3, dv3, ncol=2, nrow=1)
Yukarıdaki R kod bloğunda çalıştırıldığında elde edilen dönüşüm sonrası gözlemlerin karşılaştırmalı yoğunluk dağılım grafikleri aşağıda verilmiştir. Görüleceği üzere v3 değişkeni gözlemleri sıralı çeyreklik (ORQ) normalleştirme dönüşümü uygulanarak dönüştürüldüğünde normal dağılıma evrildiği görülmektedir. Ancak bu dönüşüme rağmen yine de bir normalite testinin yapılması, kesin bir karara varmak açısından önem taşımaktadır. Grafiklerde gösterilen y eksenine paralel kesikli siyah doğru ortalamayı göstermektedir.
Aşağıda yazılan R kod bloğu dönüştürülmüş v3 (dv3) değişken gözlemlerinin normallik varsayımı Shapiro-Wilk testi ile test edilmiştir.
#dv3 değişkeni Shapiro-Wilk normalite testi
shapiro.test(d3$dv3)
Yukarıdaki R kod bloğunun çalıştırılmasından sonra elde edilen Shapiro-Wilk normalite testi sonucu aşağıda verilmiştir. Bulgular dönüştürülmüş v3 değişken gözlemlerinin normal dağılım gösterdiğini ortaya koymaktadır. Çünkü p (1) değeri 0,05’ten büyüktür.
dv3 değişkeni Shapiro-Wilk normalite testi sonucu
W = 0.99995, p-value = 1
Aşağıda yazılan kod bloğu ile dönüştürülmüş ilk üç değişkeni içeren veri setini birleştirelim ve xlsx uzantılı çalışma kitabına yazdıralım sonuçları görmek isteyenler için.
#veri setinin birleştirilmesi
don_veri=tibble(dv1=dv1$dv1, dv2=d2$dv2, dv3=d3$dv3)
#veri setinin xlsx uzantılı Microsoft Excel çalışma kitabına yazdırılması
write_xlsx(don_veri, "donusturul_veri_seti.xlsx")
Yukarıdaki kod bloğunun çalıştırılmasından sonra dönüştürülmüş veri xlsx uzantılı Microsoft Excel çalışma kitabına yazdırılmış olup, aşağıdaki linkten bu veri setini indirebilirsiniz.
b) Çok değişkenli veri seti setlerinde normal dağılım varsayımının incelenmesi
Bu bölüme kadar oluşturduğumuz veri setlerinde değişkenlerin bireysel olarak normallik dönüşümlerini yaparak yine bireysel normal dağılım gösterip göstermediğini test ettik. Ancak merak edilen konu değişkenlerin takım halinde normal dağılım varsayımının karşılayıp karşılanmadığıdır. Bu amaçla oluşturulmuş değişken veri setlerinin (v1’den v4’e kadar (dahil)) bu bölümde aynı anda normal dağılım gösterip göstermediği test edilmiştir. v4 değişkeninin bireysel olarak normal dağılım gösterdiği bilinmektedir. Çok değişkenli normalite testleri olarak
- Mardia’nın çok değişkenli normallik testi
- Henze-Zirkler çok değişkenli normallik testi
- Royston çok değişkenli normallik testi
- Enerji çok değişkenli normallik testi
testlerinden yararlanacağız. Bireysel bazda kurulan hipotezlere benzer olarak çok değişkenli normalite testlerinde de aşağıda belirtildiği gibi hipotezler kurulur.
- H0 (yokluk): Değişkenler çok değişkenli normal dağılım gösterir.
- H1 (alternatif): Değişkenler çok değişkenli normal dağılım göstermez.
Mardia’nın çok değişkenli normallik testi
Bu kısımda öncelikle aşağıda yazılan kod bloğu ile çok değişkenli Mardia’nın normalite testi yapılmıştır.
mardia=mvn(veri, mvnTest = "mardia", alpha = 0.5)
mardia=mardia$multivariateNormality
mardia
Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen Mardia normalite test sonuçları aşağıda verilmiştir. Mardia normalite testine göre değişkenler normal dağılım göstermemektedir.
Test | Statistic | p value | Result |
Mardia Skewness | 1014,34 | 0,00 | NO |
Mardia Kurtosis | 9,86 | 0,00 | NO |
MVN | NO |
Henze-Zirkler çok değişkenli normallik testi
Aşağıda yazılan kod bloğu ile çok değişkenli Henze-Zirkler’in normalite testi yapılmıştır.
Henze_Zirkler=mvn(veri, mvnTest = "hz", alpha = 0.5)
Henze_Zirkler=Henze_Zirkler$multivariateNormality
Henze_Zirkler
Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen Henze-Zirkler normalite test sonuçları aşağıda verilmiştir. Henze-Zirkler normalite testine göre değişkenler normal dağılım göstermemektedir.
Test | HZ | p value | MVN |
Henze-Zirkler | 8,443613 | 0 | NO |
Royston çok değişkenli normallik testi
Aşağıda yazılan kod bloğu ile çok değişkenli Royston’un normalite testi yapılmıştır.
royston=mvn(veri, mvnTest = "royston", alpha = 0.5)
royston=royston$multivariateNormality
royston
Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen Royston normalite test sonuçları aşağıda verilmiştir. Royston normalite testine göre değişkenler normal dağılım göstermemektedir.
Test | H | p value | MVN |
Royston | 355,8745 | 0,000 | NO |
Enerji çok değişkenli normallik testi
Aşağıda yazılan kod bloğu ile çok değişkenli Enerji normalite testi yapılmıştır. Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen Royston normalite test sonuçları aşağıda verilmiştir.
enerji=mvn(veri, mvnTest = "energy", alpha = 0.5)
enerji=enerji$multivariateNormality
enerji
Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen Enerji normalite test sonuçları aşağıda verilmiştir. Enerji normalite testine göre değişkenler normal dağılım göstermemektedir.
Test | Statistic | p value | MVN |
E-statistic | 17,10333 | 0,000 | NO |
Yapılan açık kaynak R kodlu normallik dönüşüm çalışmaları ile veri bilimi (data science) ile ilgilenen akademi ve saha çalışanlarına bir katkı sunulması amaçlanmıştır. Literatürde yukarıdaki bahsedilen hususlara dikkat etmeyen pek çok bilimsellikten uzak çalışma bulunmaktadır. Dolayısıyla yapacağınız çalışmalarda nitelikli araştırma yaparak ve içinize sinerek bir çalışma yapmanız her şeyden önce gerekmektedir. Amacımız sayısal çoğunluk değil nitelikli çoğunluk olmalıdır diye düşünüyorum.
Faydalı olması ve farkındalık oluşturması dileğiyle.
Bilimle ve teknolojiyle kalınız.
Saygılarımla.
Not: Kaynak gösterilmeden alıntı yapılamaz veya kopyalanamaz.
Note: It can not be cited or copied without referencing.
Yararlanılan Kaynaklar
- RStudio Cloud: https://login.rstudio.cloud/
- Microsoft Excel 2016, Microsoft
- The R Project for Statistical Computing. https://www.r-project.org/
- Alpar, R. (2017). Uygulamalı Çok Değişkenli İstatistiksel Yöntemler. 5. Baskı. Detay Yayıncılık.
- Ghasemi A, Zahediasl S. Normality Tests for Statistical Analysis: A Guide for Non-Statisticians. Int J Endocrinol Metab. 2012;10(2):486-9. DOI: 10.5812/ijem.3505
- https://www.datanovia.com/en/lessons/transform-data-to-normal-distribution-in-r/
- https://www.oreilly.com/library/view/clojure-for-data/9781784397180/ch01s13.html
- https://www.itl.nist.gov/div898/handbook/eda/section3/eda35b.htm#:~:text=Skewness%20is%20a%20measure%20of,relative%20to%20a%20normal%20distribution.
- https://www.stat.purdue.edu/~lfindsen/stat350/Lab3R.pdf.
- Ahrens, J. H. and Dieter, U. (1972). Computer methods for sampling from the exponential and normal distributions. Communications of the ACM, 15, 873–882.
- Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
- Johnson, N. L., Kotz, S. and Balakrishnan, N. (1995) Continuous Univariate Distributions, volume 1, chapter 19. Wiley, New York.
- Field, Andy. (2009). Discovering Statistics Using SPSS, Third Edition.
- https://cran.r-project.org/web/packages/dlookr/vignettes/transformation.html
- https://cran.r-project.org/web/packages/bestNormalize/bestNormalize.pdf
- https://cran.r-project.org/web/packages/bestNormalize/vignettes/bestNormalize.html
- B. W. Yap & C. H. Sim (2011) Comparisons of various types ofnormality tests, Journal of Statistical Computation and Simulation, 81:12, 2141-2155, DOI:10.1080/00949655.2010.520163
- Korkmaz S, Goksuluk D, Zararsiz G. MVN: An R Package for Assessing Multivariate Normality. The R Journal. 2014 6(2):151-162. URL https://journal.r-project.org/archive/2014-2/ korkmaz-goksuluk-zararsiz.pdf
- Mardia, K. V. (1970), Measures of multivariate skewnees and kurtosis with applications. Biometrika, 57(3):519-530.
- Mardia, K. V. (1974), Applications of some measures of multivariate skewness and kurtosis for testing normality and robustness studies. Sankhy A, 36:115-128.
- Henze, N. and Zirkler, B. (1990), A Class of Invariant Consistent Tests for Multivariate Normality. Commun. Statist.-Theor. Meth., 19(10): 35953618.
- Henze, N. and Wagner, Th. (1997), A New Approach to the BHEP tests for multivariate normality. Journal of Multivariate Analysis, 62:1-23.
- Royston, J.P. (1982). An Extension of Shapiro and Wilks W Test for Normality to Large Samples. Applied Statistics, 31(2):115124.
- Royston, J.P. (1983). Some Techniques for Assessing Multivariate Normality Based on the ShapiroWilk W. Applied Statistics, 32(2).
- Royston, J.P. (1992). Approximating the Shapiro-Wilk W-Test for non-normality. Statistics and Computing, 2:117-119.121133.
- Royston, J.P. (1995). Remark AS R94: A remark on Algorithm AS 181: The W test for normality. Applied Statistics, 44:547-551.
- Shapiro, S. and Wilk, M. (1965). An analysis of variance test for normality. Biometrika, 52:591611.
- Doornik, J.A. and Hansen, H. (2008). An Omnibus test for univariate and multivariate normality. Oxford Bulletin of Economics and Statistics 70, 927-939.
- G. J. Szekely and M. L. Rizzo (2013). Energy statistics: A class of statistics based on distances, Journal of Statistical Planning and Inference, http://dx.doi.org/10.1016/j.jspi.2013.03.018
- M. L. Rizzo and G. J. Szekely (2016). Energy Distance, WIRES Computational Statistics, Wiley, Volume 8 Issue 1, 27-38. Available online Dec., 2015, http://dx.doi.org/10.1002/wics.1375. G. J. Szekely and M. L. Rizzo (2017). The Energy of Data. The Annual Review of Statistics and Its Application 4:447-79. 10.1146/annurev-statistics-060116-054026
- G. J. Szekely and M. L. Rizzo (2017). The Energy of Data. The Annual Review of Statistics and Its Application 4:447-79. 10.1146/annurev-statistics-060116-054026
- Ebner, B., Henze, N. Tests for multivariate normality—a critical review with emphasis on weighted L2-statistics. TEST 29, 845–892 (2020). https://doi.org/10.1007/s11749-020-00740-0