中央値不偏推定量は、平均絶対偏差を最小化しますか?


14

これはフォローアップですが、以前の質問とは別の質問でもあります。

私はウィキペディアで、「ラプラスで観察されたように、中央値偏りのない推定量は絶対偏差損失関数に関するリスクを最小化する」と読みました。しかし、私のモンテカルロシミュレーションの結果はこの議論をサポートしていません。

私は、対数正規母集団からサンプルを想定μ及びσは、対数平均および対数SDであるβ = EXP μ = 50X1,X2,...,XNLN(μ,σ2μσβ=expμ=50

幾何平均推定量は、人口中央値expの中央値不偏推定量です。expμ

場合には、μ及びσは、対数平均値であり、ログ-SDをμ σはのためのMLEはありμσβ^GM=exp(μ^)=exp(log(Xi)N)LN(μ,σ2/N)μσμ^σ^μσ

一方、補正された幾何平均推定量は、母集団の中央値の平均不偏推定量です。

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

LNからサイズ5のサンプルを繰り返し生成します。レプリケーション番号は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.)は、常にウィキペディアを信用してはいけません-このことから、「中央値」の記事)異なっからあなたの引用されたテキスト(どのようにノート他の Wikipediaの記事 4)あなたのRのコードは、総混乱がある-チェックアウトをGoogleのRスタイルガイドいくつかのために良いスタイルのガイドライン。
スティーブS 14

回答:


4

真の値αから予想される絶対誤差を最小化するという基準によって推定器を選択した場合α+α

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

私たちは必要です

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

P(α>α+)=1/2α+は1774年のラプラスに続く中央値であることが示されています。

Rに問題がある場合は、スタックオーバーフローに関する別の質問で質問してください。


理論的には正しいと思います。ただし、このステートメントを期待どおりにバックアップしないRシミュレーション結果に混乱しています。
Zhenglei

2
私はデータサイエンティスト/物理学者なので、Rの行を見たことはありません。質問で提案したように、コードの問題である場合は、Stack Overflowでそれを確認する必要があります。ただし、中央値不偏推定量に一般化する方法について詳しく説明したい場合を除き、上記の答えは正しいです。詳細については、ET Jaynesの本の172ページの確率理論ISBN 978-0-521-59271-0を参照してください。
キース14

ご回答ありがとうございました。コーディングの問題ではありません。偏りのない中央値推定器が予想される絶対偏差を最小化することを示すために、シミュレーションを行いたいだけです。私は主にシミュレーションのステップについて混乱しているため、答えを受け入れていません。Rで実装しましたが、MatlabまたはPythonまたは他の言語でシミュレーションを実行できます。
Zhenglei

2
問題は、N->として機能する近似値を扱っていることだと思われます ただし、10,000と5はどちらも小さい数字です。おそらく、3つの質問をする方が良いでしょう。Nが実際に十分な大きさで、Rコードに何か問題がある場合、理論上それが真実である理由。私は最初に答えました、2番目は主に計算ですが、この特定のケースには良い経験則があり、3番目はスタックオーバーフローに属します。
キース14

@キースは私の弱い数学でごめんなさい、しかしあなたがどのように期待を導き出したかについてもっと詳細を示すことができますか?
AdamO
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.