Bu cevap iki çözüm sunar: Sheppard'ın düzeltmeleri ve maksimum olasılık tahmini. Her ikisi de, standart sapmanın bir tahminine yaklaşıyor: birinci için ve ikinci için (normal "tarafsız" tahmin ediciyle karşılaştırılabilecek şekilde ayarlandığında).7.697.707.69
Sheppard'ın düzeltmeleri
"Sheppard'ın düzeltmeleri", bindirilmiş verilerden hesaplanan momentleri ayarlayan formüllerdir (bunun gibi);
Verilerin sınırlı bir aralıkta desteklenen bir dağıtım tarafından yönetildiği varsayılmaktadır[a,b]
bu aralık, sırayla , nispeten küçük olan ortak eşit bölmelerine bölünür (çöp kutusu, tüm verilerin büyük bir bölümünü içermez)h
dağılım sürekli bir yoğunluk fonksiyonuna sahiptir.
Düzenli aralıklı noktalardaki integral değerlerinin doğrusal kombinasyonları açısından integrallere yaklaşan ve bu nedenle genel olarak uygulanabilir (ve sadece Normal dağılımlara değil), Euler-Maclaurin toplam formülünden türetilmiştir.
Kesinlikle bir normal dağılım konuşan rağmen değil son derece yakın bir yaklaşımla, sonlu bir aralıkta desteklenen öyle. Temel olarak, tüm olasılıkları ortalamanın yedi standart sapması içinde bulunur. Bu nedenle, Sheppard'ın düzeltmeleri, Normal dağılımdan geldiği varsayılan veriler için geçerlidir.
Sheppard'ın ilk iki düzeltmesi
Bindirilmiş verinin ortalamasını verinin ortalaması için kullanın (yani, ortalama için düzeltme gerekmez).
Verinin (yaklaşık) varyansını elde etmek için, toplanmış verinin varyansından 2/12 çıkarın .h2/12
nereden geliyor? Bu, uzunluğu boyunca dağılmış tek tip bir değişkenin varyansına eşittir . Sezgisel olarak, o zaman, Sheppard'ın ikinci an için düzeltmesi , verilerin bindirilmesinin - her bir bölmenin orta noktasıyla etkin bir şekilde değiştirilmesinin), ile arasında değişen, yaklaşık olarak eşit olarak dağılmış bir değer eklediğini, dolayısıyla şişirildiğini göstermektedir. 2/12 ile varyans .h2/12h−h/2h/2h2/12
Hesaplamaları yapalım. Bunları R
göstermek için kullanıyorum , sayıları ve kutuları belirleyerek başlayacağım:
counts <- c(1,2,3,4,1)
bin.lower <- c(40, 45, 50, 55, 70)
bin.upper <- c(45, 50, 55, 60, 75)
Sayılar için kullanılacak uygun formül , bölme genişliklerinin sayılarla verilen miktarlarla çoğaltılmasından gelir ; yani, bindirilmiş veri eşdeğerdir
42.5, 47.5, 47.5, 52.5, 52.5, 57.5, 57.5, 57.5, 57.5, 72.5
Bunların sayısı, ortalaması ve varyansı, verileri bu şekilde genişletmek zorunda kalmadan doğrudan hesaplanabilir, ancak: bir kutu orta nokta ve sayısı olduğunda , karelerin toplamına katkısı . Bu , soruya atıfta bulunulan Vikipedi formüllerinin ikinci yol açar .xkkx2
bin.mid <- (bin.upper + bin.lower)/2
n <- sum(counts)
mu <- sum(bin.mid * counts) / n
sigma2 <- (sum(bin.mid^2 * counts) - n * mu^2) / (n-1)
Ortalama ( mu
) (düzeltmeye gerek yok) ve varyansı ( ) . (Bu kare kökü söz belirtildiği gibi). Çünkü, genişliği, ortak bölmesi , çıkartmanın varyans ve elde edilmesi, onun kare kökü alınır standart sapma için .1195/22≈54.32sigma2
675/11≈61.367.83h=5h2/12=25/12≈2.08675/11−52/12−−−−−−−−−−−−√≈7.70
Maksimum Olabilirlik Tahminleri
Alternatif bir yöntem, maksimum olasılık tahminini uygulamaktır. Koltuğuna oturduğunda dağılımını yatan bir dağıtım işlevi vardır (parametrelere bağlı ve bin tahmin edilecek) içeren bağımsız bir dizi dışarı değerlerini, aynı değerleri dağıtılan sonra, (ek) Bu çöp kutusunun kütük olasılığına katkıFθθ(x0,x1]kFθ
log∏i=1k(Fθ(x1)−Fθ(x0))=klog(Fθ(x1)−Fθ(x0))
(bkz. MLE / Lognormally dağılım aralığının olasılığı ).
Tüm bölmeleri toplamak, günlük kümesi için . Her zamanki gibi, en aza indiren bir tahmini buluyoruz . Bu sayısal optimizasyon gerektirir ve için iyi başlangıç değerleri sağlayarak hızlandırılır . Aşağıdaki kod Normal dağıtım için çalışıyor:Λ(θ)θ^−Λ(θ)θR
sigma <- sqrt(sigma2) # Crude starting estimate for the SD
likelihood.log <- function(theta, counts, bin.lower, bin.upper) {
mu <- theta[1]; sigma <- theta[2]
-sum(sapply(1:length(counts), function(i) {
counts[i] *
log(pnorm(bin.upper[i], mu, sigma) - pnorm(bin.lower[i], mu, sigma))
}))
}
coefficients <- optim(c(mu, sigma), function(theta)
likelihood.log(theta, counts, bin.lower, bin.upper))$par
Elde edilen katsayılar .(μ^,σ^)=(54.32,7.33)
Unutmayın, Normal dağılımlar için, ( olasılıkla bindirilmiş ve verilmemiş) maksimum olasılık tahmini , varyansın çarpıldığı daha geleneksel "önyargılı" bir tahmin değil, verilerin popülasyonu SD'dir. . O zaman (karşılaştırma için) MLE değerini , . Bu, Sheppard'ın olan düzeltmesinin sonucu ile olumlu şekilde karşılaştırılıyor .n / ( n - 1 ) σ √σn/(n−1)σ7.70n/(n−1)−−−−−−−−√σ^=11/10−−−−−√×7.33=7.697.70
Varsayımları Doğrulamak
Bu sonuçları görselleştirmek için, takılı Normal yoğunluğunu bir histogramın üzerine çizebiliriz:
hist(unlist(mapply(function(x,y) rep(x,y), bin.mid, counts)),
breaks = breaks, xlab="Values", main="Data and Normal Fit")
curve(dnorm(x, coefficients[1], coefficients[2]),
from=min(bin.lower), to=max(bin.upper),
add=TRUE, col="Blue", lwd=2)
Bazıları için bu uygun gibi görünmeyebilir. Bununla birlikte, veri kümesi küçük olduğu için (sadece değer), gözlemlerin dağılımı ile gerçek altta yatan dağılım arasında şaşırtıcı derecede büyük sapmalar meydana gelebilir.11
Verilerin bir Normal dağılım tarafından yönetildiği varsayımını (MLE tarafından yapılan) daha resmi olarak kontrol edelim. Yaklaşık bir uyumluluk testi bir testinden elde edilebilir : Tahmini parametreler her kutudaki beklenen veri miktarını gösterir; istatistik beklenen sayımları için gözlemlenen sayılarını karşılaştırır. İşte bir test :χ 2χ2χ2R
breaks <- sort(unique(c(bin.lower, bin.upper)))
fit <- mapply(function(l, u) exp(-likelihood.log(coefficients, 1, l, u)),
c(-Inf, breaks), c(breaks, Inf))
observed <- sapply(breaks[-length(breaks)], function(x) sum((counts)[bin.lower <= x])) -
sapply(breaks[-1], function(x) sum((counts)[bin.upper < x]))
chisq.test(c(0, observed, 0), p=fit, simulate.p.value=TRUE)
Çıktı
Chi-squared test for given probabilities with simulated p-value (based on 2000 replicates)
data: c(0, observed, 0)
X-squared = 7.9581, df = NA, p-value = 0.2449
Yazılım bir permütasyon testi yaptı (test istatistiği tam olarak ki-kare dağılımını takip etmediğinden gereklidir: serbestlik derecelerinin nasıl anlaşılacağı konusundaki analizime bakın ). Küçük olmayan p değeri, normallikten ayrılma konusunda çok az kanıt gösterir: Maksimum olabilirlik sonuçlarına güvenmek için nedenlerimiz vardır.0.245