Bu bir takip değil, aynı zamanda farklı bir sorudur benim öncekinden .
Wikipedia'da " Medyan-tarafsız bir tahmin edicinin, Laplace'ın gözlemlediği gibi, mutlak sapma kaybı fonksiyonu ile ilgili riski en aza indirdiğini " okudum . Ancak, Monte Carlo simülasyon sonuçlarım bu argümanı desteklemiyor.
Bir günlük normal popülasyon, , burada, ve günlük ortalama ve log-sd,
Geometrik ortalama tahmincisi, medyan popülasyonu için medyan-tarafsız bir tahmin edicidir ,
, ve günlük ortalama ve log-sd, ve ve için MLE'lerdir .
Düzeltilmiş bir geometrik ortalama tahmincisi popülasyon medyanı için ortalama bir tarafsız tahmin edicidir.
5 boyutlu örnekleri tekrar tekrar LN'den üretiyorum . Çoğaltma numarası 10.000'dir. Aldığım ortalama mutlak sapmalar geometrik ortalama tahmincisi için 25,14 ve düzeltilmiş geometrik ortalama için 22,92'dir. Neden?
BTW, tahmini ortalama mutlak sapmalar geometrik ortalama için 18.18 ve düzeltilmiş geometrik ortalama tahmincisi için 18.58'dir.
Kullandığım R betiği burada:
#```{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.) Her zaman Wikipedia'ya güvenmeyin - alıntılanan metninizin ("Medyan" makalesinden) bu diğer Wikipedia makalesinden nasıl farklı olduğuna dikkat edin .) R kodunuz tamamen dağınıktır - bazıları için Google'ın R Stil Kılavuzu'na göz atın iyi stil yönergeleri.