이 답장은 셰퍼드의 수정과 최대 가능성 추정의 두 가지 해결책을 제시합니다. 둘 다 표준 편차의 추정치에 밀접하게 동의 합니다. 첫 번째의 경우 , 두 번째의 경우 7.69 입니다 (일반적인 "편견없는"추정값과 비교할 수 있도록 조정 된 경우).7.707.69
셰퍼드의 수정
"셰퍼드의 수정"은 비닝 된 데이터 (이와 같이)로부터 계산 된 모멘트를 조정하는 공식입니다.
데이터는 유한 간격 [ a , b ] 에서 지원되는 분포에 의해 관리되는 것으로 가정[a,b]
이 간격은 비교적 작은 공통 폭 의 동일한 빈으로 순차적으로 나뉩니다 (빈에는 모든 데이터의 큰 비율을 포함하지 않습니다)h
분포에는 연속 밀도 기능이 있습니다.
그것들은 Euler-Maclaurin sum 공식에서 파생됩니다.이 공식은 정기적으로 간격을 둔 점에서 정수 값의 선형 조합 측면에서 적분을 근사합니다. 따라서 정규 분포뿐만 아니라 일반적으로 적용 가능합니다.
엄밀히 말하면 정규 분포는 유한 간격으로 지원 되지 않지만 매우 가까운 근사치입니다. 본질적으로 모든 확률은 평균의 7 표준 편차 내에 포함됩니다. 따라서 Sheppard의 수정 사항은 정규 분포에서 나온 것으로 추정되는 데이터에 적용 할 수 있습니다.
첫 두 셰퍼드의 수정 사항은
비닝 된 데이터의 평균을 데이터의 평균으로 사용하십시오 (즉, 평균에 대한 보정이 필요하지 않음).
비닝 된 데이터의 분산에서 를 빼서 데이터의 (대략적인) 분산을 얻습니다.h2/12
어디 않는 에서 온? 이것은 길이 h 간격에 분포 된 균일 한 변이의 분산과 같습니다 . 직관적으로, 그리고, 상기 제 순간 셰퍼드 보정이 제안 효과적으로 각 빈의 중간에서 이들을 대체 - - 데이터 비닝까지 대략 균일하게 분포 된 값을 추가 표시 사이 - H / 2 및 H / 2 , 어디서 그것을 팽창 하여 분산 H 2 / 12 .h2/12h−h/2h/2h2/12
계산을 해보자. 내가 사용 R
카운트와 쓰레기통을 지정하여 시작을 설명하기 위해 :
counts <- c(1,2,3,4,1)
bin.lower <- c(40, 45, 50, 55, 70)
bin.upper <- c(45, 50, 55, 60, 75)
카운트에 사용하기에 적합한 공식 은 빈 너비를 카운트로 주어진 양만큼 복제 하는 것입니다. 즉, 비닝 된 데이터는
42.5, 47.5, 47.5, 52.5, 52.5, 57.5, 57.5, 57.5, 57.5, 72.5
수, 평균 및 분산은 이러한 방식으로 데이터를 확장하지 않고도 직접 계산할 수 있습니다. 빈에 중간 점이 이고 개수가 k 인 경우 제곱합에 대한 기여는 k x 2 입니다. 이것은 질문에서 인용 된 두 번째 위키 백과 공식으로 이어집니다 .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
최대 가능성 추정치
Fθθ(x0,x1]kFθ
log∏i=1k(Fθ(x1)−Fθ(x0))=klog(Fθ(x1)−Fθ(x0))
( MLE / 로그 정규 분포 간격의 가능성 참조 ).
Λ(θ)θ^−Λ(θ)θ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
(μ^,σ^)=(54.32,7.33)
σn/(n−1)σn/(n−1)−−−−−−−−√σ^=11/10−−−−−√×7.33=7.697.70
가정 확인
이러한 결과를 시각화하기 위해 히스토그램에 적합 법선 밀도를 플로팅 할 수 있습니다.
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)
11
χ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)
출력은
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
0.245