Чи мінімізований неупереджений оцінювач мінімізує середнє абсолютне відхилення?


14

Це подальше, але також інше питання мого попереднього .

Я читав у Вікіпедії, що " Осередник-неупереджений оцінка мінімізує ризик щодо функції втрат абсолютного відхилення, як спостерігав Лаплас ". Однак мої результати моделювання в Монте-Карло не підтверджують цей аргумент.

Я припускаю , що зразок з логнормального населення, , де µ і σ - середнє значення log і log-sd, β = exp ( μ ) = 50X1,X2,...,XNLN(μ,σ2)μσβ=exp(μ)=50

Середньогеометричний оцінювач - це медіа-неупереджений оцінювач для медіани середнього ,exp(μ)

деμіσє лог-середнє значення і лог-сд, μ і σ є ОМП дляцісг.β^GM=exp(μ^)=exp(log(Xi)N)LN(μ,σ2/N)μσμ^σ^μσ

Хоча скорегований геометрично-середній оцінювач є середньо-неупередженим оцінкою для медіани населення.

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

Я генерую зразки розміром 5 повторно з LN . Кількість реплікацій - 10 000. Середні абсолютні відхилення, отримані мною, становлять 25,14 для середньогеометричного оцінювача та 22,92 для скорегованого середнього геометричного. Чому?(log(50),log(1+22))

До речі, розрахункові середні абсолютні відхилення становлять 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 
#```

1
1.) "10 000" занадто мало для вашого запитання - спробуйте "250 000" (або більше). 2.) Якщо ви запускаєте моделювання в Монте-Карло і отримуєте результат, який здається дивним, спробуйте змінити насіння set.seed. 3.) Не завжди довіряти Вікіпедії - Зверніть увагу , як ваш цитований текст (зі статті) відрізняється «Медіана» від цієї іншої Вікіпедії статті 4) Ваш R код бардак - перевірити R Style Guide від Google для деяких рекомендації щодо хорошого стилю.
Steve S

Відповіді:


4

Якщо ми обираємо оцінювач α+α

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

ми вимагаємо

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

which is equivalent to P(α>α+)=1/2. So α+ is the shown to be the median as following Laplace in 1774.

If you are having trouble with R please ask it in another question on Stack Overflow


Theoretically, I think it is correct. However, I am confused by the R simulation results which does not back up this statement as expected.
Zhenglei

2
I am a Data Scientist/Physicist so have never seen a line of R. As I suggested in the question, if it is a code issue you should ask it in Stack Overflow and you will get much more attention. However, the above answer is correct unless you would like to elaborate on how it generalizes to a median-unbiased estimator. For more details see page 172 of E.T. Jaynes book Probability theory ISBN 978-0-521-59271-0.
Keith

Thank you a lot for your answer. It is not a coding issue. I just want to do simulations to show that a median-unbiased estimator will minimize the expected absolute deviation. I haven't accepted the answer because I am mainly confused about the simulation step. I implemented it in R but simulations could be done in Matlab or Python or any other languages.
Zhenglei

2
I suspect the issue is that you are dealing with an approximation which works as N -> but you have 10,000 and 5 whcih are both small numbers. Perhaps you are better off asking three questions. Why it is true in theory, when is N practically large enough and if there is something wrong with your R code. I answered the first, the second is largely calculational but there may be a good rule of thumb for this specific case and the third belongs on stack overflow.
Keith

@Keith sorry for my weak math, but can you show more detail on how you derived the expectation?
AdamO
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.