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, , où, et sont les log-moyenne et log-sd,
L'estimateur à moyenne géométrique est un estimateur sans biais médian pour la population médiane ,
où,μetσsont la moyenne journal et-sd, μ et σ sont les MLE pourμetσ .
Un estimateur à moyenne géométrique corrigée est un estimateur à moyenne non biaisée pour la médiane de la population.
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?
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
#```
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.