Varyans hesaplanması için algoritmalar - Vikipedi
İçeriğe atla
Ana menü
Gezinti
  • Anasayfa
  • Hakkımızda
  • İçindekiler
  • Rastgele madde
  • Seçkin içerik
  • Yakınımdakiler
Katılım
  • Deneme tahtası
  • Köy çeşmesi
  • Son değişiklikler
  • Dosya yükle
  • Topluluk portalı
  • Wikimedia dükkânı
  • Yardım
  • Özel sayfalar
Vikipedi Özgür Ansiklopedi
Ara
  • Bağış yapın
  • Hesap oluştur
  • Oturum aç
  • Bağış yapın
  • Hesap oluştur
  • Oturum aç

İçindekiler

  • Giriş
  • 1 I. Naif algoritma
  • 2 II. İki-geçişli algoritma
    • 2.1 IIa. Düzeltilmiş toplam şekli
  • 3 III. On-line algoritması
  • 4 IV. Ağırlıklı küçük artışlı algoritma
  • 5 V. Paralel algoritma
    • 5.1 V.a. Üst seviyede istatistikler
  • 6 Örnek
  • 7 Ayrıca bakınız
  • 8 Kaynakça
  • 9 Dış bağlantılar

Varyans hesaplanması için algoritmalar

  • English
  • Español
  • فارسی
  • Français
  • İtaliano
Bağlantıları değiştir
  • Madde
  • Tartışma
  • Oku
  • Değiştir
  • Kaynağı değiştir
  • Geçmişi gör
Araçlar
Eylemler
  • Oku
  • Değiştir
  • Kaynağı değiştir
  • Geçmişi gör
Genel
  • Sayfaya bağlantılar
  • İlgili değişiklikler
  • Kalıcı bağlantı
  • Sayfa bilgisi
  • Bu sayfayı kaynak göster
  • Kısaltılmış URL'yi al
  • Karekodu indir
Yazdır/dışa aktar
  • Bir kitap oluştur
  • PDF olarak indir
  • Basılmaya uygun görünüm
Diğer projelerde
  • Vikiveri ögesi
Görünüm
Vikipedi, özgür ansiklopedi

İstatistiksel ölçülerinin bilgisayar ile yapılan hesaplanmalarında varyans hesaplanması için kullanılan algoritmalar pratik sonuçlar elde edilmesinde önemli rol oynamaktadırlar. Varyansın hesaplanması için işe yarar bilgisayar algoritmalarının tasarlanmasında ana sorun varyans formüllerinin veri kare toplamlarının hesaplanmasını gerektirmesindedir. Bu işlem yapılırken sayısal kararsızlık problemleri ve özellikle büyük veri değerleri bulunuyorsa aritmetik taşmalar problemleri ortaya çıkması çok muhtemeldir.

Ancak, 2014 yılında yayınlanan "İstatistikte Altın Oran" adlı bir kitapta, kareler ortalamasının karekökü operatörü yerine, üstel bir işlem içermeyen, sadece dört işlem ve sınırlı toplama operatörü ile hesaplanabilen bir sapma metodolojisi tanımlanmıştır. Tanımlanan bu sapma'nın en dikkat çekici özelliği, ortalama'nın sağı ve solu için, birbirinden bağımsız iki ayrı sapma üretmesidir.[1]

I. Naif algoritma

[değiştir | kaynağı değiştir]

Tüm bir anakütle veri dizisi için varyansın hesaplanması için formül şudur:

σ 2 = ∑ i = 1 n x i 2 − ( ∑ i = 1 n x i ) 2 / n n . {\displaystyle \sigma ^{2}=\displaystyle {\frac {\sum _{i=1}^{n}x_{i}^{2}-(\sum _{i=1}^{n}x_{i})^{2}/n}{n}}.\!} {\displaystyle \sigma ^{2}=\displaystyle {\frac {\sum _{i=1}^{n}x_{i}^{2}-(\sum _{i=1}^{n}x_{i})^{2}/n}{n}}.\!}

Bir sonsuz olmayan n gözlem hacminde bir örneklem veri dizisi kullanarak anakütle varyansının bir yansız kestirim değerini bulmak için formül şöyle ifade edilir:

s 2 = ∑ i = 1 n x i 2 − ( ∑ i = 1 n x i ) 2 / n n − 1 . {\displaystyle s^{2}=\displaystyle {\frac {\sum _{i=1}^{n}x_{i}^{2}-(\sum _{i=1}^{n}x_{i})^{2}/n}{n-1}}.\!} {\displaystyle s^{2}=\displaystyle {\frac {\sum _{i=1}^{n}x_{i}^{2}-(\sum _{i=1}^{n}x_{i})^{2}/n}{n-1}}.\!}

Bu formüller kullanılarak varyans kestirimi hesaplamak için bir naif algoritma için szde kod şöyle verilir:

n = 0
toplam = 0
toplam_kare = 0

for veri olan her x:
  n = n + 1
  toplam = toplam + x
  toplam_kare = toplam_kare + x*x
end for

ortalama = toplam/n
varyans = (toplam_kare - toplam*ortalama)/(n - 1)

Bu algoritma bir sonlu anakutle verileri için varyansin hesaplanmasına hemen adapte edilebilir: en son satırda ki n - 1 ile bolum yapılacağına n ile bolum yapılır.

toplam_kare ve toplam * ortalama birbirine hemen yakın sayılar olabilir. Bu nedenle sonucun kesinliği hesaplamada kullanılan kayan noktali aritmetiğin doğal kesinliğinden daha az olabilir. Eğer varyans değeri elde edilen veri toplamına karşıt olarak daha küçük ise, bu sorun daha da şiddetle ortaya çıkar.

II. İki-geçişli algoritma

[değiştir | kaynağı değiştir]

Varyans için değişik bir formül kullanan diğer bir yaklaşım şu sözde kod ile verilmiştir:

n = 0
toplam1 = 0
for veri olan her x:
  n = n + 1
  toplam1 = toplam1 + x
end for
ortalama = toplam1/n

toplam2 = 0
for veri olan her x:
  toplam2 = toplam2 + (x - ortalama)^2
end for
varyans = toplam2/(n - 1)

IIa. Düzeltilmiş toplam şekli

[değiştir | kaynağı değiştir]

Yukarıda verilen algoritmanın düzeltilmiş toplam şekli şöyle verilir:

n = 0
toplam1 = 0
for veri olan her x:
  n = n + 1
  toplam1 = toplam1 + x
end for
ortalama = toplam1/n

toplam2 = 0
toplamc = 0
for veri olan her x:
  toplam2 = toplam2 + (x - ortalama)^2
  toplamc = toplamc + (x - ortalama)
end for
varyans = (toplam2 - toplamc^2/n)/(n - 1)

III. On-line algoritması

[değiştir | kaynağı değiştir]
m y e n i = n m e s k i + x y e n i n + 1 = m e s k i + x y e n i − m e s k i n + 1 {\displaystyle m_{\mathrm {yeni} }={\frac {n\;m_{\mathrm {eski} }+x_{\mathrm {yeni} }}{n+1}}=m_{\mathrm {eski} }+{\frac {x_{\mathrm {yeni} }-m_{\mathrm {eski} }}{n+1}}\!} {\displaystyle m_{\mathrm {yeni} }={\frac {n\;m_{\mathrm {eski} }+x_{\mathrm {yeni} }}{n+1}}=m_{\mathrm {eski} }+{\frac {x_{\mathrm {yeni} }-m_{\mathrm {eski} }}{n+1}}\!}
s n − 1 , y e n i 2 = ( n − 1 ) s n − 1 , e s k i 2 + ( x y e n i − m y e n i ) ( x y e n i − m e s k i ) n n > 0 {\displaystyle s_{\mathrm {n-1,yeni} }^{2}={\frac {(n-1)\;s_{\mathrm {n-1,eski} }^{2}+(x_{\mathrm {yeni} }-m_{\mathrm {yeni} })\,(x_{\mathrm {yeni} }-m_{\mathrm {eski} })}{n}}\;\;\,\,\;\,\mathrm {n>0} \!} {\displaystyle s_{\mathrm {n-1,yeni} }^{2}={\frac {(n-1)\;s_{\mathrm {n-1,eski} }^{2}+(x_{\mathrm {yeni} }-m_{\mathrm {yeni} })\,(x_{\mathrm {yeni} }-m_{\mathrm {eski} })}{n}}\;\;\,\,\;\,\mathrm {n>0} \!}
s n , y e n i 2 = ( n ) s n , e s k i 2 + ( x y e n i − m y e n i ) ( x y e n i − m e s k i ) n + 1 . {\displaystyle s_{\mathrm {n,yeni} }^{2}={\frac {(n)\;s_{\mathrm {n,eski} }^{2}+(x_{\mathrm {yeni} }-m_{\mathrm {yeni} })\,(x_{\mathrm {yeni} }-m_{\mathrm {eski} })}{n+1}}.} {\displaystyle s_{\mathrm {n,yeni} }^{2}={\frac {(n)\;s_{\mathrm {n,eski} }^{2}+(x_{\mathrm {yeni} }-m_{\mathrm {yeni} })\,(x_{\mathrm {yeni} }-m_{\mathrm {eski} })}{n+1}}.}

Gereken yenileştirme için bulunabilecek daha uygun bir işlemin (cari) ortalamadan farkların karelerinin toplamını bulmak olduğu anlaşılmıştır; bu değer ∑ i = 1 n ( x i − m ) 2 {\displaystyle \sum _{i=1}^{n}(x_{i}-m)^{2}} {\displaystyle \sum _{i=1}^{n}(x_{i}-m)^{2}} olup burada M 2 {\displaystyle M_{2}} {\displaystyle M_{2}} olarak gösterilmektedir:

M 2 , y e n i = M 2 , e s k i + ( x n e w − m e s k i ) ( x y e n i − m y e n i ) {\displaystyle M_{\mathrm {2,yeni} }\!=M_{\mathrm {2,eski} }+(x_{\mathrm {new} }-m_{\mathrm {eski} })(x_{\mathrm {yeni} }-m_{\mathrm {yeni} })} {\displaystyle M_{\mathrm {2,yeni} }\!=M_{\mathrm {2,eski} }+(x_{\mathrm {new} }-m_{\mathrm {eski} })(x_{\mathrm {yeni} }-m_{\mathrm {yeni} })}
s n 2 = M 2 n {\displaystyle s_{\mathrm {n} }^{2}={\frac {M_{2}}{n}}} {\displaystyle s_{\mathrm {n} }^{2}={\frac {M_{2}}{n}}}
s n − 1 2 = M 2 n − 1 {\displaystyle s_{\mathrm {n-1} }^{2}={\frac {M_{2}}{n-1}}} {\displaystyle s_{\mathrm {n-1} }^{2}={\frac {M_{2}}{n-1}}}

Sayısal olarak daha kararlı bir algoritma aşağıda verilmiştir. Bu algoritma ortalama hesaplamak için kullanılmak niyetiyle Knuth (1998) tarafından verilmiş[2] ve orada ilk defa Welford(1962) tarafından ortaya atıldığı bildirilmiştir.[3]

n = 0
ortalama = 0
M2 = 0

for veri olan her x:
  n = n + 1
  delta = x - ortalama
  ortalama = ortalama + delta/n
  M2 = M2 + delta*(x - ortalama)   // Bu terim ortalama için yeni değeri kullanır
end for

varyans_n = M2/n
varyans = M2/(n - 1)


IV. Ağırlıklı küçük artışlı algoritma

[değiştir | kaynağı değiştir]

Eğer gözlemler için değişik ağırlıklar verilmişse, West (1979) şu küçük artışlı algoritmanın kullanılabileceğini bildirmiştir:[4]

n = 0
for veri olan her x:
  if n=0 then 
      n = 1
      ortalama = x
      S = 0
      toplamagırlık = agırlık
  else
      n = n + 1
      temp = agırlık + toplamagırlık
      S = S + sumweight*agırlık*(x-ortalama)^2 / temp
      ortalama = ortalama + (x-ortalama)*agırlık / temp
      toplamagırlık = temp
  end if
end for
Varyans = S * n / ((n-1)*toplamagırlık)  // eğer veri dizisi anakütle içinse n/(n-1) kullanılmaz.

V. Paralel algoritma

[değiştir | kaynağı değiştir]

Chan, Golub ve LeVeque (1979) hazırladıkları bir raporda yukarıda verilen III. On-line Algoritmasının bir örneklem olan X {\displaystyle X} {\displaystyle X}i herhangi iki tane X A {\displaystyle X^{A}} {\displaystyle X^{A}} ve X B {\displaystyle X^{B}} {\displaystyle X^{B}} setlerine ayırmak için işleme konabilen bir algoritmanın özel bir hali olduğunu bildirmişlerdir:

δ = m B − m A {\displaystyle \delta \!=m^{B}-m^{A}} {\displaystyle \delta \!=m^{B}-m^{A}}
m X = m A + δ ⋅ N B N X {\displaystyle m^{X}=m^{A}+\delta \cdot {\frac {N^{B}}{N^{X}}}} {\displaystyle m^{X}=m^{A}+\delta \cdot {\frac {N^{B}}{N^{X}}}}
M 2 X = M 2 A + M 2 B + δ 2 ⋅ N A N B N X {\displaystyle M_{2}^{X}=M_{2}^{A}+M_{2}^{B}+\delta ^{2}\cdot {\frac {N^{A}N^{B}}{N^{X}}}} {\displaystyle M_{2}^{X}=M_{2}^{A}+M_{2}^{B}+\delta ^{2}\cdot {\frac {N^{A}N^{B}}{N^{X}}}}.

Bu bazı hallerde daha kullanışlı olabilmektedir. Örneğin girdinin ayrılabilir parçalarına çoklu kompüter işlem birimlerinin kullanılması imkânını sağlayabilir.

V.a. Üst seviyede istatistikler

[değiştir | kaynağı değiştir]

Örneklem verileri için üst seviyede istatistikler olan çarpıklık ve basıklık ölçülerini bulmak için Terriberry Chen'in üçüncü ve dördüncü merkezsel moment bulmak için ortaya attığı formülü daha uygun bir şekle şöyle değiştirmiştir.::[5] M 3 X = M 3 A + M 3 B + δ 3 N A N B ( N A − N B ) ( N X ) 2 + 3 δ N A M 2 B − N B M 2 A N X {\displaystyle M_{3}^{X}=M_{3}^{A}+M_{3}^{B}+\delta ^{3}{\frac {N^{A}N^{B}(N^{A}-N^{B})}{(N^{X})^{2}}}+3\delta {\frac {N^{A}M_{2}^{B}-N^{B}M_{2}^{A}}{N^{X}}}} {\displaystyle M_{3}^{X}=M_{3}^{A}+M_{3}^{B}+\delta ^{3}{\frac {N^{A}N^{B}(N^{A}-N^{B})}{(N^{X})^{2}}}+3\delta {\frac {N^{A}M_{2}^{B}-N^{B}M_{2}^{A}}{N^{X}}}}

M 4 X = M 4 A + M 4 B + δ 4 N A N B ( ( N A ) 2 − N A N B + ( N B ) 2 ) ( N X ) 3 + 6 δ 2 ( N A ) 2 M 2 B + ( N B ) 2 M 2 A ( N X ) 2 + 4 δ N A M 3 B − N B M 3 A N X {\displaystyle {\begin{aligned}M_{4}^{X}=M_{4}^{A}+M_{4}^{B}&+\delta ^{4}{\frac {N^{A}N^{B}\left((N^{A})^{2}-N^{A}N^{B}+(N^{B})^{2}\right)}{(N^{X})^{3}}}\\&+6\delta ^{2}{\frac {(N^{A})^{2}M_{2}^{B}+(N^{B})^{2}M_{2}^{A}}{(N^{X})^{2}}}+4\delta {\frac {N^{A}M_{3}^{B}-N^{B}M_{3}^{A}}{N^{X}}}\\\end{aligned}}} {\displaystyle {\begin{aligned}M_{4}^{X}=M_{4}^{A}+M_{4}^{B}&+\delta ^{4}{\frac {N^{A}N^{B}\left((N^{A})^{2}-N^{A}N^{B}+(N^{B})^{2}\right)}{(N^{X})^{3}}}\\&+6\delta ^{2}{\frac {(N^{A})^{2}M_{2}^{B}+(N^{B})^{2}M_{2}^{A}}{(N^{X})^{2}}}+4\delta {\frac {N^{A}M_{3}^{B}-N^{B}M_{3}^{A}}{N^{X}}}\\\end{aligned}}}

Burada yine, M k {\displaystyle M_{k}} {\displaystyle M_{k}} verilerin ortalamadan farklarının üstel değerlerinin toplamlarıdır; yani Σ ( x − x ¯ ) k {\displaystyle \Sigma (x-{\overline {x}})^{k}} {\displaystyle \Sigma (x-{\overline {x}})^{k}} olur. Bu değerler kullanılarak çarpıklık ve basıklık ölçüleri şöyle bulunur:

g 1 = n M 3 M 2 3 / 2 {\displaystyle g_{1}={\frac {{\sqrt {n}}M_{3}}{M_{2}^{3/2}}}} {\displaystyle g_{1}={\frac {{\sqrt {n}}M_{3}}{M_{2}^{3/2}}}} : çarpıklık,
g 2 = n M 4 M 2 2 {\displaystyle g_{2}={\frac {nM_{4}}{M_{2}^{2}}}} {\displaystyle g_{2}={\frac {nM_{4}}{M_{2}^{2}}}} : basıklık.

Küçük artışlı hallerde (yani B = { x } {\displaystyle B=\{x\}} {\displaystyle B=\{x\}}), bu şöyle basitleştirilebilir:

δ = x − m {\displaystyle \delta \!=x-m} {\displaystyle \delta \!=x-m}
m ′ = m + δ n + 1 {\displaystyle m'=m+{\frac {\delta }{n+1}}} {\displaystyle m'=m+{\frac {\delta }{n+1}}}
M 2 ′ = M 2 + δ 2 n n + 1 {\displaystyle M_{2}'=M_{2}+{\frac {\delta ^{2}n}{n+1}}} {\displaystyle M_{2}'=M_{2}+{\frac {\delta ^{2}n}{n+1}}}
M 3 ′ = M 3 + δ 3 n ( n − 1 ) ( n + 1 ) 2 − 3 δ M 2 n + 1 {\displaystyle M_{3}'=M_{3}+{\frac {\delta ^{3}n(n-1)}{(n+1)^{2}}}-{\frac {3\delta M_{2}}{n+1}}} {\displaystyle M_{3}'=M_{3}+{\frac {\delta ^{3}n(n-1)}{(n+1)^{2}}}-{\frac {3\delta M_{2}}{n+1}}}
M 4 ′ = M 4 + δ 4 n ( n 2 − n + 1 ) ( n + 1 ) 3 + 6 δ 2 M 2 ( n + 1 ) 2 − 4 δ M 3 n + 1 {\displaystyle M_{4}'=M_{4}+{\frac {\delta ^{4}n(n^{2}-n+1)}{(n+1)^{3}}}+{\frac {6\delta ^{2}M_{2}}{(n+1)^{2}}}-{\frac {4\delta M_{3}}{n+1}}} {\displaystyle M_{4}'=M_{4}+{\frac {\delta ^{4}n(n^{2}-n+1)}{(n+1)^{3}}}+{\frac {6\delta ^{2}M_{2}}{(n+1)^{2}}}-{\frac {4\delta M_{3}}{n+1}}}

Burada dikkati çeken nokta, δ / ( n + 1 ) {\displaystyle \delta /(n+1)} {\displaystyle \delta /(n+1)} değerini korumak suretiyle, sadece tek bir bölme işleminin gerekli olması ve böylece çok az bir ekstra maliyetle daha yüksek istatistiksel ölçüler hesaplanabilmesidir.

Örnek

[değiştir | kaynağı değiştir]

Kullanılan kompüterde bütün "floating" nokta operasyonlarının IEEE 754 çifte-hassiyetli aritmetik ile yapıldığı varsayılsın. Sonsuz büyüklükte bir anakütleden n=5 büyüklüğünde bir örneklem olarak

4, 7, 13, 16

veri seti elde edildiğini düşünelim. Bu örneklem için örneklem ortalaması 10 olur ve yanlı olmayan anakütle varyans kestirimi 30dur. Hem "I. naif Algoritma" hem de "II. iki geçişli Algoritma" bu değerleri doğru olarak hesaplamaktadırlar.

Şimdi örnekleme olarak şu veri setini alalım:

10 8 + 4 {\displaystyle 10^{8}+4} {\displaystyle 10^{8}+4}, 10 8 + 7 {\displaystyle 10^{8}+7} {\displaystyle 10^{8}+7}, 10 8 + 13 {\displaystyle 10^{8}+13} {\displaystyle 10^{8}+13}, 10 8 + 16 {\displaystyle 10^{8}+16} {\displaystyle 10^{8}+16}

Bu örneklemin de, birinci örneklem gibi ayni varyans kestirimine sahip olması gerekir. "II. Algoritma" bu varyansı doğru olarak hesaplamaktadır. Fakat "I. Algoritma" sonuç olarak tam 30 yerine 29.333333333333332 sonucu verir. Bu dakiklik kaybının belki kabul edilebilir tolerans olduğu ve "I. Algoritma" kullanılmasının nispeten önemsiz bir hata doğurduğu söylenebilir.

Fakat bu "I. Algoritma" hesaplamasında çok önemli bir eksiklik ve hataya işaret etmektedir. Bu sefer örneklem olarak şunu alalım:

10 9 + 4 {\displaystyle 10^{9}+4} {\displaystyle 10^{9}+4}, 10 9 + 7 {\displaystyle 10^{9}+7} {\displaystyle 10^{9}+7}, 10 9 + 13 {\displaystyle 10^{9}+13} {\displaystyle 10^{9}+13}, 10 9 + 16 {\displaystyle 10^{9}+16} {\displaystyle 10^{9}+16}

Yine "II. Algoritma" doğru anakütle varyans kestirimi olarak 30 gösterir. Ama "I. Algoritma" kullanılınca elde edilen kestirim hesabı -170.66666666666666 olarak verilir. Bu çok önemli ve yapılmaması gereken bir hatadır; çünkü kavram olarak tanımlamayla varyans değerinin hiçbir zaman negatif olmaması gerekir.

Ayrıca bakınız

[değiştir | kaynağı değiştir]
  • Varyans
  • Varyans hesaplaması için formül

Kaynakça

[değiştir | kaynağı değiştir]
  1. ^ Mehmet Güven GÜNVER, Prof. Dr. Mustafa Şükrü ŞENOCAK, Doç Dr. Suphi VEHİD, İstatistikte Altın Oran, Türkmen Kitabevi, 2014, ISBN : 9786054749409
  2. ^ Knuth,D.E. (1998). The Art of Computer Programming, V.2: Seminumerical Algorithms, 3. ed., p. 232. Boston: Addison-Wesley.
  3. ^ Welford,B.P. (1962). "Note on a method for calculating corrected sums of squares and products". Technometrics C.4 No.3 say.419–420. [1]
  4. ^ D. H. D. West (1979). Communications of the ACM, 22, 9, 532-535: Updating Mean and Variance Estimates: An Improved Method
  5. ^ Terriberry,T.B. (2007), Computing Higher-Order Moments Online url=http://people.xiph.org/~tterribe/notes/homs.html 23 Nisan 2014 tarihinde Wayback Machine sitesinde arşivlendi.

Dış bağlantılar

[değiştir | kaynağı değiştir]
  • Eric W. Weisstein, Sample Variance Computation (MathWorld)
"https://tr.wikipedia.org/w/index.php?title=Varyans_hesaplanması_için_algoritmalar&oldid=34411280" sayfasından alınmıştır
Kategoriler:
  • İstatistik için algoritmalar
  • İstatistiksel yayılma ve sapma
Gizli kategori:
  • Webarşiv şablonu wayback bağlantıları
  • Sayfa en son 22.51, 27 Kasım 2024 tarihinde değiştirildi.
  • Metin Creative Commons Atıf-AynıLisanslaPaylaş Lisansı altındadır ve ek koşullar uygulanabilir. Bu siteyi kullanarak Kullanım Şartlarını ve Gizlilik Politikasını kabul etmiş olursunuz.
    Vikipedi® (ve Wikipedia®) kâr amacı gütmeyen kuruluş olan Wikimedia Foundation, Inc. tescilli markasıdır.
  • Gizlilik politikası
  • Vikipedi hakkında
  • Sorumluluk reddi
  • Davranış Kuralları
  • Geliştiriciler
  • İstatistikler
  • Çerez politikası
  • Mobil görünüm
  • Wikimedia Foundation
  • Powered by MediaWiki
Varyans hesaplanması için algoritmalar
Konu ekle