비닝 관측치의 표준 편차


24

범위 빈 내에 카운트로 저장된 샘플 관측치의 데이터 세트가 있습니다. 예 :

min/max  count
40/44    1
45/49    2
50/54    3
55/59    4
70/74    1

이제 이것으로부터 평균의 추정치를 찾는 것은 매우 간단합니다. 각 범위 빈의 평균 (또는 중앙값)을 관측 값으로 사용하고 개수를 가중치로 사용하고 가중 평균을 찾으십시오.

x¯=1i=1Nwii=1Nwix나는

내 테스트 케이스의 경우 53.82가됩니다.

내 질문은 이제 표준 편차 (또는 분산)를 찾는 올바른 방법은 무엇입니까?

내 검색을 통해 몇 가지 답변을 찾았지만 실제로 내 데이터 세트에 적합한 것이 확실하지 않습니다. 다른 질문무작위 NIST 문서 에서 다음 공식을 찾을 수있었습니다 .

s2=i=1Nwi(xix¯)2(M1)Mi=1Nwi

내 테스트 케이스의 표준 편차는 8.35입니다. 그러나 가중 평균 에 대한 Wikipedia 기사 는 다음 공식을 모두 제공합니다.

s2=나는=1나는(나는=1나는)2나는=1나는2나는=1나는(엑스나는엑스¯)2

에스2=1(나는=1나는)1나는=1나는(엑스나는엑스¯)2

내 테스트 사례에 대해 각각 표준 편차가 8.66 및 7.83입니다.

최신 정보

Sheppard 's Corrections를 살펴볼 것을 제안한 @whuber와 관련 의견을 보내 주셔서 감사합니다. 불행히도, 내가 찾을 수있는 리소스를 이해하는 데 어려움을 겪고 있습니다 (그리고 좋은 예를 찾을 수 없습니다). 요약하자면, 다음은 편향된 편차 추정치라는 것을 이해합니다.

s2=1i=1Nwii=1Nwi(xix¯)2

또한 바이어스에 대한 대부분의 표준 보정은 정규 분포의 직접 랜덤 샘플에 대한 것임을 이해합니다. 따라서 두 가지 잠재적 문제가 있습니다.

  1. 이들은 비닝 된 무작위 샘플입니다 (셰퍼드의 교정이 나오는 곳입니다).
  2. 데이터가 정규 분포에 대한 것인지 여부는 알 수 없습니다 (따라서 Sheppard 's Corrections를 무효화한다고 가정합니다).

그래서, 나의 업데이트 된 질문은; 비정규 분포에서 "단순한"가중 표준 편차 / 분산 공식에 의해 부과 된 바이어스를 처리하는 적절한 방법은 무엇입니까? 비닝 된 데이터와 관련하여 가장 구체적입니다.

참고 : 나는 다음 용어를 사용하고 있습니다 :

  • s2 는 가중 분산입니다
  • N 은 관측치의 수입니다. (즉, 쓰레기통 수)
  • M 은 0이 아닌 가중치의 수입니다. (즉, 카운트가있는 빈의 수)
  • wi 는 가중치 (즉, 카운트)입니다
  • xi 는 관측치입니다. (즉, 쓰레기통 의미)
  • x¯ 는 가중 평균입니다.

5
이 문제에 대한 표준 솔루션에 대한 Google "셰퍼드 수정 사항".
whuber

@ whuber, google-foo가 실패하는 것을 두려워합니다 ... Sheppard의 수정 방법을 많이 찾지 못했습니다. 내가 알 수있는 한, 이것은 데이터의 비닝 특성에 대한 수정이며, 테스트 사례에서는 s 2 c 2 와 같이 사용됩니다 ,C가빈들의 크기이다 (내 테스트 케이스, 4). 이 올바른지? 어떤 경우에는, 제가 아직 발견하고있어 계산을 도와하지 않는 것2*. s2c212cs2
chezy525

초 히트 내에서 Google 검색은 명시 적으로 식 (식 9)를 제공합니다.
whuber

@ whuber, 몇 달이 지났으며 두 번 연결 한 문서를 읽으려고 노력했습니다. 나는 여전히 뭔가를 놓치고 있다고 생각하지만, 내가 찾은 최선의 방법은 내가 나열 한 최종 방정식이 바이어스되지 않은 추정기로 정확하다는 것입니다. 이게 옳은 거니?
chezy525

셰퍼드의 수정은 정상이라고 가정하지 않습니다.
Glen_b-복지 모니카

답변:


18

이 답장은 셰퍼드의 수정과 최대 가능성 추정의 두 가지 해결책을 제시합니다. 둘 다 표준 편차의 추정치에 밀접하게 동의 합니다. 첫 번째의 경우 , 두 번째의 경우 7.69 입니다 (일반적인 "편견없는"추정값과 비교할 수 있도록 조정 된 경우).7.707.69


셰퍼드의 수정

"셰퍼드의 수정"은 비닝 된 데이터 (이와 같이)로부터 계산 된 모멘트를 조정하는 공식입니다.

  • 데이터는 유한 간격 [ a , b ] 에서 지원되는 분포에 의해 관리되는 것으로 가정[a,b]

  • 이 간격은 비교적 작은 공통 폭 의 동일한 빈으로 순차적으로 나뉩니다 (빈에는 모든 데이터의 큰 비율을 포함하지 않습니다)h

  • 분포에는 연속 밀도 기능이 있습니다.

그것들은 Euler-Maclaurin sum 공식에서 파생됩니다.이 공식은 정기적으로 간격을 둔 점에서 정수 값의 선형 조합 측면에서 적분을 근사합니다. 따라서 정규 분포뿐만 아니라 일반적으로 적용 가능합니다.

엄밀히 말하면 정규 분포는 유한 간격으로 지원 되지 않지만 매우 가까운 근사치입니다. 본질적으로 모든 확률은 평균의 7 표준 편차 내에 포함됩니다. 따라서 Sheppard의 수정 사항은 정규 분포에서 나온 것으로 추정되는 데이터에 적용 할 수 있습니다.

첫 두 셰퍼드의 수정 사항은

  1. 비닝 된 데이터의 평균을 데이터의 평균으로 사용하십시오 (즉, 평균에 대한 보정이 필요하지 않음).

  2. 비닝 된 데이터의 분산에서 를 빼서 데이터의 (대략적인) 분산을 얻습니다.h2/12

어디 않는 에서 온? 이것은 길이 h 간격에 분포 된 균일 한 변이의 분산과 같습니다 . 직관적으로, 그리고, 상기 제 순간 셰퍼드 보정이 제안 효과적으로 각 빈의 중간에서 이들을 대체 - - 데이터 비닝까지 대략 균일하게 분포 된 값을 추가 표시 사이 - H / 2H / 2 , 어디서 그것을 팽창 하여 분산 H 2 / 12 .h2/12hh/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)

mu1195/2254.32sigma2675/1161.367.83h=5h2/12=25/122.08675/1152/127.70


최대 가능성 추정치

Fθθ(x0,x1]kFθ

logi=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/(n1)σn/(n1)σ^=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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.