ตัวประมาณค่ามัธยฐานเป็นกลางลดค่าเบี่ยงเบนสัมบูรณ์หรือไม่


14

นี่คือการติดตาม แต่ยังเป็นคำถามที่แตกต่างกันของหนึ่งก่อนหน้านี้ของฉัน

ฉันอ่านวิกิพีเดียว่า " เครื่องมือประมาณค่ากลางจะช่วยลดความเสี่ยงในส่วนที่เกี่ยวกับฟังก์ชั่นการสูญเสียค่าเบี่ยงเบนสัมบูรณ์ดังที่ Laplace ได้สังเกตไว้" อย่างไรก็ตามผลลัพธ์การจำลอง Monte Carlo ของฉันไม่สนับสนุนอาร์กิวเมนต์นี้

ผมถือว่าตัวอย่างจากระบบปกติประชากรโดยที่μและσเป็นค่าเฉลี่ยของบันทึกและ log-sd, β = exp ( μ ) = 50X1,X2,...,XNLN(μ,σ2)μσβ=ประสบการณ์(μ)=50

ประมาณการทางเรขาคณิต-เฉลี่ยเป็นประมาณการค่ามัธยฐาน-เป็นกลางสำหรับประชากรเฉลี่ย ,ประสบการณ์(μ)

ที่μและσมีการเข้าสู่ระบบหมายและเข้าสู่ระบบ SD, μและ σมี MLEs สำหรับμและσβ^จีเอ็ม=ประสบการณ์(μ^)=ประสบการณ์(Σเข้าสู่ระบบ(Xผม)ยังไม่มีข้อความ)~LN(μ,σ2/ยังไม่มีข้อความ)μσμ^σ^μσ

ในขณะที่ตัวประมาณค่าเฉลี่ยทางเรขาคณิตที่แก้ไขนั้นเป็นตัวประมาณค่าเฉลี่ยแบบไม่เอนเอียงสำหรับค่ามัธยฐานของประชากร

β^บรรษัทภิบาล=ประสบการณ์(μ^-σ^2/2ยังไม่มีข้อความ)

ฉันสร้างตัวอย่างขนาด 5 ซ้ำ ๆ จาก LN ) หมายเลขการจำลองแบบคือ 10,000 ค่าเบี่ยงเบนสัมบูรณ์แบบเฉลี่ยที่ฉันได้คือ 25.14 สำหรับตัวประมาณค่าทางเรขาคณิตและ 22.92 สำหรับค่าเฉลี่ยเรขาคณิตที่แก้ไข ทำไม?(เข้าสู่ระบบ(50),เข้าสู่ระบบ(1+22))

BTW ค่าเบี่ยงเบนสัมบูรณ์มัธยฐานโดยประมาณคือ 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. ) ถ้าคุณเรียกใช้การจำลอง Monte Carlo set.seedและได้รับผลที่น่าแปลกลองเปลี่ยนเมล็ดพันธุ์ที่มี 3. ) อย่าไว้ใจ Wikipedia เสมอ - โปรดสังเกตว่าข้อความที่ยกมาของคุณ (จากบทความ "Median") แตกต่างจากบทความ Wikipedia อื่น ๆนี้อย่างไร 4. ) รหัสRของคุณยุ่งเหยิงโดยสิ้นเชิง - ดูคู่มือ R Style ของ Googleสำหรับบางคน แนวทางรูปแบบที่ดี
Steve S

คำตอบ:


4

α+α

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

เราต้องการ

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

P(α>α+)=1/2α+

หากคุณมีปัญหากับ R โปรดถามในคำถามอื่นเกี่ยวกับ Stack Overflow


ในทางทฤษฎีฉันคิดว่ามันถูกต้อง อย่างไรก็ตามฉันสับสนโดยผลการจำลอง R ซึ่งไม่ได้สำรองคำสั่งนี้ตามที่คาดไว้
Zhenglei

2
ฉันเป็นนักวิทยาศาสตร์ข้อมูล / นักฟิสิกส์ดังนั้นจึงไม่เคยเห็นแถวของอาร์ตามที่ฉันแนะนำในคำถามถ้ามันเป็นปัญหารหัสคุณควรถามมันในกองล้นและคุณจะได้รับความสนใจมากขึ้น อย่างไรก็ตามคำตอบข้างต้นนั้นถูกต้องเว้นแต่คุณต้องการอธิบายรายละเอียดเกี่ยวกับวิธีการประมาณค่ามัธยฐานโดยไม่มีอคติ สำหรับรายละเอียดเพิ่มเติมดูหน้า 172 ของ ET Jaynes หนังสือทฤษฎีความน่าจะเป็น ISBN 978-0-521-59271-0
Keith

ขอบคุณมากสำหรับคำตอบของคุณ มันไม่ใช่ปัญหาการเข้ารหัส ฉันแค่ต้องการจำลองสถานการณ์เพื่อแสดงให้เห็นว่าตัวประมาณค่าที่ไม่เอนเอียงจะลดค่าเบี่ยงเบนสัมบูรณ์ที่คาดไว้ ฉันไม่ได้รับคำตอบเพราะส่วนใหญ่ฉันสับสนเกี่ยวกับขั้นตอนการจำลอง ฉันนำไปใช้ใน R แต่การจำลองสามารถทำได้ใน Matlab หรือ Python หรือภาษาอื่น ๆ
Zhenglei

2
ฉันสงสัยว่าปัญหาคือคุณกำลังเผชิญกับการประมาณซึ่งทำงานเป็น N -> แต่คุณมี 10,000 และ 5 ซึ่งเป็นทั้งตัวเลขขนาดเล็ก บางทีคุณอาจถามคำถามสามข้อได้ดีกว่า ทำไมมันเป็นความจริงในทางทฤษฎีเมื่อใดที่ N มีขนาดใหญ่พอและถ้ามีบางอย่างผิดปกติกับรหัส R ของคุณ ฉันตอบคำถามแรกข้อที่สองเป็นการคำนวณเป็นส่วนใหญ่ แต่อาจมีกฎง่ายๆสำหรับกรณีนี้และกรณีที่สามอยู่ในสแต็คล้น
Keith

@ Keith ขออภัยสำหรับคณิตศาสตร์ที่อ่อนแอของฉัน แต่คุณสามารถแสดงรายละเอียดเพิ่มเติมเกี่ยวกับวิธีที่คุณได้รับความคาดหวัง?
AdamO
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.