พิจารณาการแจกแจงแบบเบต้าสำหรับชุดคะแนนที่กำหนดใน [0,1] หลังจากคำนวณค่าเฉลี่ยแล้ว:
มีวิธีให้ช่วงความมั่นใจรอบ ๆ ค่าเฉลี่ยนี้ไหม
พิจารณาการแจกแจงแบบเบต้าสำหรับชุดคะแนนที่กำหนดใน [0,1] หลังจากคำนวณค่าเฉลี่ยแล้ว:
มีวิธีให้ช่วงความมั่นใจรอบ ๆ ค่าเฉลี่ยนี้ไหม
คำตอบ:
ในขณะที่มีวิธีการเฉพาะสำหรับการคำนวณช่วงความมั่นใจสำหรับพารามิเตอร์ในการแจกแจงแบบเบต้าฉันจะอธิบายวิธีการทั่วไปบางอย่างที่สามารถใช้สำหรับ (เกือบ) การแจกแจงทุกประเภทรวมถึงการแจกแจงแบบเบต้าและนำไปใช้อย่างง่ายดายใน R .
เริ่มต้นด้วยการประมาณค่าความน่าจะเป็นสูงสุดพร้อมช่วงความเชื่อมั่นของโปรไฟล์ที่สอดคล้องกัน ก่อนอื่นเราต้องการข้อมูลตัวอย่าง:
# Sample size
n = 10
# Parameters of the beta distribution
alpha = 10
beta = 1.4
# Simulate some data
set.seed(1)
x = rbeta(n, alpha, beta)
# Note that the distribution is not symmetrical
curve(dbeta(x,alpha,beta))
ค่าเฉลี่ยจริง / เชิงทฤษฎีคือ
> alpha/(alpha+beta)
0.877193
ตอนนี้เราต้องสร้างฟังก์ชั่นสำหรับการคำนวณฟังก์ชันบันทึกความน่าจะเป็นลบสำหรับตัวอย่างจากการแจกแจงแบบเบต้าโดยมีค่าเฉลี่ยเป็นหนึ่งในพารามิเตอร์ เราสามารถใช้dbeta()
ฟังก์ชั่นได้ แต่เนื่องจากสิ่งนี้ไม่ได้ใช้การตั้งค่าที่เกี่ยวข้องกับค่าเฉลี่ยเราจึงต้องแสดงพารามิเตอร์ ( αและβ ) เป็นฟังก์ชันของค่าเฉลี่ยและพารามิเตอร์อื่น ๆ (เช่นส่วนเบี่ยงเบนมาตรฐาน):
# Negative log likelihood for the beta distribution
nloglikbeta = function(mu, sig) {
alpha = mu^2*(1-mu)/sig^2-mu
beta = alpha*(1/mu-1)
-sum(dbeta(x, alpha, beta, log=TRUE))
}
เพื่อหาค่าประมาณความน่าจะเป็นสูงสุดเราสามารถใช้mle()
ฟังก์ชันในstats4
ไลบรารี:
library(stats4)
est = mle(nloglikbeta, start=list(mu=mean(x), sig=sd(x)))
เพียงเพิกเฉยต่อคำเตือนตอนนี้ พวกเขากำลังที่เกิดจากขั้นตอนวิธีการเพิ่มประสิทธิภาพพยายามค่าที่ไม่ถูกต้องสำหรับพารามิเตอร์ให้ค่าลบสำหรับαและ / หรือβ (เพื่อหลีกเลี่ยงคำเตือนคุณสามารถเพิ่มlower
อาร์กิวเมนต์และเปลี่ยนการเพิ่มประสิทธิภาพที่method
ใช้)
ตอนนี้เรามีทั้งค่าประมาณและช่วงความมั่นใจสำหรับพารามิเตอร์สองตัวของเรา:
> est
Call:
mle(minuslogl = nloglikbeta, start = list(mu = mean(x), sig = sd(x)))
Coefficients:
mu sig
0.87304148 0.07129112
> confint(est)
Profiling...
2.5 % 97.5 %
mu 0.81336555 0.9120350
sig 0.04679421 0.1276783
โปรดทราบว่าตามที่คาดไว้ช่วงความเชื่อมั่นจะไม่สมมาตร:
par(mfrow=c(1,2))
plot(profile(est)) # Profile likelihood plot
(เส้นสีม่วงแดงด้านนอกที่สองแสดงช่วงความมั่นใจ 95%)
โปรดทราบว่าแม้จะมีการสังเกตเพียง 10 ครั้งเรายังได้รับการประมาณการที่ดีมาก (ช่วงความมั่นใจแคบ)
อีกทางเลือกหนึ่งmle()
คือคุณสามารถใช้fitdistr()
ฟังก์ชั่นจากMASS
แพคเกจ สิ่งนี้จะคำนวณตัวประมาณความน่าจะเป็นสูงสุดและมีความได้เปรียบที่คุณต้องการเพียงแค่ให้ความหนาแน่นไม่ใช่ความน่าจะเป็นบันทึกเชิงลบ แต่ไม่ได้ให้ความมั่นใจในความน่าจะเป็นของคุณ
ตัวเลือกที่ดีกว่าคือmle2()
(และฟังก์ชั่นที่เกี่ยวข้อง) จากbbmle
แพ็คเกจซึ่งค่อนข้างยืดหยุ่นและทรงพลังกว่าmle()
และให้แผนการที่ดีกว่าเล็กน้อย
อีกทางเลือกหนึ่งคือการใช้ bootstrap มันใช้งานง่ายมากใน R และคุณไม่จำเป็นต้องมีฟังก์ชั่นความหนาแน่น:
> library(simpleboot)
> x.boot = one.boot(x, mean, R=10^4)
> hist(x.boot) # Looks good
> boot.ci(x.boot, type="bca") # Confidence interval
BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
Based on 10000 bootstrap replicates
CALL :
boot.ci(boot.out = x.boot, type = "bca")
Intervals :
Level BCa
95% ( 0.8246, 0.9132 )
Calculations and Intervals on Original Scale
bootstrap มีข้อดีเพิ่มเติมที่ใช้งานได้แม้ว่าข้อมูลของคุณจะไม่ได้มาจากการแจกจ่ายเบต้า
สำหรับช่วงความเชื่อมั่นในค่าเฉลี่ยเราอย่าลืมช่วงความเชื่อมั่นแบบเชิงเส้นแบบเก่าที่ดีตามทฤษฎีข้อ จำกัด กลาง (และค่าt -distribution) ตราบใดที่เรามีตัวอย่างขนาดใหญ่ (ดังนั้น CLT จะใช้และการกระจายของค่าเฉลี่ยตัวอย่างนั้นประมาณปกติ) หรือค่าขนาดใหญ่ของทั้งαและβ (เพื่อให้การกระจายตัวของเบต้านั้นปกติประมาณ) มันทำงานได้ดี ที่นี่เราไม่มี แต่ช่วงความมั่นใจยังไม่เลว:
> t.test(x)$conf.int
[1] 0.8190565 0.9268349
สำหรับค่าที่น้อยมากของn (และไม่มากเกินไปค่าของพารามิเตอร์ทั้งสอง) ช่วงความเชื่อมั่นของ asymptotic ทำงานได้ดีมาก
ตรวจสอบการถดถอยเบต้า คำแนะนำที่ดีเกี่ยวกับวิธีการใช้Rสามารถพบได้ที่นี่:
http://cran.r-project.org/web/packages/betareg/vignettes/betareg.pdf
อีกวิธีที่ง่ายมากในการสร้างช่วงความมั่นใจคือการใช้วิธีเพิ่มประสิทธิภาพแบบไม่ใช่พารามิเตอร์ Wikipedia มีข้อมูลที่ดี:
http://en.wikipedia.org/wiki/Bootstrapping_%28statistics%29
ยังวิดีโอที่ดีที่นี่: