Це подальше, але також інше питання мого попереднього .
Я читав у Вікіпедії, що " Осередник-неупереджений оцінка мінімізує ризик щодо функції втрат абсолютного відхилення, як спостерігав Лаплас ". Однак мої результати моделювання в Монте-Карло не підтверджують цей аргумент.
Я припускаю , що зразок з логнормального населення, , де µ і σ - середнє значення log і log-sd, β = exp ( μ ) = 50
Середньогеометричний оцінювач - це медіа-неупереджений оцінювач для медіани середнього ,
деμіσє лог-середнє значення і лог-сд, μ і σ є ОМП дляцісг.
Хоча скорегований геометрично-середній оцінювач є середньо-неупередженим оцінкою для медіани населення.
Я генерую зразки розміром 5 повторно з LN . Кількість реплікацій - 10 000. Середні абсолютні відхилення, отримані мною, становлять 25,14 для середньогеометричного оцінювача та 22,92 для скорегованого середнього геометричного. Чому?
До речі, розрахункові середні абсолютні відхилення становлять 18,18 для середньогеометричного та 18,58 для виправленого геометрично-середнього оцінювача.
Тут використаний сценарій R:
#```{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.) Не завжди довіряти Вікіпедії - Зверніть увагу , як ваш цитований текст (зі статті) відрізняється «Медіана» від цієї іншої Вікіпедії статті 4) Ваш R код бардак - перевірити R Style Guide від Google для деяких рекомендації щодо хорошого стилю.