가능한 모든 쌍을 사용하여 정규 혼합 분포를 만드는 밀도 추정 방법의 이름은 무엇입니까?


12

나는 단지 하나의 차원 밀도 추정값을 생성하는 깔끔한 (필수는 아니지만) 방법을 생각했으며 내 질문은 다음과 같습니다.

이 밀도 추정 방법에는 이름이 있습니까? 그렇지 않다면, 그것은 문헌에서 다른 방법의 특별한 경우입니까?

방법은 다음과 같습니다. 우리는 벡터 가지고 있는데 우리가 추정하고자하는 알려지지 않은 분포에서 나온 것으로 가정합니다. 이를 수행하는 방법은 에서 가능한 모든 값 쌍을 취하고 각 쌍 에 대해 최대 우도를 사용하여 정규 분포에 맞도록하는 것입니다. 결과 밀도 추정값은 모든 결과 법선으로 구성된 혼합물 분포이며 각 법선에 동일한 가중치가 부여됩니다.X [ x i , x j ] i jX=[x1,x2,...,xn]X[xi,xj]ij

아래 그림은 벡터 에서이 방법을 사용하는 것을 보여줍니다 . 여기서 원은 데이터 포인트이고, 채색 된 법선은 각 가능한 쌍을 사용하여 추정 된 최대 우도 분포이며 굵은 검은 선은 결과 밀도 추정 (즉, 혼합물 분포)을 나타냅니다.[1.3,0.15,0.73,1.4]

여기에 이미지 설명을 입력하십시오

그건 그렇고, 결과 혼합물 분포에서 샘플을 추출하는 방법을 R로 구현하는 것은 실제로 쉽습니다.

# Generating some "data"
x <- rnorm(30)

# Drawing from the density estimate using the method described above.
density_estimate_sample <- replicate(9999, {
  pair <- sample(x, size = 2)
  rnorm(1, mean(pair), sd(pair))
})

# Plotting the density estimate compared with 
# the "data" and the "true" density.
hist(x ,xlim=c(-5, 5), main='The "data"')
hist(density_estimate_sample, xlim=c(-5, 5), main='Estimated density')
hist(rnorm(9999), xlim=c(-5, 5), main='The "true" density')

여기에 이미지 설명을 입력하십시오


5
분석법을 사용해보십시오x <- c(rnorm(30), rnorm(30, 10))
Dason

2
@Dason Yep,이 경우 방법이 전혀 작동하지 않습니다! :) 또한 큰 n과 수렴하지 않습니다.
Rasmus Bååth

4
이것은 교차 검증에 의해 대역폭이 추정되는 손상된 커널 밀도 추정 버전처럼 들립니다!
Xi'an

'우리는 우리가 추정하고자하는 알려지지 않은 분포로부터 도출되었다고 가정 하는 벡터 을 가지고있다'는 말은 아마도 나에게 들리는 것처럼 들려야한다. 하나의 관측치에 기초 하여 일반적인 차원 다변량 분포를 추정하는 것에 관한 것이다. nX=[x1,x2,,xn]n
Juho Kokkala

답변:


6

표준 편차의 추정치는 일반적인 제곱 평균 접근법보다 특이 치에 덜 민감 해 보이므로 흥미로운 아이디어입니다. 그러나이 견적자가 공개 된 것 같습니다. 그 이유는 계산 상 비효율적이며, 편향되어 있으며, 편향이 수정 되더라도 통계적으로 비효율적입니다 (그러나 약간만). 이것들은 약간의 예비 분석으로 볼 수 있으므로 먼저 그렇게 한 다음 결론을 도출합시다.

분석

데이터 기반으로 한 평균 및 표준 편차 의 ML 추정량은 다음 과 같습니다.σ ( x i , x j )μσ(xi,xj)

μ^(xi,xj)=xi+xj2

σ^(xi,xj)=|xixj|2.

따라서 질문에 설명 된 방법은

μ^(x1,x2,,xn)=2n(n1)i>jxi+xj2=1ni=1nxi,

이는 평균의 일반적인 추정치이며

σ^(x1,x2,,xn)=2n(n1)i>j|xixj|2=1n(n1)i,j|xixj|.

이 추정기의 예상 값은 데이터의 교환 가능성을 이용하여 쉽게 찾을 수 있습니다. 즉 는 및 와 무관 합니다. 어떻게E=E(|xixj|)ij

E(σ^(x1,x2,,xn))=1n(n1)i,jE(|xixj|)=E.

그러나 와 는 독립 법선 변량이므로 그 차이는 분산이 0 평균 법선입니다 . 따라서 절대 값은 곱하기 분포이며, 평균은 입니다. 따라서xixj2σ22σχ(1)2/π

E=2πσ.

계수 은이 추정기의 바이어스입니다.2/π1.128

같은 방법으로, 훨씬 더 많은 작업으로 의 분산을 계산할 수 있지만, 앞으로 살펴 보 겠지만 이에 관심이 없을 것이므로 빠른 시뮬레이션으로 추정합니다. .σ^

결론

  1. 추정기가 바이어스됩니다. 는 약 + 13 %의 실질적인 일정한 바이어스를가집니다. 이 문제를 해결할 수 있습니다. 샘플 크기가 인이 예에서는 바이어스 및 바이어스 교정 추정기가 히스토그램에 표시됩니다. 13 % 오류가 분명합니다.σ^n=20,000

    그림

  2. 계산 상 비효율적입니다. 절대 값의 합이, 대수 단순화가 없으므로 계산에는 거의 모든 다른 추정기 의 노력 대신 노력이 필요합니다 . 이 초과하면 엄청나게 비싸게 됩니다. 예를 들어, 이전 그림을 계산하려면 45 초의 CPU 시간과 8GB RAM이 필요했습니다 . (다른 플랫폼에서는 RAM 요구 사항이 계산 시간에 약간의 비용으로 훨씬 더 작습니다.)i,j|xixj|O(n2)O(n)n10,000R

  3. 통계적으로 비효율적입니다. 그것은 최고의 보여주는를 제공하기 위해,하자가 편견 버전을 고려하고와 비교 편견 최소 제곱 또는 최대 우도 추정 중 하나의 버전

    σ^OLS=(1n1i=1n(xiμ^)2)(n1)Γ((n1)/2)2Γ(n/2).

    R아래의 코드는 해당 추정기의 바이어스 버전 의외로 효율적임을 보여의 샘플 크기의 범위에 걸쳐 에 대한 의 변동의 편차에 비해 1 % 내지 2 %의 큰 대해 통상 . 이는 추정에서 주어진 수준의 정밀도를 달성하기 위해 샘플에 대해 1 %에서 2 %의 추가 비용을 지불 할 계획임을 의미합니다 ., N = 300 σ O L S σn=3n=300σ^OLSσ

기후

의 형태는 강력하고 저항력이있는 Theil-Sen 추정기를 연상 시키지만 절대 차이의 중간 값을 사용하는 대신 평균을 사용합니다. 목표가 외부 값에 저항력이있는 추정값이나 정규성 가정에서 벗어난 값에 대한 추정값을 갖는 경우 중간 값을 사용하는 것이 더 좋습니다. σ^


암호

sigma <- function(x) sum(abs(outer(x, x, '-'))) / (2*choose(length(x), 2))
#
# sigma is biased.
#
y <- rnorm(1e3) # Don't exceed 2E4 or so!
mu.hat <- mean(y)
sigma.hat <- sigma(y)

hist(y, freq=FALSE,
     main="Biased (dotted red) and Unbiased (solid blue) Versions of the Estimator",
     xlab=paste("Sample size of", length(y)))
curve(dnorm(x, mu.hat, sigma.hat), col="Red", lwd=2, lty=3, add=TRUE)
curve(dnorm(x, mu.hat, sqrt(pi/4)*sigma.hat), col="Blue", lwd=2, add=TRUE)
#
# The variance of sigma is too large.
#
N <- 1e4
n <- 10
y <- matrix(rnorm(n*N), nrow=n)
sigma.hat <- apply(y, 2, sigma) * sqrt(pi/4)
sigma.ols <- apply(y, 2, sd) / (sqrt(2/(n-1)) * exp(lgamma(n/2)-lgamma((n-1)/2)))

message("Mean of unbiased estimator is ", format(mean(sigma.hat), digits=4))
message("Mean of unbiased OLS estimator is ", format(mean(sigma.ols), digits=4))
message("Variance of unbiased estimator is ", format(var(sigma.hat), digits=4))
message("Variance of unbiased OLS estimator is ", format(var(sigma.ols), digits=4))
message("Efficiency is ", format(var(sigma.ols) / var(sigma.hat), digits=4))

관련 문헌은 예를 들어 Downton, F. 1966 다항식 계수를 사용한 선형 추정치로 거슬러 올라갑니다. Biometrika 53 : 129-141 doi : 10.1093 / biomet / 53.1-2.129
Nick Cox

와우, 나는 내가 기대했던 것보다 더 많은 것을 얻었다! :)
Rasmus Bååth
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.