고조파 평균에 대한 표준 편차를 계산할 수 있습니까? 산술 평균에 대해 표준 편차를 계산할 수 있지만 고조파 평균이있는 경우 표준 편차 또는 CV를 어떻게 계산합니까?
고조파 평균에 대한 표준 편차를 계산할 수 있습니까? 산술 평균에 대해 표준 편차를 계산할 수 있지만 고조파 평균이있는 경우 표준 편차 또는 CV를 어떻게 계산합니까?
답변:
랜덤 변수 의 고조파 평균 는 다음과 같이 정의됩니다.
분수의 순간을 취하는 것은 지저분한 일이므로 대신 작업을 선호합니다 . 지금
중앙 제한 정리를 사용하면 즉시 얻을 수 있습니다.
물론 및 가 iid 인 경우 변수의 산술 평균 간단하게 작업하기 때문에 iid 입니다.
이제 함수 델타 방법을 사용 하면
이 결과는 점근 적이지만 간단한 응용 프로그램에서는 충분할 수 있습니다.
업데이트 정당하게 지적 @whuber으로, 간단한 응용 프로그램은 잘못된 것입니다. 중앙 제한 정리는 이 존재하는 경우에만 적용 이는 상당히 제한적인 가정입니다.
업데이트 2 표본이있는 경우 표준 편차를 계산하려면 표본 모멘트를 공식에 연결하면됩니다. 따라서 샘플 의 경우 고조파 평균의 추정치는 다음과 같습니다.
샘플 모멘트 및 각각 다음과 같습니다.
여기서 은 상호를 나타냅니다.
마지막으로 의 표준 편차에 대한 대략적인 공식 은 다음과 같습니다.
간격으로 균일하게 분포 된 랜덤 변수에 대한 일부 Monte-Carlo 시뮬레이션을 실행했습니다 . 코드는 다음과 같습니다.
hm <- function(x)1/mean(1/x)
sdhm <- function(x)sqrt((mean(1/x))^(-4)*var(1/x)/length(x))
n<-1000
nn <- c(10,30,50,100,500,1000,5000,10000)
N<-1000
mc<-foreach(n=nn,.combine=rbind) %do% {
rr <- matrix(runif(n*N,min=2,max=3),nrow=N)
c(n,mean(apply(rr,1,sdhm)),sd(apply(rr,1,sdhm)),sd(apply(rr,1,hm)))
}
colnames(mc) <- c("n","DeltaSD","sdDeltaSD","trueSD")
> mc
n DeltaSD sdDeltaSD trueSD
result.1 10 0.089879211 1.528423e-02 0.091677622
result.2 30 0.052870477 4.629262e-03 0.051738941
result.3 50 0.040915607 2.705137e-03 0.040257673
result.4 100 0.029017031 1.407511e-03 0.028284458
result.5 500 0.012959582 2.750145e-04 0.013200580
result.6 1000 0.009139193 1.357630e-04 0.009115592
result.7 5000 0.004094048 2.685633e-05 0.004070593
result.8 10000 0.002894254 1.339128e-05 0.002964259
크기가 지정된 N
샘플의 샘플을 시뮬레이션했습니다 n
. 각 n
크기의 표본에 대해 표준 추정치 (함수 sdhm
)의 추정치를 계산했습니다 . 그런 다음이 추정치의 평균 및 표준 편차를 각 샘플에 대해 추정 된 고조파 평균의 샘플 표준 편차와 비교합니다. 이는 아마도 고조파 평균의 실제 표준 편차 여야합니다.
보시다시피 중간 크기의 샘플에서도 결과가 매우 좋습니다. 물론 균일 한 분포는 매우 잘 작동하므로 결과가 좋다는 것은 놀라운 일이 아닙니다. 다른 배포판의 동작을 조사하기 위해 다른 사람을 남겨 두겠습니다. 코드는 매우 쉽게 적용 할 수 있습니다.
참고 : 이 답변의 이전 버전에서는 델타 방법의 결과에 잘못된 편차가있었습니다.
관련 질문에 대한 나의 대답 은 양의 데이터 세트의 고조파 평균이 가중 최소 제곱 (WLS) 추정치 (가중치 ) 임을 나타냅니다 . 따라서 WLS 방법을 사용하여 표준 오류를 계산할 수 있습니다. 이는 단순성, 일반성 및 해석 성을 비롯하여 회귀 계산에서 가중치를 허용하는 통계 소프트웨어에 의해 자동으로 생성되는 이점을 포함합니다. 1 / x i
가장 큰 단점은 계산이 치우친 기본 분포에 대해 신뢰 구간이 양호하지 않다는 것입니다. 그것은 일반적인 방법으로 문제가 될 수 있습니다. 고조파 평균은 데이터 세트에 작은 값이 하나라도 있다는 것에 민감합니다.
설명하기 위해, 여기에 Gamma (5) 분포에서 크기가 인 독립적으로 생성 된 샘플의 경험적 분포가 있습니다 (이는 약간 기울어 짐). 파란색 선은 실제 고조파 평균 ( 같음 )을 표시하고 빨간색 점선은 가중 최소 제곱 추정값을 나타냅니다. 파란색 선 주위의 수직 회색 밴드는 고조파 평균에 대한 대략적인 양면 95 % 신뢰 구간입니다. 이 경우, 모든 샘플에서 CI는 실제 고조파 평균을 포함합니다. 이 시뮬레이션 (임의의 시드 포함)을 반복하면 이러한 작은 데이터 집합의 경우에도 적용 범위가 의도 한 95 % 속도에 가깝습니다.n = 12 4 20
R
시뮬레이션 코드와 그림 은 다음과 같습니다 .
k <- 5 # Gamma parameter
n <- 12 # Sample size
hm <- k-1 # True harmonic mean
set.seed(17)
t.crit <- -qt(0.05/2, n-1)
par(mfrow=c(4, 5))
for(i in 1:20) {
#
# Generate a random sample.
#
x <- rgamma(n, k)
#
# Estimate the harmonic mean.
#
fit <- lm(x ~ 1, weights=1/x)
beta <- coef(summary(fit))[1, ]
message("Harmonic mean estimate is ", signif(beta["Estimate"], 3),
" +/- ", signif(beta["Std. Error"], 3))
#
# Plot the results.
#
covers <- abs(beta["Estimate"] - hm) <= t.crit*beta["Std. Error"]
plot(ecdf(x), main="Empirical CDF", sub=ifelse(covers, "", "***"))
rect(beta["Estimate"] - t.crit*beta["Std. Error"], 0,
beta["Estimate"] + t.crit*beta["Std. Error"], 1.25,
border=NA, col=gray(0.5, alpha=0.10))
abline(v = hm, col="Blue", lwd=2)
abline(v = beta["Estimate"], col="Red", lty=3, lwd=2)
}
다음은 지수 r.v의 예입니다.
데이터 포인트에 대한 고조파 평균 은 다음과 같이 정의됩니다.
당신이 가정 지수 확률 변수의 IID 샘플 . 지수 변수 의 합은 감마 분포를 따릅니다.
여기서 입니다. 우리는 또한
따라서 의 분포는
이 rv의 분산 (및 표준 편차)은 잘 알려져 있습니다 (예 : 여기 참조) .