Çarpık normal veriler için hipotez testi yapabilir miyim?


11

Başlangıçta normal olarak dağıtıldığını düşündüğüm bir veri koleksiyonum var. Sonra aslında ona baktım ve bunun çoğunlukla eğri olduğu için olmadığını ve bir shapiro-wilks testi yaptığımı fark ettim.

Hala istatistiksel yöntemleri kullanarak analiz etmek istiyorum ve bu yüzden çarpıklık-normalite için hipotez testi yapmak istiyorum.

Bu yüzden, çarpıklık normalliğini test etmenin bir yolu olup olmadığını ve mümkünse, testi benim için yapmak için bir kütüphane olup olmadığını bilmek istiyorum.

Yanıtlar:


8

Verilerin eğriltme normal dağılımına nasıl sığacağına ilişkin olarak İlk olasılıklardan maksimum olabilirlik tahmincisini hesaplayabilirsiniz. İlk not o konum parametresi ile eğimli normal dağılım için olasılık yoğunluk fonksiyonu , ölçü parametresi ve şekil parametresi isimliω αξωα

2ωϕ(xξω)Φ(α(xξω))

burada standart normal yoğunluk işlevidir ve standart normal CDF'dir. Bu yoğunluğun, bu soruya verdiğim cevapta tanımlanan sınıfın bir üyesi olduğunu unutmayın .Φ ( )ϕ()Φ()

Bu dağılımdan bağımsız gözlemin bir örneğine dayanan log olabilirliği :n

nlog(ω)+i=1nlogϕ(xξω)+logΦ(α(xξω))

Bu MLE için kapalı form çözümü olmadığı bir gerçektir. Ancak, sayısal olarak çözülebilir. Örneğin R, olasılık fonksiyonunu şöyle kodlayabilirsiniz (not, yukarıdaki olasılık fonksiyonunu nasıl hesapladığını tamamen şeffaf hale getirmek için mümkün olandan daha az kompakt / verimli yaptım):

set.seed(2345)

# generate standard normal data, which is a special case
n = 100 
X = rnorm(n) 

# Calculate (negative) log likelihood for minimization
# P[1] is omega, P[2] is xi and P[3] is alpha
L = function(P)
{

    # positivity constraint on omega
    if( P[1] <= 0 ) return(Inf)

    S = 0
    for(i in 1:n) 
    {
        S = S - log( dnorm( (X[i] - P[2])/P[1] ) ) 
        S = S - log( pnorm( P[3]*(X[i] - P[2])/P[1] ) ) 
    }


    return(S + n*log(P[1]))
}

Şimdi bu işlevi sayısal olarak en aza indiriyoruz (yani olasılığı en üst düzeye çıkarıyoruz). Bunu , paketteki varsayılan uygulama olan Simplex Algoritmasını kullanarak türevleri hesaplamak zorunda kalmadan yapabilirsiniz .optim()R

Çarpıklığın nasıl test edileceğine ilişkin olarak: sınırlaması ve bir olasılık oranı testi yaparak çarpık-normal ve normal (normal bir alt model olduğu için) için açıkça test edebiliriz .α=0

# log likelihood constraining alpha=0. 
L2 = function(Q) L(c(Q[1],Q[2],0))

# log likelihood from the constrained model
-optim(c(1,1),L2)$value
[1] -202.8816

# log likelihood from the full model
-optim(c(1,1,1),L)$value
[1] -202.0064

# likelihood ratio test statistic
LRT = 2*(202.8816-202.0064)

# p-value under the null distribution (chi square 1)
1-pchisq(LRT,1)
[1] 0.1858265

Bu yüzden olan sıfır hipotezini reddetmeyiz (yani çarpıklık yok).α=0

Burada karşılaştırma basitti, çünkü normal dağılım bir alt modeldi. Diğer, daha genel durumlarda, tüm rakip uyumlarda maksimum olabilirlik tahmin edicileri kullanıyorsanız , örneğin AIC'leri ( burada yapıldığı gibi ) karşılaştırarak normalin diğer referans dağılımlarıyla karşılaştırabilirsiniz . Örneğin, verileri bir gama dağılımı ve normal eğriltme altında maksimum olasılıkla sığdırabilir ve eklenen olasılığın eğriltme normalinin ek karmaşıklığını haklı gösterip göstermediğini görebilirsiniz (2 yerine 3 parametre). Ayrıca kullanarak düşünebiliriz tek örneklem Kolmogorov Smirnov testi çarpık normalin aileden iyi uydurma tahminine ile verileri karşılaştırmak.


1
+1, bence bu açık, kapsamlı ve yapıcı bir cevap. Son paragrafta AIC kullanımı ile ilgili 1 nitpick / endişem var. Çeşitli bilgi kriterlerine sahip olduğum bir konu, tüm parametrelerin modelin verilere uyma yeteneğine eşit katkıda bulunduğunu varsaymalarıdır. Farklı çoklu regresyon modellerini değerlendirirken bunun iyi olduğunu düşünüyorum; ancak, farklı dağılım türlerini inceliyorsam, tüm parametrelerin eşit esneklik sağladığı açıktır. Böylece, ben bu durumdan rahatsız oluyorum. Bu konudaki tutumunuz nedir?
gung - Monica'yı eski durumuna döndürün

+1 Sadece hafif bazı sorunlar endişe am Azzalini eğim, normal gibi: (1) Fisher bilgi matrisi , çarpıklık parametre olan tekil de özel zaman, bu noktada çıkarımsal sorunları gösterir olabilirlik oran istatistiğini kullanma; (2) profil olasılığı genellikle çok düzdür ; (3) İki bükülme noktası vardır ve bazı veri kümeleri için eklem MLE'si mevcut değildir. α = 0 α ( μ , σ , α )αα=0α(μ,σ,α)

@gung, bu iyi bir nokta. AIC'yi her şeyden çok örnek olarak kullanıyordum - başka bir şey kullanılabilirdi - ama insanların farklı hata dağılımlarına sahip modelleri karşılaştırmak için AIC'yi kullandıklarını gördüm, bu da tüm parametrelerin "eşit oluşturulduğu" varsayımını etkili bir şekilde yapıyor. Bu konuda bir literatür gördünüz mü? İlgilenirim.
Makro

@Prorastinator, , alt model olarak düzenli normal dağılımınız olur. Balıkçı bilgisini tersine çevirmeden bu karşılaştırmayı yapmak kolaydır. Re: (2), evet bu dağılımı ile çarpıklık ulaşılabilir düzeyi (maxes dışarı etrafında oldukça mütevazi olduğunu da doğrudur doğrudur oluyor ise olarak gerçekleşir ıraksadığını için ), her zaman bu kadar veri kümesi bu eğim düzeyini gösterir, olasılığı oldukça düz olacaktır (yani, ayrıştıkça yavaşça artar ). Son sözün de (3) ile ilişkili olduğunu düşünüyorum± .9 α ± α αα=0±.9α±αα
Macro

1
@Macro Bunun için teşekkürler. Bu aynı zamanda çarpıklığı nasıl ölçtüğünüze de bağlıdır, günümüzde moment bazlı önlemler çok kullanılmamaktadır çünkü bunlar sadece kuyruklu dağılımlar için mevcuttur. Sorun, profil olasılığının iki bükülme noktasına sahip olmasıdır (ilk bağlantımda gösterildiği gibi). Azzalini'nin web sitesinde, MLE'nin de karakterize ettiği bazı veri kümeleri için mevcut olmadığından bahsediyor. Bu, çok sayıda eleştiri üreten bu dağılım hakkında hassas bir noktadır. Tartışma için teşekkürler. α

5

30 yılı aşkın bir süredir bu meslekte çalışan bir istatistikçiyim ve bu yazıyı okumadan önce, normal dağılımın çarpıklığını hiç duymamıştım. Çok eğri verileriniz varsa, neden özellikle lognormal veya gama yerine eğri normal görünmek istersiniz? Gamma, lognormal veya skew normal gibi parametrik bir dağılım aileniz olduğunda, ki-kare veya Kolmogorov-Smirnov gibi bir uyum iyiliği testi uygulayabilirsiniz.


5
Azzalini eğriliği normal 1985'te önerilen popüler bir dağılımdır. Tüm gerçek çizgi üzerinde destek vardır.

1
@Prostrastinator Şimdi biliyorum ve muhtemelen daha önce duymuş olmalı. Ama benim açımdan, onu duymamış olduğumdan, belki de diğer çarpık dağılımlardan biraz daha belirsiz olduğunu düşünüyorum. Bir shift parametresi eklenirse yalnızca [0.∞) veya {a, ∞) desteğine sahip örneklerimin aksine, tüm gerçek hat üzerindeki destekle ilgili noktayı anlarım. Bu dağılımların hepsi sadece verilerin nasıl dağıtılacağını açıklayan yaklaşımlardır. Tüm negatif değerlerin mümkün olduğunu gerçekten biliyor muyuz? Pratik durumlarda veriler muhtemelen alt ve üst sınırlara sahiptir.
Michael R.Chernick

1
@Procrastinator Bunun yorumumla bir ilgisi yok. Diyelim ki, gerçek veriler sınırsız dağılımlarla iyi yakınlaştırılsalar bile gerçekten sınırlıdır.
Michael R.Chickick

1
@Procrastinator Pek değil. Sonlu bir sayı kümesi verilirse, verilerden ayrı veya sürekli bir dağıtımdan gelip gelmediklerini söyleyemezsiniz. Aynı şey sınırlılık için de geçerlidir. Veriler dışında, sınırlı ve sürekli veya ayrık olup olmadığını ölçtüğünüz şey temelinde kesin olarak bileceğinizi söylüyorum. Örneğin, bir kişinin kilosunu ölçüyorsanız, kilonun 0'dan büyük olduğunu ve 5000 lira fiziksel sınırlamalar ile sınırlandığını bilirsiniz.
Michael R.Chernick

1
Ayrıca ağırlık ölçümleri sadece belirli sayıda ondalık basamağa kadar belirlenebilse de, ağırlığın sürekli olarak kabul edilmesi mantıklıdır. Şimdi bir bozuk parayı 10 kez çevirecekseniz, alacağınız kafa sayısının 0 ile 10 arasında bir tamsayı olması gerektiğini biliyorsunuz (bu yüzden ayrık ve sınırlı). Demek istediğim, dağılımdaki sınırların genellikle çok açık olduğu. Sürekli ve ayrık dağılımlar arasında karar verirken o kadar net değildir.
Michael R.Chernick

1

Sonuçta benim çözümüm fGarch paketini indirmekti ve fGarchsnormFit tarafından bir Skewed-Normal'e parametreler için MLE'ler elde etmekti.

Sonra dsnormfGarch tarafından sağlanan fonksiyonla bu parametreleri bir Kolmogorov-Smirnov testine ekledim.


MLE ile parametrik olmayan bir test olan Kolmogorov-Smirnov testini nasıl birleştirebilirsiniz?

Ne yaptığım hakkında hiçbir fikrim olmadığını ve sadece körü körüne dolaşırken belirtmek isterim . KS'nin ki kare gibi çalıştığını ve hangi örnek verilere sahip olduğum ile dağıtımın kendisinin ne olması gerektiğini fark ettiğini düşündüm. R'nin ks.test önce örnek verisini, sonra da bir dağılımı, o dağılıma ait parametrelerle birlikte kabul eder. MLE'leri parametre olarak kullandım. Ayrıca, Chi kare çalışmalarının nasıl yanlış olabileceğine dair varsayımım / remberance'ım da yanlış olabilir ...
Squidly

Bence bu yaklaşıma dikkat etmelisin. İlk olarak, cevap vermelisiniz: verilerinizin çarpıklığı normalliği için uygunluk testi yapmak ister misiniz? veya verilerin normal olup olmadığını kontrol etmek mi istiyorsunuz, yani ? H0:λ=0

İkincisi Eğer uyum yeterince zayıfsa, küçük bir P değeri alacağımı ve mutlu bir şekilde reddedebileceğimi . Bunu ben yaptım. H 0H0=λ=0H0
Squidly

1
@Prorastinator Ampirik cdf'ye dayanan birçok uyum testi vardır. Kolmogorov Smirnov bunlardan biri. Bu test, ampirik cdf'yi belirli bir dağıtımla (ve testten önce bilinmeyen parametreler tahmin edildiğinde yapılan ayarlarla) karşılaştırmak için kullanılabilir.Örneğin normalite için bir dağılımın reddedilmesinin dağılımların nasıl farklı olduğunu söylemediğinden kesinlikle haklısınız. Bunu resmi olarak yapmak istiyor, önemli çarpıklığı test edebilir ve daha sonra normal çarpıklık için KS veya chi kare testi yapabilir.Çoklu testler için ayarlamalar yapılabilir.Neden OP ile
kaçırılmalı

0

Http://www.egyankosh.ac.in/bitstream/123456789/25807/1/Unit6.pdf ve http://en.wikipedia.org/wiki/Skewness sayfasına göz atın

Çarpıklık için Karl Pearson testini kullanabilirsiniz. Üçüncü momentin standart sapma küpüne oranına çarpıklık katsayısı denir. Simetrik dağılımlarda çarpıklık = 0 olur


2
Verilerimin eğriliğini çözmek istemiyorum. Çarpık olduğunu biliyorum. Verilerimin normal bir dağılım izleyip izlemediğini bilmek istiyorum.
Squidly

2
Hangi yazılımı kullanıyorsunuz, R, ML tahminlerini hesaplayan işlevleri içeren bir paket 'sn' (normal eğri) içeriyor. Gerçi işlevlerin tam olarak emin değilim - R paketi hakkında detaylar için bu siteye bakın azzalini.stat.unipd.it/SN
NaN

0

SPSS'de çarpıklık hakkında bir tahmin edinebilirsiniz (analiz edip tanımlayıcılara gidip çarpıklığı işaretleyerek) ve çarpıklık ve SE (standart hata) çarpıklık puanı elde edersiniz. Çarpıklığı SE ile bölün ve puanınız + -1.96 arasında ise normal çarpıktır. Eğer çarpık değilse, orada parametrik olmayan birçok test var! İyi şanslar ve en iyisi!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.