Un estimateur sans biais médian minimise-t-il la déviance absolue moyenne?


14

Il s'agit d'un suivi mais aussi d'une question différente de ma précédente .

J'ai lu sur Wikipédia que " Un estimateur sans biais médian minimise le risque par rapport à la fonction de perte par écart absolu, comme l'a observé Laplace ." Cependant, mes résultats de simulation Monte Carlo ne supportent pas cet argument.

Je suppose un échantillon à partir d' une population log-normale, X1,X2,...,XNLN(μ,σ2) , où, μ et σ sont les log-moyenne et log-sd, β=exp(μ)=50

L'estimateur à moyenne géométrique est un estimateur sans biais médian pour la population médiane exp(μ) ,

où,μetσsont la moyenne journal et-sd, μ et σ sont les MLE pourμetσβ^GM=exp(μ^)=exp(log(Xi)N)LN(μ,σ2/N)μσμ^σ^μσ .

Un estimateur à moyenne géométrique corrigée est un estimateur à moyenne non biaisée pour la médiane de la population.

β^CG=exp(μ^σ^2/2N)

Je génère des échantillons de taille 5 à plusieurs reprises à partir du LN . Le numéro de réplication est 10 000. Les écarts absolus moyens que j'ai obtenus sont de 25,14 pour l'estimateur de moyenne géométrique et de 22,92 pour la moyenne géométrique corrigée. Pourquoi?(log(50),log(1+22))

BTW, les écarts absolus médians estimés sont de 18,18 pour la moyenne géométrique et de 18,58 pour l'estimateur à moyenne géométrique corrigée.

Le script R que j'ai utilisé est ici:

#```{r stackexchange}
#' Calculate the geomean to estimate the lognormal median.
#'
#' This function Calculate the geomean to estimate the lognormal
#' median.
#'
#' @param x a vector.
require(plyr)
GM <- function(x){
    exp(mean(log(x)))
}
#' Calculate the bias corrected geomean to estimate the lognormal
#' median.
#'
#' This function Calculate the bias corrected geomean using the
#' variance of the log of the samples, i.e., $\hat\sigma^2=1/(n-1)
# \Sigma_i(\Log(X_i)-\hat\mu)^2$
#'
#' @param x a vector.
BCGM <- function(x){
y <- log(x)
exp(mean(y)-var(y)/(2*length(y)))
}
#' Calculate the bias corrected geomean to estimate the lognormal
#' median.
#'
#' This function Calculate the bias corrected geomean using
#' $\hat\sigma^2=1/(n)\Sigma_i(\Log(X_i)-\hat\mu)^2$
#'
#' @param x a vector.
CG <- function(x){
y <- log(x)
exp(mean(y)-var(y)/(2*length(y))*(length(y)-1)/length(y))
}

############################

simln <- function(n,mu,sigma,CI=FALSE)
{
    X <- rlnorm(n,mu,sigma)
    Y <- 1/X
    gm <- GM(X)
    cg <- CG(X)
    ##gmk <- log(2)/GM(log(2)*Y) #the same as GM(X)
    ##cgk <- log(2)/CG(log(2)*Y)
    cgk <- 1/CG(Y)
    sm <- median(X)
    if(CI==TRUE) ci <- calCI(X)
    ##bcgm <- BCGM(X)
    ##return(c(gm,cg,bcgm))
    if(CI==FALSE) return(c(GM=gm,CG=cg,CGK=cgk,SM=sm)) else return(c(GM=gm,CG=cg,CGK=cgk,CI=ci[3],SM=sm))
}
cv <-2
mcN <-10000
res <- sapply(1:mcN,function(i){simln(n=5,mu=log(50),sigma=sqrt(log(1+cv^2)), CI=FALSE)})
sumres.mad <- apply(res,1,function(x) mean(abs(x-50)))
sumres.medad <- apply(res,1,function(x) median(abs(x-50)))
sumres.mse <- apply(res,1,function(x) mean((x-50)^2))
#```

#```{r eval=FALSE}
#> sumres.mad
      GM       CG      CGK       SM 
#25.14202 22.91564 29.65724 31.49275 
#> sumres.mse
      GM       CG      CGK       SM 
#1368.209 1031.478 2051.540 2407.218 
#```

1
1.) "10 000" est trop petit pour votre question - essayez "250 000" (ou plus). 2.) Si vous exécutez une simulation Monte Carlo et obtenez un résultat qui semble étrange, essayez de changer la graine avec set.seed. 3.) Ne faites pas toujours confiance à Wikipédia - notez en quoi votre texte cité (de l'article "médian") diffère de cet autre article de Wikipédia 4.) Votre code R est un gâchis total - consultez le Guide de style R de Google pour certains bonnes directives de style.
Steve S

Réponses:


4

α+α

E=<|α+α|>=α+(α+α)f(α)dα+α+(αα+)f(α)dα

nous exigeons

dEdα+=α+f(α)dαα+f(α)dα=0

P(α>α+)=1/2α+

Si vous rencontrez des problèmes avec R, posez-le dans une autre question sur Stack Overflow


Théoriquement, je pense que c'est correct. Cependant, je suis confus par les résultats de la simulation R qui ne sauvegardent pas cette déclaration comme prévu.
Zhenglei

2
Je suis un Data Scientist / Physicist donc je n'ai jamais vu une ligne de R. Comme je l'ai suggéré dans la question, si c'est un problème de code, vous devriez le poser dans Stack Overflow et vous obtiendrez beaucoup plus d'attention. Cependant, la réponse ci-dessus est correcte, sauf si vous souhaitez expliquer comment elle se généralise en un estimateur sans biais médian. Pour plus de détails, voir la page 172 du livre ET Jaynes Théorie des probabilités ISBN 978-0-521-59271-0.
Keith

Merci beaucoup pour votre réponse. Ce n'est pas un problème de codage. Je veux juste faire des simulations pour montrer qu'un estimateur sans biais médian minimisera l'écart absolu attendu. Je n'ai pas accepté la réponse car je suis principalement confus au sujet de l'étape de simulation. Je l'ai implémenté en R mais les simulations peuvent être faites en Matlab ou Python ou tout autre langage.
Zhenglei

2

@Keith désolé pour mes mathématiques faibles, mais pouvez-vous montrer plus en détail comment vous avez dérivé l'attente?
AdamO
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.