Qual é o nome do método de estimativa de densidade em que todos os pares possíveis são usados ​​para criar uma distribuição de mistura Normal?


12

Eu apenas pensei em uma maneira pura (não necessariamente boa) de criar estimativas de densidade unidimensional e minha pergunta é:

Esse método de estimativa de densidade tem um nome? Caso contrário, é um caso especial de algum outro método na literatura?

Aqui está o método: Nós temos um vector X=[x1,x2,...,xn] que assumimos ser extraído de alguma distribuição desconhecida que gostaríamos de estimar. Uma maneira de fazer isso é pegar todos os pares possíveis de valores em X e, para cada par [xi,xj]ij ajustar uma distribuição Normal usando a máxima probabilidade. A estimativa de densidade resultante é então a distribuição da mistura que consiste em todos os normais resultantes, onde cada normal recebe peso igual.

A figura abaixo ilustra o uso desse método no vetor . Aqui, os círculos são os pontos de dados, os normais coloridos são as distribuições de probabilidade máxima estimadas usando cada par possível e a linha preta grossa mostra a estimativa de densidade resultante (ou seja, a distribuição da mistura).[1.3,0.15,0.73,1.4]

insira a descrição da imagem aqui

A propósito, é realmente fácil implementar um método em R que extrai uma amostra da distribuição resultante da mistura:

# 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')

insira a descrição da imagem aqui


5
Dê seu método uma tentativa usandox <- c(rnorm(30), rnorm(30, 10))
Dason

2
@ Jason Sim, nesse caso, o método não funciona! :) Também não converge com n grande.
Rasmus Bååth

4
Isso soa como uma versão corrompida da estimativa de densidade do kernel, onde a largura de banda é estimada por validação cruzada!
Xian

A redação em 'Temos um vetor que assumimos ser extraída de alguma distribuição desconhecida que gostaríamos de estimar' talvez deva ser esclarecida, pois (para mim) soa como o A questão era estimar uma distribuição multivariada n- dimensional geral com base em uma observação. X=[x1,x2,,xn]n
Juho Kokkala

Respostas:


6

Essa é uma ideia intrigante, porque o estimador do desvio padrão parece ser menos sensível aos valores extremos do que as abordagens usuais de raiz quadrada média. No entanto, duvido que este estimador tenha sido publicado. Existem três razões para isso: é computacionalmente ineficiente, é tendencioso e, mesmo quando o viés é corrigido, é estatisticamente ineficiente (mas apenas um pouco). Isso pode ser visto com uma pequena análise preliminar, então vamos fazer isso primeiro e depois tirar as conclusões.

Análise

Os estimadores de ML da média e desvio padrão σ com base nos dados ( x i , x j ) sãoμσ(xi,xj)

μ^(xi,xj)=xi+xj2

e

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

Portanto, o método descrito na pergunta é

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

qual é o estimador usual da média e

σ^(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.

xixj2σ22σχ(1)2/π

E=2πσ.

2/π1.128

σ^

Conclusões

  1. σ^n=20,000

    Figura

  2. i,j|xixj|O(n2)O(n)n10,000R. (Em outras plataformas, os requisitos de RAM seriam muito menores, talvez com um pequeno custo no tempo de computação.)

  3. É estatisticamente ineficiente. Para oferecer a melhor exibição, vamos considerar a versão imparcial e compará-la com a versão imparcial do estimador de mínimos quadrados ou de probabilidade máxima

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

    Rn=3n=300σ^OLS. This means you should plan on paying an extra 1% to 2% more for samples in order to achieve any given level of precision in estimating σ.

Afterward

The form of σ^ is reminiscent of the robust and resistant Theil-Sen estimator--but instead of using the medians of the absolute differences, it uses their means. If the objective is to have an estimator that is resistant to outlying values or one that is robust to departures from the Normality assumption, then using the median would be more advisable.


Code

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))

Relevant literature goes back a while e.g. Downton, F. 1966 Linear estimates with polynomial coefficients. Biometrika 53: 129-141 doi:10.1093/biomet/53.1-2.129
Nick Cox

Wow, I got more than I bargained for! :)
Rasmus Bååth
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.