Jarque-Bera normallik sınaması,ekometrik paket programlarında genellikle anakütleyi referans alarak hesaplamaya dahil eder.Ancak bu durum gerçek hayatta genellikle böyle olmaz.Gerçek hayat çalışmalarında anakütleye erişmek veya tamsayım yapmak oldukça zaman alıcı ve maliyetlidir.Dolayısıyla eğer bir zaman serisi analizi için jarque-bera ile normallik sınaması yapmak istiyorsak veya bir değişken için normallik sınaması yapmak istiyorsak, anakütle veya örneklem istatistiğini kullanmak bizim tercihimizde olmalıdır. Bu sebep ile birlikte R yazılım dilini kullanarak örneklem skewness ve örneklem kurtosis değerleri hesaplayan ve nihai hedef olarak örnekleme jarque bera test istatiğini hesaplayan fonksiyonumu inceleyelim.
#n tane gözlem değerinden oluşan bir örnek için skewness
pay_skewness <- function(x){
toplam = 0
for (i in x){
q = (i - mean(x))**3
toplam = toplam + q
}
sonuc = toplam/length(x)
}
payda_skewness <- function(qq){
toplam = 0
for(i in qq){
q = (i - mean(qq))**2
toplam = toplam + q
}
sonuc=(toplam/(length(qq)-1))**(1.5)
}
skewness_tutorial <- function(x){
sonuc = pay_skewness(x)/payda_skewness(x)
}
#Kontrol
test_verisi <- c(10,15,30,40,23,43,23,43,54,76,65,43,12,34,54,65,40)
skewness_tutorial(test_verisi)
#Sonuç diğer hesaplayıcılar ile arasında fark yok.
#n tane gözlem değerinden oluşan bir örnek için kurtosis
pay_kurtosis <- function(y){
toplam2=0
for(i in y){
z= (i - mean(y))**4
toplam2= toplam2 + z
}
sonuc = toplam2/(length(y))
}
payda_kurtosis <- function(y){
toplam2=0
for(i in y){
z=(i-mean(y))**2
toplam2= toplam2 + z
}
sonuc = toplam2/length(y)
sonuc = sonuc**2
}
kurtosis_tutorial <- function(y){
sonuc = (pay_kurtosis(y)/payda_kurtosis(y))
}
#Örneklem için jarque bera test istatistiği
#Sturges 1+3.322*log(n) ile veri setinin kaç k gruba ayrılcağına karar veren bir fonksiyondur.
sturges <- function(veri){
round(1+3.322*log10(veri))
}
jarque_bera <- function(z){
k=2
a=(length(z)-k)/6
b=(skewness_tutorial(z))**2
c=(((kurtosis_tutorial(z)-3)**2)/4)
sonuc = a*(b+c)
cat("Jarque-Bera Test İstatistiği : ",sonuc,"\n")
par(mfrow=c(1,2))
hist(z,xlab=c("GÖZLEM DEĞERLERİ"),
ylab=c("FREKANSLAR"),
col=c("#ffeaa7"),
main=c("Histogram Grafiği"),
breaks=sturges(length(z)))
hist(z,xlab=c("GÖZLEM DEĞERLERİ"),
ylab=c("ORANLAR"),
col=c("#ffeaa7"),
main=c("HİSTOGRAM GRAFİĞİ" ,"\n" ,"VE POLİGON EĞRİSİ"),
breaks=sturges(length(z)),
prob=T)
lines(density(z,adjust=2),col="red",lwd=3,lty="dotted")
print("Ho:Veriler teorik normal dağılma uygundur")
print("H1:Veriler teorik normal dağılma uygun değildir.")
print("Güven Düzeyi : 95")
cat("Gözlem Sayısı",length(z),"\n")
cat("Çarpıklık Değeri",skewness_tutorial(z),"\n")
cat("Basıklık Değeri",kurtosis(z),"\n")
if (sonuc > 5.991){
print("Ho hipotezi reddedilir,veriler teorik normal dağılıma uygun değildir")
}else{
print("Ho hipotezi reddedilemez,veriler teorik normal dağılma uygundur.")}
}
#Test
#Kıyaslama
jarque_bera(iris$Sepal.Length)
shapiro.test(iris$Sepal.Length)
jarque_bera(iris$Sepal.Width)
shapiro.test(iris$Sepal.Width)
jarque_bera(iris$Petal.Length)
shapiro.test(iris$Petal.Length)
jarque_bera(iris$Petal.Width)
shapiro.test(iris$Petal.Width)
Sonuçların Değerlendirilmesi ve Nitelikler
1-jarque bera test istatistiği hesaplandı
2-Hipotez takımları oluşturuldu
3-Güven düzayi sabit 0.95 olarak belirlendi
4-Çarpıklık değeri hesaplandı
5-Basıklık değeri hesaplandı
6-Hipotezin red veya kabul durumuna karar verildi.
7-Histogram grafiği oluşturuldu.
8-Poligon eğrisi eklendi ve grupların oranları eklendi.