สามารถคำนวณค่าเบี่ยงเบนมาตรฐานสำหรับค่าฮาร์มอนิกได้หรือไม่? ฉันเข้าใจว่าค่าเบี่ยงเบนมาตรฐานสามารถคำนวณได้สำหรับค่าเฉลี่ยเลขคณิต แต่ถ้าคุณมีค่าเฉลี่ยฮาร์มอนิกคุณจะคำนวณค่าเบี่ยงเบนมาตรฐานหรือ CV ได้อย่างไร
สามารถคำนวณค่าเบี่ยงเบนมาตรฐานสำหรับค่าฮาร์มอนิกได้หรือไม่? ฉันเข้าใจว่าค่าเบี่ยงเบนมาตรฐานสามารถคำนวณได้สำหรับค่าเฉลี่ยเลขคณิต แต่ถ้าคุณมีค่าเฉลี่ยฮาร์มอนิกคุณจะคำนวณค่าเบี่ยงเบนมาตรฐานหรือ CV ได้อย่างไร
คำตอบ:
ค่าเฉลี่ยฮาร์โมนิของตัวแปรสุ่มถูกกำหนดให้เป็น
การสละช่วงเวลาของเศษส่วนเป็นเรื่องยุ่งดังนั้นฉันอยากจะทำงานกับแทน ตอนนี้
ทฤษฎีบทขีด จำกัด กลางของเราใช้เราได้ทันที
ถ้าของหลักสูตรและจะ IID เนื่องจากการทำงานที่เรียบง่ายเรามีค่าเฉลี่ยเลขคณิตของตัวแปร1}
ตอนนี้ใช้วิธีการเดลต้าสำหรับฟังก์ชั่นเราเข้าใจแล้ว
ผลลัพธ์นี้เป็น asymptotic แต่สำหรับแอปพลิเคชันแบบง่ายอาจพอเพียง
อัปเดตเมื่อ @whuber ชี้ให้เห็นอย่างถูกต้องแอปพลิเคชันแบบง่ายคือการเรียกชื่อผิด ทฤษฎีขีด จำกัด กลางเก็บเฉพาะเมื่อมีอยู่ซึ่งเป็นข้อสมมติฐานที่ค่อนข้างเข้มงวด
อัปเดต 2หากคุณมีตัวอย่างจากนั้นในการคำนวณค่าเบี่ยงเบนมาตรฐานเพียงแค่เสียบช่วงเวลาตัวอย่างลงในสูตร ดังนั้นสำหรับตัวอย่างการประมาณค่าเฉลี่ยฮาร์มอนิกคือ
ช่วงเวลาตัวอย่างและตามลำดับคือ:
นี่หมายถึงการแลกเปลี่ยนซึ่งกันและกัน
ในที่สุดสูตรโดยประมาณสำหรับส่วนเบี่ยงเบนมาตรฐานของคือ
ฉันวิ่งบางจำลอง Monte Carlo-สำหรับตัวแปรสุ่มกระจายอย่างสม่ำเสมอในช่วง[2,3]นี่คือรหัส:
hm <- function(x)1/mean(1/x)
sdhm <- function(x)sqrt((mean(1/x))^(-4)*var(1/x)/length(x))
n<-1000
nn <- c(10,30,50,100,500,1000,5000,10000)
N<-1000
mc<-foreach(n=nn,.combine=rbind) %do% {
rr <- matrix(runif(n*N,min=2,max=3),nrow=N)
c(n,mean(apply(rr,1,sdhm)),sd(apply(rr,1,sdhm)),sd(apply(rr,1,hm)))
}
colnames(mc) <- c("n","DeltaSD","sdDeltaSD","trueSD")
> mc
n DeltaSD sdDeltaSD trueSD
result.1 10 0.089879211 1.528423e-02 0.091677622
result.2 30 0.052870477 4.629262e-03 0.051738941
result.3 50 0.040915607 2.705137e-03 0.040257673
result.4 100 0.029017031 1.407511e-03 0.028284458
result.5 500 0.012959582 2.750145e-04 0.013200580
result.6 1000 0.009139193 1.357630e-04 0.009115592
result.7 5000 0.004094048 2.685633e-05 0.004070593
result.8 10000 0.002894254 1.339128e-05 0.002964259
ฉันจำลองN
ตัวอย่างn
ขนาดตัวอย่าง สำหรับตัวอย่างแต่ละn
ขนาดฉันคำนวณค่าประมาณของการประเมินมาตรฐาน (ฟังก์ชันsdhm
) จากนั้นฉันจะเปรียบเทียบค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐานของค่าประมาณเหล่านี้กับค่าเบี่ยงเบนมาตรฐานของค่าเฉลี่ยฮาร์มอนิกที่ประมาณไว้สำหรับแต่ละตัวอย่างซึ่งควรจะเป็นค่าเบี่ยงเบนมาตรฐานจริงของค่าเฉลี่ยฮาร์มอนิก
อย่างที่คุณเห็นผลลัพธ์ค่อนข้างดีแม้สำหรับขนาดตัวอย่างปานกลาง แน่นอนว่าการกระจายเครื่องแบบเป็นพฤติกรรมที่ดีมากดังนั้นจึงไม่น่าแปลกใจที่ผลลัพธ์จะออกมาดี ฉันจะปล่อยให้คนอื่นตรวจสอบพฤติกรรมของการแจกแจงอื่น ๆ รหัสนั้นง่ายมากที่จะปรับ
หมายเหตุ:ในรุ่นก่อนหน้าของคำตอบนี้มีข้อผิดพลาดในผลลัพธ์ของวิธีการเดลต้าความแปรปรวนที่ไม่ถูกต้อง
คำตอบของฉันสำหรับคำถามที่เกี่ยวข้องชี้ให้เห็นว่าค่าเฉลี่ยฮาร์มอนิกของชุดข้อมูลบวกเป็นการประมาณน้ำหนักกำลังสองน้อยที่สุด (WLS) (มีน้ำหนัก ) คุณสามารถคำนวณข้อผิดพลาดมาตรฐานโดยใช้วิธี WLS สิ่งนี้มีข้อได้เปรียบบางประการรวมถึงความเรียบง่ายทั่วไปและการตีความรวมถึงการผลิตโดยอัตโนมัติโดยซอฟต์แวร์ทางสถิติใด ๆ ที่ช่วยให้น้ำหนักในการคำนวณการถดถอย
ข้อเสียเปรียบหลักคือการคำนวณไม่ได้สร้างช่วงความเชื่อมั่นที่ดีสำหรับการแจกแจงพื้นฐานที่เบ้อย่างมาก นั่นน่าจะเป็นปัญหากับวิธีการทั่วไป: ค่าฮาร์มอนิกมีความอ่อนไหวต่อการมีอยู่ของค่าเพียงเล็กน้อยเพียงเล็กน้อยในชุดข้อมูล
เพื่อแสดงให้เห็นว่านี่คือการแจกแจงเชิงประจักษ์จากตัวอย่างที่สร้างขึ้นอย่างอิสระขนาดจากการแจกแจงแกมม่า (5) (ซึ่งบิดเบือนไปเล็กน้อย) เส้นสีน้ำเงินแสดงค่าเฉลี่ยฮาร์มอนิกที่แท้จริง (เท่ากับ ) ในขณะที่เส้นประสีแดงแสดงการประมาณกำลังสองน้อยที่สุด แถบสีเทาแนวตั้งรอบ ๆ เส้นสีน้ำเงินนั้นเป็นช่วงความเชื่อมั่นสองด้านประมาณ 95% สำหรับค่าเฉลี่ยฮาร์มอนิก ในกรณีนี้ในตัวอย่างทั้งหมดตัวอย่าง CI ครอบคลุมค่าเฉลี่ยฮาร์มอนิกที่แท้จริง การทำซ้ำของการจำลองนี้ (ด้วยเมล็ดสุ่ม) แนะนำการครอบคลุมอยู่ใกล้กับอัตราที่ตั้งใจ 95% แม้สำหรับชุดข้อมูลขนาดเล็กเหล่านี้
นี่คือR
รหัสสำหรับการจำลองและตัวเลข
k <- 5 # Gamma parameter
n <- 12 # Sample size
hm <- k-1 # True harmonic mean
set.seed(17)
t.crit <- -qt(0.05/2, n-1)
par(mfrow=c(4, 5))
for(i in 1:20) {
#
# Generate a random sample.
#
x <- rgamma(n, k)
#
# Estimate the harmonic mean.
#
fit <- lm(x ~ 1, weights=1/x)
beta <- coef(summary(fit))[1, ]
message("Harmonic mean estimate is ", signif(beta["Estimate"], 3),
" +/- ", signif(beta["Std. Error"], 3))
#
# Plot the results.
#
covers <- abs(beta["Estimate"] - hm) <= t.crit*beta["Std. Error"]
plot(ecdf(x), main="Empirical CDF", sub=ifelse(covers, "", "***"))
rect(beta["Estimate"] - t.crit*beta["Std. Error"], 0,
beta["Estimate"] + t.crit*beta["Std. Error"], 1.25,
border=NA, col=gray(0.5, alpha=0.10))
abline(v = hm, col="Blue", lwd=2)
abline(v = beta["Estimate"], col="Red", lty=3, lwd=2)
}
นี่คือตัวอย่างสำหรับ Exponential r.v's
ค่าเฉลี่ยฮาร์มอนิกสำหรับจุดข้อมูลถูกกำหนดเป็น
สมมติว่าคุณมีตัวอย่าง IID ของตัวแปรสุ่มชี้แจง แลมบ์ดา) ผลรวมของตัวแปรชี้แจงดังต่อไปนี้แจกแจงแกมมา
ที่แลมบ์ดา} เราก็รู้ว่า
ดังนั้นการกระจายของจึง
ความแปรปรวน (และส่วนเบี่ยงเบนมาตรฐาน) ของ RV นี้เป็นที่รู้จักกันดีดูตัวอย่างเช่นที่นี่
มีความกังวลว่า mpiktas ของ CLT ต้องมีความแปรปรวนทางทิศคือ X มันเป็นความจริงที่มีหางที่บ้าเมื่อมีความหนาแน่นเป็นบวกรอบศูนย์ อย่างไรก็ตามในหลาย ๆ โปรแกรมโดยใช้ค่าเฉลี่ยฮาร์โมนิ Xที่นี่ถูกล้อมรอบด้วยให้ทุกช่วงเวลาที่คุณต้องการ!
สิ่งที่ฉันอยากจะแนะนำคือใช้สูตรต่อไปนี้แทนค่าเบี่ยงเบนมาตรฐาน:
ที่{x_i}} สิ่งที่ดีเกี่ยวกับสูตรนี้คือมันถูกย่อให้เล็กที่สุดเมื่อและมีหน่วยเดียวกับค่าเบี่ยงเบนมาตรฐาน (ซึ่งคือ หน่วยเดียวกับที่มี)
นี่คือความคล้ายคลึงกับส่วนเบี่ยงเบนมาตรฐานซึ่งเป็นค่าที่ใช้เวลาเมื่อมันลดลง . มันจะลดลงเมื่อเป็นค่าเฉลี่ย:x_i