สามารถคำนวณค่าเบี่ยงเบนมาตรฐานสำหรับค่าเฉลี่ยฮาร์มอนิกได้หรือไม่?


12

สามารถคำนวณค่าเบี่ยงเบนมาตรฐานสำหรับค่าฮาร์มอนิกได้หรือไม่? ฉันเข้าใจว่าค่าเบี่ยงเบนมาตรฐานสามารถคำนวณได้สำหรับค่าเฉลี่ยเลขคณิต แต่ถ้าคุณมีค่าเฉลี่ยฮาร์มอนิกคุณจะคำนวณค่าเบี่ยงเบนมาตรฐานหรือ CV ได้อย่างไร

คำตอบ:


13

ค่าเฉลี่ยฮาร์โมนิของตัวแปรสุ่มถูกกำหนดให้เป็นHX1,...,Xn

H=11ni=1n1Xi

การสละช่วงเวลาของเศษส่วนเป็นเรื่องยุ่งดังนั้นฉันอยากจะทำงานกับแทน ตอนนี้1/H

1H=1ni=1n1Xi
{x_i}

ทฤษฎีบทขีด จำกัด กลางของเราใช้เราได้ทันที

n(H1EX11)N(0,VarX11)

ถ้าของหลักสูตรและจะ IID เนื่องจากการทำงานที่เรียบง่ายเรามีค่าเฉลี่ยเลขคณิตของตัวแปร1}VarX11<XiYi=Xi1

ตอนนี้ใช้วิธีการเดลต้าสำหรับฟังก์ชั่นเราเข้าใจแล้วg(x)=x1

n(H(EX11)1)N(0,VarX11(EX11)4)

ผลลัพธ์นี้เป็น asymptotic แต่สำหรับแอปพลิเคชันแบบง่ายอาจพอเพียง

อัปเดตเมื่อ @whuber ชี้ให้เห็นอย่างถูกต้องแอปพลิเคชันแบบง่ายคือการเรียกชื่อผิด ทฤษฎีขีด จำกัด กลางเก็บเฉพาะเมื่อมีอยู่ซึ่งเป็นข้อสมมติฐานที่ค่อนข้างเข้มงวดVarX11

อัปเดต 2หากคุณมีตัวอย่างจากนั้นในการคำนวณค่าเบี่ยงเบนมาตรฐานเพียงแค่เสียบช่วงเวลาตัวอย่างลงในสูตร ดังนั้นสำหรับตัวอย่างการประมาณค่าเฉลี่ยฮาร์มอนิกคือX1,...,Xn

H^=11ni=1n1Xi

ช่วงเวลาตัวอย่างและตามลำดับคือ:EX11Var(X11)

μ^R=1ni=1n1Xiσ^R2=1ni=1n(1XiμR)2

นี่หมายถึงการแลกเปลี่ยนซึ่งกันและกันR

ในที่สุดสูตรโดยประมาณสำหรับส่วนเบี่ยงเบนมาตรฐานของคือH^

sd(H^)=σ^R2nμ^R4

ฉันวิ่งบางจำลอง Monte Carlo-สำหรับตัวแปรสุ่มกระจายอย่างสม่ำเสมอในช่วง[2,3]นี่คือรหัส:[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) จากนั้นฉันจะเปรียบเทียบค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐานของค่าประมาณเหล่านี้กับค่าเบี่ยงเบนมาตรฐานของค่าเฉลี่ยฮาร์มอนิกที่ประมาณไว้สำหรับแต่ละตัวอย่างซึ่งควรจะเป็นค่าเบี่ยงเบนมาตรฐานจริงของค่าเฉลี่ยฮาร์มอนิก

อย่างที่คุณเห็นผลลัพธ์ค่อนข้างดีแม้สำหรับขนาดตัวอย่างปานกลาง แน่นอนว่าการกระจายเครื่องแบบเป็นพฤติกรรมที่ดีมากดังนั้นจึงไม่น่าแปลกใจที่ผลลัพธ์จะออกมาดี ฉันจะปล่อยให้คนอื่นตรวจสอบพฤติกรรมของการแจกแจงอื่น ๆ รหัสนั้นง่ายมากที่จะปรับ

หมายเหตุ:ในรุ่นก่อนหน้าของคำตอบนี้มีข้อผิดพลาดในผลลัพธ์ของวิธีการเดลต้าความแปรปรวนที่ไม่ถูกต้อง


2
@mpiktas นี่เป็นการเริ่มต้นที่ดีและให้คำแนะนำเมื่อ CV ต่ำ แต่แม้ในสถานการณ์ที่ใช้งานง่าย แต่ก็ไม่ชัดเจนว่า CLT จะนำไปใช้ ฉันคาดหวังว่าการแลกเปลี่ยนของตัวแปรหลายตัวจะไม่ จำกัด ช่วงวินาทีหรือแม้แต่ครั้งแรกเมื่อมีความน่าจะเป็นที่ประเมินค่าของพวกเขาอาจจะใกล้เคียงกับศูนย์ ฉันยังคาดหวังว่าวิธีการเดลต้าจะไม่ใช้เนื่องจากอนุพันธ์ที่มีขนาดใหญ่ของส่วนกลับซึ่งใกล้ศูนย์ ดังนั้นจึงสามารถช่วยระบุลักษณะ "แอปพลิเคชันแบบง่าย" ได้อย่างแม่นยำมากขึ้นซึ่งวิธีการของคุณอาจทำงานได้ BTW "D" คืออะไร?
whuber

@whuber, D สำหรับแปรปรวน 2 โดยแอปพลิเคชั่นที่เรียบง่ายฉันหมายถึงแอพที่มีความแปรปรวนและค่าเฉลี่ยซึ่งกันและกัน เมื่อคุณพูดถึงตัวแปรสุ่มที่มีความน่าจะเป็นที่ประเมินได้ว่าค่าของพวกเขาอาจใกล้เคียงกับศูนย์ซึ่งกันและกันอาจไม่มีค่าเฉลี่ย แต่แล้วคำตอบสำหรับคำถามเดิมคือไม่ ฉันสันนิษฐานว่า OP ถามว่าเป็นไปได้หรือไม่ที่จะคำนวณค่าเบี่ยงเบนมาตรฐานเมื่อมีอยู่ มันไม่ชัดเจนสำหรับตัวแปรสุ่มจำนวนมาก DX=E(XEX)2
mpiktas

@whuber, BTW จากความอยากรู้อยากเห็นเป็นสัญกรณ์มาตรฐานสำหรับฉัน แต่อาจมีคนบอกว่าฉันมาจากโรงเรียนความน่าจะเป็นของรัสเซีย มันไม่ธรรมดาใน "ทุนนิยมตะวันตก" ใช่ไหม? :)DX
mpiktas

@mpiktas ฉันไม่เคยเห็นสัญลักษณ์นี้สำหรับความแปรปรวน ปฏิกิริยาแรกของฉันคือเป็นตัวดำเนินการต่างกัน! สัญลักษณ์มาตรฐานความจำเช่น[X] DVar[X]
whuber

1
บทความ "Inverted Distributions" โดย EL Lehmann และ Juliet Popper Shaffer เป็นบทความที่น่าสนใจเกี่ยวกับการแจกแจงของตัวแปรสุ่มกลับหัว
emakalic

2

คำตอบของฉันสำหรับคำถามที่เกี่ยวข้องชี้ให้เห็นว่าค่าเฉลี่ยฮาร์มอนิกของชุดข้อมูลบวกเป็นการประมาณน้ำหนักกำลังสองน้อยที่สุด (WLS) (มีน้ำหนัก ) คุณสามารถคำนวณข้อผิดพลาดมาตรฐานโดยใช้วิธี WLS สิ่งนี้มีข้อได้เปรียบบางประการรวมถึงความเรียบง่ายทั่วไปและการตีความรวมถึงการผลิตโดยอัตโนมัติโดยซอฟต์แวร์ทางสถิติใด ๆ ที่ช่วยให้น้ำหนักในการคำนวณการถดถอยxi1/xi

ข้อเสียเปรียบหลักคือการคำนวณไม่ได้สร้างช่วงความเชื่อมั่นที่ดีสำหรับการแจกแจงพื้นฐานที่เบ้อย่างมาก นั่นน่าจะเป็นปัญหากับวิธีการทั่วไป: ค่าฮาร์มอนิกมีความอ่อนไหวต่อการมีอยู่ของค่าเพียงเล็กน้อยเพียงเล็กน้อยในชุดข้อมูล

เพื่อแสดงให้เห็นว่านี่คือการแจกแจงเชิงประจักษ์จากตัวอย่างที่สร้างขึ้นอย่างอิสระขนาดจากการแจกแจงแกมม่า (5) (ซึ่งบิดเบือนไปเล็กน้อย) เส้นสีน้ำเงินแสดงค่าเฉลี่ยฮาร์มอนิกที่แท้จริง (เท่ากับ ) ในขณะที่เส้นประสีแดงแสดงการประมาณกำลังสองน้อยที่สุด แถบสีเทาแนวตั้งรอบ ๆ เส้นสีน้ำเงินนั้นเป็นช่วงความเชื่อมั่นสองด้านประมาณ 95% สำหรับค่าเฉลี่ยฮาร์มอนิก ในกรณีนี้ในตัวอย่างทั้งหมดตัวอย่าง CI ครอบคลุมค่าเฉลี่ยฮาร์มอนิกที่แท้จริง การทำซ้ำของการจำลองนี้ (ด้วยเมล็ดสุ่ม) แนะนำการครอบคลุมอยู่ใกล้กับอัตราที่ตั้งใจ 95% แม้สำหรับชุดข้อมูลขนาดเล็กเหล่านี้20n=12420

ตัวเลข

นี่คือ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)
}

1

นี่คือตัวอย่างสำหรับ Exponential r.v's

ค่าเฉลี่ยฮาร์มอนิกสำหรับจุดข้อมูลถูกกำหนดเป็นn

S=11ni=1nXi

สมมติว่าคุณมีตัวอย่าง IID ของตัวแปรสุ่มชี้แจง แลมบ์ดา) ผลรวมของตัวแปรชี้แจงดังต่อไปนี้แจกแจงแกมมาnXiExp(λ)n

i=1nXiGamma(n,θ)

ที่แลมบ์ดา} เราก็รู้ว่าθ=1λ

1nGamma(n,θ)Gamma(n,θn)

ดังนั้นการกระจายของจึงS

SInvGamma(n,nθ)

ความแปรปรวน (และส่วนเบี่ยงเบนมาตรฐาน) ของ RV นี้เป็นที่รู้จักกันดีดูตัวอย่างเช่นที่นี่


3
คำจำกัดความของคุณสำหรับค่าเฉลี่ยฮาร์มอนิกไม่เห็นด้วยกับวิกิพีเดีย
mpiktas

การใช้เลขชี้กำลังเป็นวิธีการที่ดีในการทำความเข้าใจปัญหา
whuber

1
ความหวังทั้งหมดจะไม่สูญหายไปทั้งหมด ถ้า Xi ~ Exp (\ lambda) ดังนั้น Xi ~ Gamma (1, \ lambda) ดังนั้น 1 / Xi ~ InvGamma (1, 1 / \ lambda) จากนั้นใช้ "V. Witkovsky (2001) คำนวณการกระจายของการรวมกันเชิงเส้นของตัวแปรแกมมากลับ, Kybernetika 37 (1), 79-90" และดูว่าคุณได้รับไกลแค่ไหน!
ละคร

0

มีความกังวลว่า mpiktas ของ CLT ต้องมีความแปรปรวนทางทิศคือ X มันเป็นความจริงที่มีหางที่บ้าเมื่อมีความหนาแน่นเป็นบวกรอบศูนย์ อย่างไรก็ตามในหลาย ๆ โปรแกรมโดยใช้ค่าเฉลี่ยฮาร์โมนิ Xที่นี่ถูกล้อมรอบด้วยให้ทุกช่วงเวลาที่คุณต้องการ!1/X1/XXX11/X1


0

สิ่งที่ฉันอยากจะแนะนำคือใช้สูตรต่อไปนี้แทนค่าเบี่ยงเบนมาตรฐาน:

σ=Ni=1N(1x^1xi)2,

ที่{x_i}} สิ่งที่ดีเกี่ยวกับสูตรนี้คือมันถูกย่อให้เล็กที่สุดเมื่อและมีหน่วยเดียวกับค่าเบี่ยงเบนมาตรฐาน (ซึ่งคือ หน่วยเดียวกับที่มี)x^=N1xix^=N1xix

นี่คือความคล้ายคลึงกับส่วนเบี่ยงเบนมาตรฐานซึ่งเป็นค่าที่ใช้เวลาเมื่อมันลดลง . มันจะลดลงเมื่อเป็นค่าเฉลี่ย:x_i1N(x^xi)2x^x^x^=μ=1Nxi

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