Bu çözüm, @Innuo tarafından soruna bir yorumda yapılan bir öneri uygular:
Şimdiye kadar görülen tüm verilerden 100 veya 1000 büyüklüğünde düzgün örneklenmiş rastgele bir altküme tutabilirsiniz. Bu set ve ilişkili "çitler" zamanda güncellenebilir .O ( 1 )
Bu altkümeyi nasıl koruyacağımızı öğrendikten sonra , böyle bir örnekten popülasyon ortalamasını tahmin etmek istediğimiz herhangi bir yöntemi seçebiliriz . Bu, herhangi bir giriş akışı ile standart istatistik örnekleme formülleri kullanılarak tahmin edilebilecek bir doğrulukta çalışacak varsayımlarda bulunmayan evrensel bir yöntemdir . (Doğruluk, numune boyutunun kare kökü ile ters orantılıdır.)
Bu algoritma, girdi olarak bir veri akışı kabul bir numune boyutu ve numunelerin bir akım üretir her biri popülasyonu temsil etmektedir . Özellikle, , den boyutunda basit bir rastgele örnektir (değiştirmeden).x ( t ) , t = 1 , 2 , … ,ms ( t )X( t ) = ( x ( 1 ) , x ( 2 ) , … , x ( t ) )1 ≤ i ≤ ts ( i )mX( t )
Bunun gerçekleşmesi için, bu her yeterli -eleman alt kümesi, bir indekslerini olma şansı eşit de . Bu, cinsinden olma olasılığının, sağlanan eşit olduğu anlamına gelir .m{ 1 , 2 , … , t }xs ( t )x ( i ) , 1 ≤ i < t ,s ( t )m / tt ≥ m
Başlangıçta sadece öğeleri saklanana kadar akışı topluyoruz . Bu noktada sadece bir olası örnek vardır, bu nedenle olasılık koşulu önemsiz bir şekilde karşılanır.m
olduğunda algoritma devreye girer . Endüktif olarak, nin için basit bir rastgele örneği olduğunu varsayalım . Geçici olarak . Let (oluşturmak için kullanılan herhangi bir önceki değişkenlerin bağımsız tek tip bir rastgele değişken olarak ). Eğer daha sonra bir rastgele seçilmiş elemanının yerine göre . Tüm prosedür bu!t = m + 1s ( t )X( t )t>ms(t+1)=s(t)U(t+1)s(t)U(t+1)≤m/(t+1)sx(t+1)
Açıkça , cinsinden olma ihtimaline sahiptir . Ayrıca, indüksiyon hipotezi ile, olasılığı vardı olma . Olasılığı ile = bu kaldırılmış olur , geriye kalan eşittir nereden olasılıkx(t+1)m/(t+1)s(t+1)x(i)m/ts(t)i≤tm/(t+1)×1/m1/(t+1)s(t+1)
mt(1−1t+1)=mt+1,
tam olarak gerektiği gibi. İndüksiyonla, o zaman, tüm dahil olma olasılıklarıx(i) içinde s(t)doğrudur ve bu inklüzyonlar arasında özel bir korelasyon olmadığı açıktır. Bu algoritmanın doğru olduğunu kanıtlar.
Algoritma verimliliği O(1) çünkü her aşamada en fazla iki rasgele sayı hesaplanır ve mdeğerleri değiştirilir. Depolama gereksinimiO(m).
Bu algoritmanın veri yapısı örnekten oluşur s endeks ile birlikte t nüfusun X(t)örnekler. Başlangıçtas=X(m) ve şu algoritma ile devam edin: t=m+1,m+2,…. İşte R
güncellenecek bir uygulama(s,t) değeri olan x üretmek için (s,t+1). (Argüman n
şu rolü oynar:tve sample.size
olduğum. İçerikt arayan tarafından korunur.)
update <- function(s, x, n, sample.size) {
if (length(s) < sample.size) {
s <- c(s, x)
} else if (runif(1) <= sample.size / n) {
i <- sample.int(length(s), 1)
s[i] <- x
}
return (s)
}
Bunu göstermek ve test etmek için, ortalamanın olağan (sağlam olmayan) tahmincisini kullanacağım ve ortalamayı s(t) gerçek anlamıyla X(t)(her adımda görülen toplam veri kümesi). Oldukça düzgün değişen ancak periyodik olarak dramatik sıçramalara giren biraz zor bir giriş akışı seçtim. Örnek boyutum=50 bu arazilerdeki örnekleme dalgalanmalarını görmemizi sağlayan oldukça küçüktür.
n <- 10^3
x <- sapply(1:(7*n), function(t) cos(pi*t/n) + 2*floor((1+t)/n))
n.sample <- 50
s <- x[1:(n.sample-1)]
online <- sapply(n.sample:length(x), function(i) {
s <<- update(s, x[i], i, n.sample)
summary(s)})
actual <- sapply(n.sample:length(x), function(i) summary(x[1:i]))
Bu noktada online
, bu çalışan numuneyi koruyarak üretilen ortalama tahminlerin sırasıdır.50değerleri her an mevcut olan tüm verilerden actual
üretilen ortalama tahmin dizisidir . Grafik, bu örnekleme prosedürünün ( gri renkte) verilerini (gri), (siyah) ve iki bağımsız uygulamasını gösterir. Anlaşma beklenen örnekleme hatası dahilinde:actual
plot(x, pch=".", col="Gray")
lines(1:dim(actual)[2], actual["Mean", ])
lines(1:dim(online)[2], online["Mean", ], col="Red")
Ortalamanın sağlam tahmincileri için lütfen sitemizde arama yapın aykırıve ilgili terimler. Dikkate değer olasılıklar arasında Winsorized araçları ve M-tahmin ediciler bulunmaktadır.