Balasan ini menyajikan dua solusi: Koreksi Sheppard dan estimasi kemungkinan maksimum. Keduanya sangat setuju pada estimasi standar deviasi: untuk yang pertama dan 7,69 untuk yang kedua (bila disesuaikan agar sebanding dengan penduga "tidak bias" yang biasa).7.707.69
Koreksi Sheppard
"Koreksi Sheppard" adalah rumus yang mengatur momen yang dihitung dari data yang dibuang (seperti ini) di mana
data diasumsikan diatur oleh distribusi yang didukung pada interval terbatas [a,b]
interval tersebut dibagi secara berurutan menjadi nampan yang sama dengan lebar umum yang relatif kecil (tidak ada nampan berisi sebagian besar dari semua data)h
distribusi memiliki fungsi kepadatan kontinu.
Mereka diturunkan dari rumus jumlah Euler-Maclaurin, yang mendekati integral dalam hal kombinasi linear dari nilai-nilai integrand pada titik-titik yang berjarak secara teratur, dan oleh karena itu umumnya berlaku (dan bukan hanya untuk distribusi Normal).
Meskipun secara tegas distribusi Normal tidak didukung pada interval terbatas, hingga perkiraan yang sangat dekat. Pada dasarnya semua probabilitasnya terkandung dalam tujuh standar deviasi rata-rata. Oleh karena itu koreksi Sheppard berlaku untuk data yang diasumsikan berasal dari distribusi Normal.
Dua koreksi Sheppard pertama adalah
Gunakan rata-rata dari data yang dibuang untuk rata-rata data (yaitu, tidak diperlukan koreksi untuk rata-rata).
Kurangi h2/12 dari varians dari data binned untuk mendapatkan (perkiraan) varians dari data.
h2/12h−h/2h/2h2/12 .
Mari kita lakukan perhitungan. Saya gunakan R
untuk mengilustrasikannya, mulai dengan menentukan jumlah dan nampan:
counts <- c(1,2,3,4,1)
bin.lower <- c(40, 45, 50, 55, 70)
bin.upper <- c(45, 50, 55, 60, 75)
Rumus yang tepat untuk digunakan untuk penghitungan berasal dari mereplikasi lebar bin dengan jumlah yang diberikan oleh penghitungan; yaitu, data yang dikosongkan setara dengan
42.5, 47.5, 47.5, 52.5, 52.5, 57.5, 57.5, 57.5, 57.5, 72.5
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)
mu
1195/22≈54.32sigma2
675/11≈61.367.83h=5h2/12=25/12≈2.08675/11−52/12−−−−−−−−−−−−√≈7.70 untuk standar deviasi.
Estimasi Kemungkinan Maksimum
Fθθ(x0,x1] contains k values out of a set of independent, identically distributed values from Fθ, then the (additive) contribution to the log likelihood of this bin is
log∏i=1k(Fθ(x1)−Fθ(x0))=klog(Fθ(x1)−Fθ(x0))
(see MLE/Likelihood of lognormally distributed interval).
Summing over all bins gives the log likelihood Λ(θ) for the dataset. As usual, we find an estimate θ^ which minimizes −Λ(θ). This requires numerical optimization and that is expedited by supplying good starting values for θ. The following R
code does the work for a Normal distribution:
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
The resulting coefficients are (μ^,σ^)=(54.32,7.33).
Remember, though, that for Normal distributions the maximum likelihood estimate of σ (when the data are given exactly and not binned) is the population SD of the data, not the more conventional "bias corrected" estimate in which the variance is multiplied by n/(n−1). Let us then (for comparison) correct the MLE of σ, finding n/(n−1)−−−−−−−−√σ^=11/10−−−−−√×7.33=7.69. This compares favorably with the result of Sheppard's correction, which was 7.70.
Verifying the Assumptions
To visualize these results we can plot the fitted Normal density over a histogram:
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)
To some this might not look like a good fit. However, because the dataset is small (only 11 values), surprisingly large deviations between the distribution of the observations and the true underlying distribution can occur.
Let's more formally check the assumption (made by the MLE) that the data are governed by a Normal distribution. An approximate goodness of fit test can be obtained from a χ2 test: the estimated parameters indicate the expected amount of data in each bin; the χ2 statistic compares the observed counts to the expected counts. Here is a test in R
:
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)
The output is
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
The software has performed a permutation test (which is needed because the test statistic does not follow a chi-squared distribution exactly: see my analysis at How to Understand Degrees of Freedom). Its p-value of 0.245, which is not small, shows very little evidence of departure from normality: we have reason to trust the maximum likelihood results.